23,10 → 23,10 |
c->number = number; /* Chunk number */ |
c->flags = flags; /* Chunk flags */ |
c->size = size; /* Chunk size */ |
c->emergency_size = emergency_size; /* Chunk size */ |
c->emergency_size = emergency_size; /* Chunk emergency size */ |
c->osd = (DWORD)((DWORD)(c) + sizeof(struct FTrace_Chunk)); |
|
return FTrace_OSD_chunk_init(c, size, flags); |
return FTrace_OSD_chunk_init(c, size, emergency_size, flags); |
|
} |
|
114,12 → 114,11 |
|
} |
|
/* Create n chunks of specified size, where size = 2^bits */ |
int FTrace_chunk_create(int n, int bits, FTrace_flags flags) |
int FTrace_chunk_create(int n, int size, int emergency_size, FTrace_flags flags) |
{ |
|
FTrace_Chunk_Ptr FT_temp; |
int i, number, err, size; |
int i, number, err; |
|
FTrace_lock(); |
|
134,9 → 133,6 |
} |
} |
|
/* Get size */ |
size = 1 << bits; |
|
for (i = 0;i < n;i++) { |
|
number = FTrace_find_free_slot(); |
148,7 → 144,7 |
return -1; |
} |
|
FT_temp = (FTrace_Chunk_Ptr)FTrace_malloc(sizeof(struct FTrace_Chunk) + FTRACE_OSD_CHUNK_HEAD + size); |
FT_temp = (FTrace_Chunk_Ptr)FTrace_malloc(sizeof(struct FTrace_Chunk) + FTRACE_OSD_CHUNK_HEAD + size + emergency_size); |
if (FT_temp == NULL) { |
#ifdef FTRACE_DEBUG |
FTrace_printf("FTrace Error: cannot allocate memory for chunk\n"); |
157,7 → 153,7 |
return -1; |
} |
|
err = FTrace_chunk_init(FT_temp, number, size, flags); |
err = FTrace_chunk_init(FT_temp, number, size, emergency_size, flags); |
if (err != 0) { |
#ifdef FTRACE_DEBUG |
FTrace_printf("FTrace Error: cannot initialized the new chunk\n"); |
464,7 → 460,7 |
FTrace_unlock(); |
|
/* Alloc temp memory for */ |
temp_data = (void *)FTrace_malloc(FT_temp->sizemask+1); |
temp_data = (void *)FTrace_malloc(FT_temp->size+FT_temp->emergency_size); |
if (temp_data == NULL) { |
#ifdef FTRACE_DEBUG |
FTrace_printf("FTrace Error: Cannot allocate memory\n"); |