Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 497 → Rev 498

/shark/trunk/tracer/include/FTrace_types.h
27,7 → 27,7
DWORD number;
FTrace_flags flags;
DWORD size;
DWORD sizemask;
DWORD emergency_size;
DWORD osd;
};
 
/shark/trunk/tracer/newtrace/FTrace_OSD_ll.c
0,0 → 1,49
#include <FTrace_types.h>
#include <FTrace_OSD.h>
 
/* OSD_pointers
 
00 - Actual Chunk Event Pointer Delta
04 - Actual Chunk Mask
08 - Actual Chunk Start
12 - Actual Chunk Flags
16 - Actual Chunk Fast-Access-Pointer
 
20 - Delta (0 Actual, 24 Next)
24 - Next1 Chunk Event Pointer Delta
28 - Next1 Chunk Mask
32 - Next1 Chunk Start
36 - Next1 Chunk Flags
40 - Next1 Chunk Fast-Access-Pointer
44 - Delta
 
*/
 
void FTrace_safe_ipoint(DWORD type, DWORD par1, DOWRD par2)
{
 
extern BYTE OSD_pointers[FTRACE_OSD_CHUNK_HEAD];
extern BYTE FTrace_enable;
 
 
}
 
void FTrace_unsafe_ipoint(DWORD type, DWORD par1, DWORD par2)
{
 
extern BYTE OSD_pointers[FTRACE_OSD_CHUNK_HEAD];
 
__asm__("pushfl\n\t" /* Critical Section */
"cli\n\t"
"cpuid\n\t"
"rdtsc\n\t"
"movl %%esi,(%%edi)\n\t" /* Save TYPE + WORD par2 */
"movl %%edx,4(%%edi)\n\t" /* Save TSC HIGH */
"movl %%eax,8(%%edi)\n\t" /* Save TSC LOW */
"addl $12,(%%edi)\n\t" /* Inc Fast-Access-Pointer */
"popfl\n\t"
:: "D" (*(DWORD * )(OSD_pointers+16)), "S" (type));
 
}
 
/shark/trunk/tracer/newtrace/FTrace.c
16,15 → 16,15
int FTraceEnable = 0;
 
/* Init a chunk with default value */
static int FTrace_chunk_init(FTrace_Chunk_Ptr c, int number, int size, FTrace_flags flags)
static int FTrace_chunk_init(FTrace_Chunk_Ptr c, int number, int size, int emergency_size, FTrace_flags flags)
{
 
c->id = FTRACE_CHUNK_ID; /* Std ID */
c->number = number; /* Chunk number */
c->flags = flags; /* Chunk flags */
c->size = size; /* Chunk real size */
c->sizemask = size - 1; /* Chunk data size mask */
c->osd = (DWORD)((DWORD)(c) + sizeof(struct FTrace_Chunk));
c->id = FTRACE_CHUNK_ID; /* Std ID */
c->number = number; /* Chunk number */
c->flags = flags; /* Chunk flags */
c->size = size; /* Chunk size */
c->emergency_size = emergency_size; /* Chunk size */
c->osd = (DWORD)((DWORD)(c) + sizeof(struct FTrace_Chunk));
return FTrace_OSD_chunk_init(c, size, flags);
 
/shark/trunk/tracer/newtrace/FTrace_OSD.c
0,0 → 1,138
#include <FTrace_chunk.h>
#include <FTrace_OSD.h>
#include <FTrace_types.h>
 
#include <kernel/kern.h>
#include <stdlib.h>
 
SYS_FLAGS FTracef;
 
extern FTrace_Chunk_Ptr ActualChunk;
extern BYTE OSD_pointers[FTRACE_OSD_CHUNK_HEAD];
 
void FTrace_fsave()
{
 
FTracef = kern_fsave();
 
}
 
void FTrace_frestore()
{
kern_frestore(FTracef);
}
 
void FTrace_lock()
{
 
}
 
void FTrace_unlock()
{
}
 
void *FTrace_malloc(int size)
{
 
return malloc(size);
 
}
 
void FTrace_free(void *ptr)
{
free(ptr);
}
 
int FTrace_OSD_init()
{
 
return 0;
 
}
 
int FTrace_OSD_chunk_init(FTrace_Chunk_Ptr c, int size, FTrace_flags flags)
{
 
*(DWORD *)(c->osd) = 0;
*(DWORD *)(c->osd + 4) = (DWORD)(c->sizemask);
*(DWORD *)(c->osd + 8) = (DWORD)(c->osd + 60);
*(DWORD *)(c->osd + 12) = 0;
*(DWORD *)(c->osd + 16) = 0;
 
*(DWORD *)(c->osd + 20) = 0;
*(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;
 
return 0;
 
}
 
/* OSD Chunk Link */
int FTrace_OSD_chunk_link(FTrace_Chunk_Ptr a, FTrace_Chunk_Ptr b, int osd_flags)
{
 
int delta = 0;
 
if (osd_flags == FTRACE_OSD_NEXT1)
delta = 20;
if (osd_flags == FTRACE_OSD_NEXT2)
delta = 40;
 
if (delta == 0) return -1;
 
memcpy((void *)(a->osd+delta),(void *)(b->osd),20);
 
return 0;
 
}
 
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)
{
 
return 0;
 
}
 
int FTrace_OSD_send_chunk(int number, int osd_flag)
{
 
return 0;
 
}