X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b3f448e0ccc0e5e0195bfba380b1ba3a5c5b10b6..3507aa0f86b4306e340c024cf251349861e53a7a:/doc/gtut-tour-05-globals.doc diff --git a/doc/gtut-tour-05-globals.doc b/doc/gtut-tour-05-globals.doc index b0bb570d82..11ddb12138 100644 --- a/doc/gtut-tour-05-globals.doc +++ b/doc/gtut-tour-05-globals.doc @@ -42,6 +42,11 @@ should pass it a pointer to your data you want to retrieve afterward. \skip userdata_new \until userdata_new +BEWARE, the gras_userdata_new expects the pointed type, not the +pointer type. As you can see, in our example, you should pass +server_data_t to the macro, even if the global variable is later +defined as being of type server_data_t*. + Once you declared a global that way, retriving this (for example in a callback) is really easy: \dontinclude 05-globals.c @@ -59,6 +64,13 @@ loop: \skip while \until } +Please note that in our example, only one process creates a global +structure. But this is naturally completely ok to have several +processes creating their globals this way. Each of these globals will +be separated, so process A cannot access globals defined by process B. +Maybe this implies that the name "globals" is a bit misleading. It +should be "process state" or something similar. + \section GRAS_tut_tour_callback_pitfall Common pitfall of globals There is an error that I do myself every other day using globals in GRAS. @@ -77,6 +89,12 @@ embarass GRAS since it does not have its internal buffer initialized yet, and cannot store your data anywhere. That is why doing so triggers an error at run time. +Also, as noted above, the gras_userdata_new expects the pointed type, +not the pointer type. As you can see, in our example, you should pass +server_data_t to the macro, even if the global variable is later +defined as being of type server_data_t*. + + \section GRAS_tut_tour_callback_recap Recaping everything together The whole program now reads: