Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make a proper gras/ directory in the include one, and stop fooling with recursive...
[simgrid.git] / include / gras / process.h
1 /* $Id$                     */
2
3 /* gras/core.h - Unsorted part of the GRAS public interface                 */
4
5 /* Authors: Martin Quinson                                                  */
6 /* Copyright (C) 2003 the OURAGAN project.                                  */
7
8 /* This program is free software; you can redistribute it and/or modify it
9    under the terms of the license (GNU LGPL) which comes with this package. */
10
11 #ifndef GRAS_PROCESS_H
12 #define GRAS_PROCESS_H
13
14 #include <stddef.h>    /* offsetof() */
15 #include <sys/types.h>  /* size_t */
16 #include <stdarg.h>
17
18
19 /*! C++ users need love */
20 #ifndef BEGIN_DECL
21 # ifdef __cplusplus
22 #  define BEGIN_DECL extern "C" {
23 # else
24 #  define BEGIN_DECL 
25 # endif
26 #endif
27
28 /*! C++ users need love */
29 #ifndef END_DECL
30 # ifdef __cplusplus
31 #  define END_DECL }
32 # else
33 #  define END_DECL 
34 # endif
35 #endif
36 /* End of cruft for C++ */
37
38 BEGIN_DECL
39
40 /* **************************************************************************
41  * Initializing the processes
42  * **************************************************************************/
43 /**
44  * gras_process_init:
45  * 
46  * Perform the various intialisations needed by gras. Each process must run it
47  */
48 gras_error_t gras_process_init(void);
49
50 /**
51  * gras_process_exit:
52  * 
53  * Frees the memory allocated by gras. Processes should run it
54  */
55 gras_error_t gras_process_exit(void);
56
57 /****************************************************************************/
58 /* Manipulating User Data                                                   */
59 /****************************************************************************/
60 /**
61  * gras_userdata_get:
62  *
63  * Get the data associated with the current process.
64  */
65 void *gras_userdata_get(void);
66
67 /**
68  * gras_userdata_set:
69  *
70  * Set the data associated with the current process.
71  */
72 void *gras_userdata_set(void *ud);
73
74 /**
75  * gras_userdata_new:
76  *
77  * Malloc and set the data associated with the current process.
78  */
79
80 #define gras_userdata_new(type) gras_userdata_set(malloc(sizeof(type)))
81
82 END_DECL
83
84 #endif /* GRAS_PROCESS_H */
85