SimGrid
3.10
Versatile Simulation of Distributed Systems
|
We start to put TAGS in simgrid source code for having tutorials to see where is the important parts ans steps to create:
Search for expression "TUTORIAL: New API".
user@caraja:~/workspace/simgrid/src$ cg "TUTORIAL: New API" 0 msg/msg_new_api.c 15 /* TUTORIAL: New API*/ 1 simix/smx_smurf.c 582 /* TUTORIAL: New API*/ 2 simix/smx_smurf.c 616 /* TUTORIAL: New API*/ 3 simix/smx_smurf_private.h 102 /* TUTORIAL: New API*/ 4 simix/smx_smurf_private.h 629 /* TUTORIAL: New API*/ 5 simix/smx_private.h 28 /* TUTORIAL: New API*/ 6 simix/smx_private.h 101 /* TUTORIAL: New API*/ 7 simix/smx_private.h 182 /* TUTORIAL: New API*/ 8 simix/smx_global.c 454 /* TUTORIAL: New API*/ 9 simix/smx_new_api.c 8 /* TUTORIAL: New API*/ 10 simix/smx_user.c 1684 /* TUTORIAL: New API*/ 11 simix/smx_new_api_private.h 8 /* TUTORIAL: New API*/ 12 simix/smx_process.c 338 /* TUTORIAL: New API*/
Search for expression "TUTORIAL: New model".
user@caraja:~/workspace/simgrid/src$ cg "TUTORIAL: New model" 0 surf/new_model_private.h 2 /* TUTORIAL: New model 1 surf/surf.c 213 /* TUTORIAL: New model*/ 2 surf/surf_config.c 380 /* TUTORIAL: New model*/ 3 surf/surf_config.c 746 /* TUTORIAL: New model*/ 4 surf/new_model.c 8 /* TUTORIAL: New model*/ 5 include/surf/surf.h 157 /* TUTORIAL: New model*/ 6 include/surf/surf.h 345 /* TUTORIAL: New model*/ 7 include/surf/surf.h 661 /* TUTORIAL: New model*/
To add a simcall called <name>
with three arguments arg1
, arg2
and arg3
of type targ1
, targ2
, targ3
respectively and which return a value of type tret
you must first define the simcall function in the the include/simgrid/simix.h
and make it call the automatically generated BODY
function which will do all the bad stuff.
Then you must add an new line in the list SIMCALL_LIST1
of simcall actions in src/simix/smx_smurf_private.h
. The arguments of the ACTION
are:
<name>
of the simcall,WITH_ANSWER
/WITHOUT_ANSWER
)The return type and the arguments must be define by using TSPEC(name, type)
, or one of the predefined type (e.g., TSTRING(n)
, TINT(n)
, TVOID(n)
, TPTR(n)
, …). You must get something like this:
Finaly you have to define the kernel code in a SIMIX_pre_<name>
in the corresponding src/simix/smx_*.c file:
Search for expression "TUTORIAL: New TAG".
user@caraja:~/workspace/simgrid/src$ cg "TUTORIAL: New TAG" 0 surf/sg_platf.c 43 /* TUTORIAL: New TAG*/ 1 surf/sg_platf.c 89 /* TUTORIAL: New TAG*/ 2 surf/sg_platf.c 124 /* TUTORIAL: New TAG*/ 3 surf/sg_platf.c 337 /* TUTORIAL: New TAG*/ 4 surf/surfxml_parse.c 769 /* TUTORIAL: New TAG*/ 5 surf/surf_private.h 205 /* TUTORIAL: New TAG*/ 6 surf/surfxml_parseplatf.c 64 /* TUTORIAL: New TAG*/ 7 surf/surfxml_parseplatf.c 85 /* TUTORIAL: New TAG*/ 8 include/simgrid/platf_interface.h 42 /* TUTORIAL: New TAG*/