fix bugs in multicore version runtime
[IRC.git] / Robust / src / Runtime / mem.c
1 #include "mem.h"
2
3 #ifdef MULTICORE
4 #include "runtime.h"
5 #include "runtime_arch.h"
6
7 /*void * m_calloc(int m, int size) {
8         void * p = malloc(m*size);
9         int i = 0;
10         for(i = 0; i < size; ++i) {
11  *(char *)(p+i) = 0;
12         }
13         return p;
14    }*/
15
16 void * mycalloc(int m, int size) {
17   void * p = NULL;
18   int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
19   BAMBOO_START_CRITICAL_SECTION_MEM();
20   p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
21   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
22   return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
23 }
24
25 void * mycalloc_share(int m, int size) {
26   void * p = NULL;
27   int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
28   BAMBOO_START_CRITICAL_SECTION_MEM();
29   p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
30   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
31   return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
32 }
33
34 void * mycalloc_i(int m, int size) {
35   void * p = NULL;
36   int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
37   p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
38   return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
39 }
40
41 void myfree(void * ptr) {
42   return;
43 }
44
45 #endif