Show
Ignore:
Timestamp:
08/20/07 18:40:16 (1 year ago)
Author:
bart
Message:

Add code that checks the shared memory chunks if needed to make sure no data

was written past the boundary. Change #undef MM_CHECK in mm.c to
#define MM_CHECK

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • eaccelerator/trunk/mm.c

    r301 r333  
    6767#endif 
    6868 
     69#undef MM_CHECK  
     70#define MM_PATTERN  0xdeadbeef 
     71 
    6972#if defined(MM_SHM_MMAP_FILE) || defined(MM_SHM_MMAP_ZERO) || defined(MM_SHM_MMAP_ANON) || defined(MM_SHM_MMAP_POSIX) || defined(HAVE_MPROTECT) 
    7073#  include <sys/mman.h> 
     
    10661069    mm_mem_head* x = NULL; 
    10671070    size_t realsize = (size_t)MM_ALIGN(MM_SIZE(size)); 
     1071#if MM_CHECK 
     1072    realsize += (size_t)MM_ALIGN(sizeof(int)); 
     1073#endif 
    10681074    if (realsize <= mm->available) { 
    10691075      /* Search for free bucket */ 
     
    10841090          break; 
    10851091        } else if (p->size > realsize && (best == NULL || best->size > p->size)) { 
    1086           /* Found best bucket (smallest bucket with the grater size) */ 
     1092          /* Found best bucket (smallest bucket with the bigger size) */ 
    10871093          best = p; 
    10881094          best_prev = q; 
     
    11191125    } 
    11201126    if (x != NULL) { 
     1127#ifdef MM_CHECK 
     1128      *(int *)((char *)x + realsize - (size_t)MM_ALIGN(sizeof(int))) = MM_PATTERN; 
     1129#endif 
    11211130      return HEAD_TO_PTR(x); 
    11221131    } 
     
    13191328} 
    13201329 
     1330#if defined(MM_CHECK) && !(defined(MM_TEST_SHM) || defined(MM_TEST_SEM)) 
     1331void mm_check_mem(void *x) { 
     1332  mm_mem_head *p = PTR_TO_HEAD(x); 
     1333  if (*((unsigned int *)((char *)p + p->size - (size_t)MM_ALIGN(sizeof(int)))) != MM_PATTERN) { 
     1334    ea_debug_error("[EACCELERATOR] Corrupted memory detected\n"); 
     1335  } 
     1336} 
     1337#else 
     1338void mm_check_mem(void *x) {} 
     1339#endif 
     1340 
    13211341#ifdef MM_TEST_SHM 
    13221342int main() {