/shark/trunk/tracer/include/FTrace_OSD.h |
---|
28,5 → 28,8 |
/* OSD Send Chunk out */ |
int FTrace_OSD_send_chunk(int number, int osd_flags); |
/* OSD Chunk Dump */ |
int FTrace_OSD_chunk_dump(FTrace_Chunk_Ptr c); |
#endif |
/shark/trunk/tracer/newtrace/FTrace_OSD_ll.c |
---|
71,7 → 71,7 |
*(DWORD *)current = (DWORD)(par1 << 16 | type); |
*(DWORD *)(current + 4) = tschigh; |
*(DWORD *)(current + 8) = tsclow; |
*(DWORD *)(current + 16) = par2; |
*(DWORD *)(current + 12) = par2; |
*(DWORD *)(OSD_current_pointer) = current + 16; |
103,7 → 103,6 |
"movl %%esi,(%%ebx)\n\t" /* Save TYPE + WORD par1 */ |
"movl %%edx,4(%%ebx)\n\t" /* Save TSC HIGH */ |
"movl %%eax,8(%%ebx)\n\t" /* Save TSC LOW */ |
"movl %%eax,12(%%ebx)\n\t" /* DWORD par2 */ |
"addl $16,(%%edi)\n\t" /* Inc Position */ |
"popfl\n\t" |
:: "D" ((DWORD *)(OSD_current_pointer)), "S" (par1 << 16 | (type | 0x8000))); |
110,3 → 109,22 |
} |
void FTrace_dump_ipoints(void *OSD_current) |
{ |
DWORD p = *(DWORD *)(OSD_current+4); |
DWORD end = *(DWORD *)(OSD_current+4) + *(DWORD *)(OSD_current+8) + *(DWORD *)(OSD_current+16); |
while (p <= end) { |
if (*(WORD *)(p) != 0x0000) { |
FTrace_printf("Event %4x TSC %8x:%8xd PAR1 %8d PAR2 %8d\n", |
*(WORD *)(p),*(DWORD *)(p+4),*(DWORD *)(p+8),*(WORD *)(p+2),*(DWORD *)(p+12)); |
} |
p += 16; |
} |
} |
/shark/trunk/tracer/newtrace/FTrace.c |
---|
401,13 → 401,14 |
} |
if (!(ckB->flags & FTRACE_CHUNK_FLAG_FREE)) { |
ckB->flags &= ~FTRACE_CHUNK_FLAG_FREE; |
FTrace_OSD_update_chunk_flags(ckB); |
#ifdef FTRACE_DEBUG |
FTrace_printf("FTrace Error: Chunk B is not free\n"); |
#endif |
FTrace_unlock(); |
return -1; |
} else { |
ckB->flags &= ~FTRACE_CHUNK_FLAG_FREE; |
FTrace_OSD_update_chunk_flags(ckB); |
} |
/* FTrace Low Level Blocking Part */ |
556,11 → 557,13 |
FTrace_Chunk_Ptr FT_temp = ChunkTable[number]; |
cprintf("ID = %x\n",FT_temp->id); |
cprintf("NUM = %d\n",FT_temp->number); |
cprintf("FLAGS = %d\n",FT_temp->flags); |
cprintf("SIZE = %d\n",FT_temp->size); |
cprintf("EMERG = %d\n",FT_temp->emergency_size); |
FTrace_printf("ID : %x\n",FT_temp->id); |
FTrace_printf("NUM : %d\n",FT_temp->number); |
FTrace_printf("FLAGS : %x\n",FT_temp->flags); |
FTrace_printf("SIZE : %d\n",FT_temp->size); |
FTrace_printf("EMERG : %d\n",FT_temp->emergency_size); |
FTrace_OSD_chunk_dump(FT_temp); |
} |
/shark/trunk/tracer/newtrace/FTrace_OSD.c |
---|
57,15 → 57,13 |
/* OSD_pointers |
00 - Fast Access |
04 - Actual Chunk Position |
08 - Actual Chunk Start |
12 - Actual Chunk Size |
16 - Actual Chunk Emergency Size |
20 - Actual Chunk Flags |
00 - Actual Chunk Position |
04 - Actual Chunk Start |
08 - Actual Chunk Size |
12 - Actual Chunk Emergency Size |
16 - Actual Chunk Flags |
24 - Next Chunk OSD Pointer |
20 - Next Chunk OSD Pointer |
*/ |
73,15 → 71,12 |
{ |
*(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); |
*(DWORD *)(c->osd + 12) = (DWORD)(c->size); |
*(DWORD *)(c->osd + 16) = (DWORD)(c->emergency_size); |
*(DWORD *)(c->osd + 20) = (DWORD)(c->flags); |
*(DWORD *)(c->osd + 8) = (DWORD)(c->size); |
*(DWORD *)(c->osd + 12) = (DWORD)(c->emergency_size); |
*(DWORD *)(c->osd + 16) = (DWORD)(c->flags); |
*(DWORD *)(c->osd + 20) = 0; |
*(DWORD *)(c->osd + 24) = 0; |
return 0; |
} |
90,7 → 85,7 |
int FTrace_OSD_chunk_link(FTrace_Chunk_Ptr a, FTrace_Chunk_Ptr b) |
{ |
*(DWORD *)(a->osd + 24) = (DWORD)(b->osd); |
*(DWORD *)(a->osd + 20) = (DWORD)(b->osd); |
return 0; |
99,7 → 94,7 |
int FTrace_OSD_update_chunk_flags(FTrace_Chunk_Ptr c) |
{ |
*(DWORD *)(c->osd + 20) = (DWORD)(c->flags); |
*(DWORD *)(c->osd + 16) = (DWORD)(c->flags); |
return 0; |
119,4 → 114,20 |
} |
int FTrace_OSD_chunk_dump(FTrace_Chunk_Ptr c) |
{ |
FTrace_printf("Position : %x\n",*(int *)(c->osd)); |
FTrace_printf("Start : %x\n",*(int *)(c->osd+4)); |
FTrace_printf("Size : %d\n",*(int *)(c->osd+8)); |
FTrace_printf("Em-Size : %d\n",*(int *)(c->osd+12)); |
FTrace_printf("Flags : %x\n",*(int *)(c->osd+16)); |
FTrace_printf("Next : %x\n\n",*(int *)(c->osd+20)); |
FTrace_dump_ipoints(c->osd); |
return 0; |
} |