8,7 → 8,7 |
SYS_FLAGS FTracef; |
|
extern FTrace_Chunk_Ptr ActualChunk; |
extern BYTE OSD_pointers[FTRACE_OSD_CHUNK_HEAD]; |
extern void *OSD_current_pointer; |
|
void FTrace_fsave() |
{ |
56,7 → 56,9 |
} |
|
/* OSD_pointers |
|
|
00 - Fast Access |
|
04 - Actual Chunk Position |
08 - Actual Chunk Start |
12 - Actual Chunk Size |
63,11 → 65,7 |
16 - Actual Chunk Emergency Size |
20 - Actual Chunk Flags |
|
24 - Next1 Chunk Position |
28 - Next1 Chunk Start |
32 - Next1 Chunk Size |
36 - Next1 Chunk Emergency Size |
40 - Next1 Chunk Flags |
24 - Next Chunk OSD Pointer |
|
*/ |
|
74,7 → 72,7 |
int FTrace_OSD_chunk_init(FTrace_Chunk_Ptr c, int size, int emergency_size, FTrace_flags flags) |
{ |
|
*(DWORD *)(c->osd) = 4; |
*(DWORD *)(c->osd) = (DWORD)(c->osd + FTRACE_OSD_CHUNK_HEAD); |
|
*(DWORD *)(c->osd + 4) = (DWORD)(c->osd + FTRACE_OSD_CHUNK_HEAD); |
*(DWORD *)(c->osd + 8) = (DWORD)(c->osd + FTRACE_OSD_CHUNK_HEAD); |
83,36 → 81,17 |
*(DWORD *)(c->osd + 20) = (DWORD)(c->flags); |
|
*(DWORD *)(c->osd + 24) = 0; |
*(DWORD *)(c->osd + 28) = 0; |
*(DWORD *)(c->osd + 32) = 0; |
*(DWORD *)(c->osd + 36) = 0; |
*(DWORD *)(c->osd + 40) = 0; |
|
*(DWORD *)(c->osd + 44) = 0; |
*(DWORD *)(c->osd + 48) = 0; |
*(DWORD *)(c->osd + 52) = 0; |
*(DWORD *)(c->osd + 56) = 0; |
*(DWORD *)(c->osd + 60) = 0; |
|
return 0; |
|
} |
|
/* OSD Chunk Link */ |
int FTrace_OSD_chunk_link(FTrace_Chunk_Ptr a, FTrace_Chunk_Ptr b, int osd_flags) |
int FTrace_OSD_chunk_link(FTrace_Chunk_Ptr a, FTrace_Chunk_Ptr b) |
{ |
|
int delta = 0; |
*(DWORD *)(a->osd + 24) = (DWORD)(b->osd); |
|
if (osd_flags == FTRACE_OSD_NEXT1) |
delta = 24; |
if (osd_flags == FTRACE_OSD_NEXT2) |
delta = 44; |
|
if (delta == 0) return -1; |
|
memcpy((void *)(a->osd+delta),(void *)(b->osd+4),20); |
|
return 0; |
|
} |
126,28 → 105,6 |
|
} |
|
int FTrace_OSD_load_pointers() |
{ |
|
if (ActualChunk == NULL) return -1; |
|
memcpy((void *)OSD_pointers,(void *)ActualChunk->osd,FTRACE_OSD_CHUNK_HEAD); |
|
return 0; |
|
} |
|
int FTrace_OSD_save_pointers() |
{ |
|
if (ActualChunk == NULL) return -1; |
|
memcpy((void *)ActualChunk->osd,(void *)OSD_pointers,FTRACE_OSD_CHUNK_HEAD); |
|
return 0; |
|
} |
|
int FTrace_OSD_compress_chunk(int number, void *temp_data, int *data_size) |
{ |
|