/shark/trunk/tracer/include/tracer.h |
---|
73,6 → 73,9 |
void tracer_disable(); |
void tracer_print_statistics(); |
int tracer_send_logged_events(int NumberOfEvents); |
void tracer_flush_sent_events(); |
//UDP |
int init_udp_tracer(char *local_ip, char *target_ip); |
/shark/trunk/tracer/newtrace/tracer.c |
---|
10,9 → 10,11 |
int TracerActive = 0; |
int TracerOutputType = TRACER_NO_OUTPUT; |
unsigned long long TracerEventsRecorded; |
unsigned int TracerEventsSaved; |
unsigned int TracerEventsPresent; |
extern unsigned int clk_per_msec; |
#define TRACER_DEBUG |
/* Initialize the tracer |
* |
* Return 0 => Success |
38,7 → 40,7 |
TracerActive = 0; |
TracerEventsRecorded = 0; |
TracerEventsSaved = 0; |
TracerEventsPresent = 0; |
ll_frestore(f); |
return 0; |
70,6 → 72,7 |
} |
int send_udp_event(void *p, int size); |
void send_remaining_udp_buffer(); |
/* Send NumberOfEvents out of the system |
* If NumberOfEvents = -1 all the events will be sent */ |
82,7 → 85,7 |
f = ll_fsave(); |
if (NumberOfEvents == 0 || TracerEventsSaved == 0) { |
if (NumberOfEvents == 0 || TracerEventsPresent == 0) { |
ll_frestore(f); |
return 0; |
} |
93,7 → 96,9 |
switch (TracerOutputType) { |
case TRACER_NO_OUTPUT: |
#ifdef TRACER_DEBUG |
cprintf("Event Type %02x Sent To NULL\n",*(BYTE *)(p)); |
#endif |
break; |
case TRACER_UDP_OUTPUT: |
err = send_udp_event(p,*(BYTE *)(p + 9)); |
103,7 → 108,9 |
} |
break; |
default: |
#ifdef TRACER_DEBUG |
cprintf("Error: Tracer Output Not Defined\n"); |
#endif |
ll_frestore(f); |
return -1; |
break; |
113,7 → 120,7 |
if (p >= LastBeforeEndTracerBuffer) p = StartTracerBuffer; |
FirstTracerBuffer = p; |
TracerEventsSaved--; |
TracerEventsPresent--; |
s++; |
124,6 → 131,17 |
} |
//Flush the events that are ready to send |
void tracer_flush_sent_events() { |
switch (TracerOutputType) { |
case TRACER_UDP_OUTPUT: |
send_remaining_udp_buffer(); |
break; |
} |
} |
void tracer_print_statistics() { |
SYS_FLAGS f; |
138,10 → 156,13 |
cprintf("First Tracer Buffer: %08x\n",(int)FirstTracerBuffer); |
cprintf("Last Before End Tracer Buffer: %08x\n\n",(int)LastBeforeEndTracerBuffer); |
cprintf("Total Events: %d\n",(int)TracerEventsRecorded); |
cprintf("Total Saved Events: %d\n",TracerEventsSaved); |
cprintf("Events Logged: %d\n",(int)TracerEventsRecorded); |
cprintf("Events Present: %d\n",TracerEventsPresent); |
if (TracerEventsSaved == 0) return; |
if (TracerEventsPresent == 0) { |
ll_frestore(f); |
return; |
} |
for (i=0; i<0xFF; i++) { |
p = FirstTracerBuffer; |
/shark/trunk/tracer/newtrace/udp.c |
---|
37,15 → 37,23 |
#include <ll/sys/types.h> |
#include <stdlib.h> |
#include <string.h> |
#include <tracer.h> |
#include <unistd.h> |
#include <drivers/udpip.h> |
#define TRACER_UDP_DEBUG |
#define UDP_MAXSIZE 1400 |
#define TRACER_PORT 100 |
BYTE pkt[UDP_MAXSIZE]; |
int total_pkt_size = 0; |
int TracerUDPInit = 0; |
UDP_ADDR target,local; |
char local_ip[20],target_ip[20]; |
int socket; |
extern int TracerOutputType; |
57,7 → 65,7 |
unsigned int total_size; |
}; |
int init_udp_tracer(char *local_ip, char *target_ip) { |
int init_udp_tracer(char *l_ip, char *t_ip) { |
SYS_FLAGS f; |
65,19 → 73,28 |
f = ll_fsave(); |
strcpy(local_ip,l_ip); |
strcpy(target_ip,t_ip); |
net_setmode(m, TXTASK); |
net_setudpip(m, local_ip, "255.255.255.255"); |
if (net_init(&m) != 1) |
if (net_init(&m) != 1) { |
ll_frestore(f); |
return -1; |
} |
sleep(1); |
ip_str2addr(local_ip,&(local.s_addr)); |
local.s_port = TRACER_PORT; |
local.s_port = TRACER_PORT+1; |
socket = udp_bind(&local, NULL); |
ip_str2addr(target_ip,&(target.s_addr)); |
target.s_port = TRACER_PORT; |
sleep(1); |
TracerOutputType = TRACER_UDP_OUTPUT; |
TracerUDPInit = 1; |
89,9 → 106,7 |
int send_udp_event(void *p, int size) { |
static BYTE pkt[UDP_MAXSIZE]; |
static BYTE *current = pkt; |
static int total_pkt_size = 0; |
static int events_number = 0; |
static int packet_number = 0; |
129,6 → 144,11 |
} else { |
#ifdef TRACER_UDP_DEBUG |
cprintf("Packet Sent - Nr %d Size %d\n",packet_number,total_pkt_size); |
#endif |
if (TracerUDPInit == 1) |
udp_sendto(socket, pkt, total_pkt_size, &target); |
events_number = 0; |
144,3 → 164,14 |
return -1; |
} |
void send_remaining_udp_buffer() { |
if (TracerUDPInit == 1 && total_pkt_size != 0) { |
#ifdef TRACER_UDP_DEBUG |
cprintf("Last Packet Sent - Size %d\n",total_pkt_size); |
#endif |
udp_sendto(socket, pkt, total_pkt_size, &target); |
} |
} |