1 /** \addtogroup GRAS_API
3 \section GRAS_funct GRAS offers the following functionnalities
4 - <b>\ref GRAS_comm</b>: Exchanging messages between peers
5 - \ref GRAS_dd : any data which may transit on the network must be
6 described beforehand so that GRAS can handle the platform
7 heterogeneity and convert them if needed.
8 - \ref GRAS_sock : this is how to open a communication channel to
9 other processes, and retrive information about them.
10 - \ref GRAS_msg : communications are message oriented. You have to
11 describe all possible messages and their payload beforehand, and
12 can then attach callbacks to the arrival of a given kind of message.
13 - \ref GRAS_timer : this is how to program repetitive and delayed
14 tasks, not unlike cron(8) and at(1). This cannot be used to timeout
15 a function (like setitimer(2) or signal(2) games could do).
16 - <b>\ref GRAS_run</b>: Running both on top of the simulator and on
17 top of real platforms, and portability support.
18 - \ref GRAS_virtu : You naturally don't want to call the
19 gettimeofday(2) function in simulation mode since it would give
20 you the time on the host running the simulation, not the time in
21 the simulated world (you are belonging to).\n
22 This a system call virtualization layer, which also acts as a
24 - \ref GRAS_globals : The use of globals is forbidden since the
25 "processes" are threads in simulation mode. \n
26 This is how to let GRAS handle your globals properly.
27 - \ref GRAS_emul : Support to emulate code excution (ie, reporting
28 execution time into the simulator and having code sections specific
29 to simulation or to real mode).
33 /** @defgroup GRAS_comm Communication facilities */
34 /** @defgroup GRAS_run Virtualization */
37 #####################################################################
38 /** @addtogroup GRAS_comm
40 Here are the communication facilities. GRAS allows you to exchange
41 <i>messages</i> on <i>sockets</i> (which can be seen as pipes between
42 processes). On reception, messages start <i>callbacks</i> (that's the
43 default communication mode, not the only one). All messages of a given
44 type convey the same kind of data, and you have to describe it
47 Timers are also seen as a mean of communication (with yourself). It
48 allows you to run a repetitive task ("do this every N second until I tell
49 you to stop"), or to deffer a treatment ("do this in 3 sec").
52 /** @defgroup GRAS_dd Data description */
53 /** @defgroup GRAS_sock Sockets */
54 /** @defgroup GRAS_msg Messages */
55 /** @defgroup GRAS_timer Timers */
58 #####################################################################
59 /** @addtogroup GRAS_run
61 Virtualization facilities allow your code to run both on top of the simulator or in real setting.
65 /** @defgroup GRAS_globals Globals */
66 /** @defgroup GRAS_emul Emulation support */
67 /** @defgroup GRAS_virtu Syscalls */