Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 533 → Rev 534

/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;
}