A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a function SIMIX_process_get_runnable() for context factories
[simgrid.git]
/
src
/
simix
/
smx_process.c
diff --git
a/src/simix/smx_process.c
b/src/simix/smx_process.c
index
f02b306
..
dcdadd2
100644
(file)
--- a/
src/simix/smx_process.c
+++ b/
src/simix/smx_process.c
@@
-186,6
+186,7
@@
void SIMIX_process_create(smx_process_t *process,
(*process)->smx_host = host;
(*process)->data = data;
(*process)->comms = xbt_fifo_new();
(*process)->smx_host = host;
(*process)->data = data;
(*process)->comms = xbt_fifo_new();
+ (*process)->request.issuer = *process;
XBT_VERB("Create context %s", (*process)->name);
(*process)->context = SIMIX_context_new(code, argc, argv,
XBT_VERB("Create context %s", (*process)->name);
(*process)->context = SIMIX_context_new(code, argc, argv,
@@
-413,18
+414,21
@@
int SIMIX_process_count(void)
return xbt_swag_size(simix_global->process_list);
}
return xbt_swag_size(simix_global->process_list);
}
-void* SIMIX_process_self_get_data(
void
)
+void* SIMIX_process_self_get_data(
smx_process_t self
)
{
{
- smx_process_t me = SIMIX_process_self();
- if (!me) {
+ xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+
+ if (!self) {
return NULL;
}
return NULL;
}
- return SIMIX_process_get_data(
me
);
+ return SIMIX_process_get_data(
self
);
}
}
-void SIMIX_process_self_set_data(void *data)
+void SIMIX_process_self_set_data(
smx_process_t self,
void *data)
{
{
- SIMIX_process_set_data(SIMIX_process_self(), data);
+ xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+
+ SIMIX_process_set_data(self, data);
}
void* SIMIX_process_get_data(smx_process_t process)
}
void* SIMIX_process_get_data(smx_process_t process)
@@
-568,13
+572,15
@@
void SIMIX_process_sleep_resume(smx_action_t action)
}
/**
}
/**
- * Calling this function makes the process to yield.
- * Only the processes can call this function, giving back the control to maestro
+ * \brief Calling this function makes the process to yield.
+ *
+ * Only the current process can call this function, giving back the control to
+ * maestro.
+ *
+ * \param self the current process
*/
*/
-void SIMIX_process_yield(
void
)
+void SIMIX_process_yield(
smx_process_t self
)
{
{
- smx_process_t self = SIMIX_process_self();
-
XBT_DEBUG("Yield process '%s'", self->name);
/* Go into sleep and return control to maestro */
XBT_DEBUG("Yield process '%s'", self->name);
/* Go into sleep and return control to maestro */
@@
-620,3
+626,11
@@
smx_context_t SIMIX_process_get_context(smx_process_t p) {
void SIMIX_process_set_context(smx_process_t p,smx_context_t c) {
p->context = c;
}
void SIMIX_process_set_context(smx_process_t p,smx_context_t c) {
p->context = c;
}
+
+/**
+ * \brief Returns the list of processes to run.
+ */
+XBT_INLINE xbt_dynar_t SIMIX_process_get_runnable(void)
+{
+ return simix_global->process_to_run;
+}