initial multicore gargbage collection, not finish yet
[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 = size; //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   if(p == NULL) {
22           BAMBOO_EXIT(0xa024);
23   }
24   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
25   //return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
26   return p;
27 }
28
29 void * mycalloc_share(int m, int size) {
30   void * p = NULL;
31   int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
32   BAMBOO_START_CRITICAL_SECTION_MEM();
33   p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
34   if(p == NULL) {
35           BAMBOO_EXIT(0xa025);
36   }
37   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
38   return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
39 }
40
41 void * mycalloc_i(int m, int size) {
42   void * p = NULL;
43   int isize = size; //2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
44   p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
45   if(p == NULL) {
46           BAMBOO_EXIT(0xa026);
47   }
48   return p;
49   //return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
50 }
51
52 void myfree(void * ptr) {
53   BAMBOO_LOCAL_MEM_FREE(ptr);
54   return;
55 }
56
57 #endif