doc: Add serial to list of ci file reserved words
[charm.git] / src / conv-core / memory-lock.c
1
2 /* Wrap a CmiMemLock around this code */
3 #define MEM_LOCK_AROUND(code) \
4   CmiMemLock(); \
5   code; \
6   CmiMemUnlock();
7
8 /* Wrap a reentrant CmiMemLock around this code */
9 #define REENTRANT_MEM_LOCK_AROUND(code) \
10   int myRank=CmiMyRank(); \
11   if (myRank!=rank_holding_CmiMemLock) { \
12         CmiMemLock(); \
13         rank_holding_CmiMemLock=myRank; \
14         code; \
15         rank_holding_CmiMemLock=-1; \
16         CmiMemUnlock(); \
17   } \
18   else /* I'm already holding the memLock (reentrancy) */ { \
19         code; \
20   }
21
22 static void meta_init(char **argv)
23 {
24 /*   CmiMemoryIs_flag|=CMI_MEMORY_IS_OSLOCK;   */
25 }
26
27 void *meta_malloc(size_t size)
28 {
29   void *result;
30   MEM_LOCK_AROUND( result = mm_malloc(size); )
31   if (result==NULL) CmiOutOfMemory(size);
32   return result;
33 }
34
35 void meta_free(void *mem)
36 {
37   MEM_LOCK_AROUND( mm_free(mem); )
38 }
39
40 void *meta_calloc(size_t nelem, size_t size)
41 {
42   void *result;
43   MEM_LOCK_AROUND( result = mm_calloc(nelem, size); )
44   if (result==NULL) CmiOutOfMemory(size);
45   return result;
46 }
47
48 void meta_cfree(void *mem)
49 {
50   MEM_LOCK_AROUND( mm_cfree(mem); )
51 }
52
53 void *meta_realloc(void *mem, size_t size)
54 {
55   void *result;
56   MEM_LOCK_AROUND( result = mm_realloc(mem, size); )
57   return result;
58 }
59
60 void *meta_memalign(size_t align, size_t size)
61 {
62   void *result;
63   MEM_LOCK_AROUND( result = mm_memalign(align, size); )
64   if (result==NULL) CmiOutOfMemory(align*size);
65   return result;    
66 }
67
68 void *meta_valloc(size_t size)
69 {
70   void *result;
71   MEM_LOCK_AROUND( result = mm_valloc(size); )
72   if (result==NULL) CmiOutOfMemory(size);
73   return result;
74 }