|
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*/