Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 369 → Rev 368

/shark/trunk/tracer/include/tracer.h
73,9 → 73,6
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,11 → 10,9
int TracerActive = 0;
int TracerOutputType = TRACER_NO_OUTPUT;
unsigned long long TracerEventsRecorded;
unsigned int TracerEventsPresent;
unsigned int TracerEventsSaved;
extern unsigned int clk_per_msec;
 
#define TRACER_DEBUG
 
/* Initialize the tracer
*
* Return 0 => Success
40,7 → 38,7
 
TracerActive = 0;
TracerEventsRecorded = 0;
TracerEventsPresent = 0;
TracerEventsSaved = 0;
 
ll_frestore(f);
return 0;
72,7 → 70,6
}
 
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 */
85,7 → 82,7
 
f = ll_fsave();
 
if (NumberOfEvents == 0 || TracerEventsPresent == 0) {
if (NumberOfEvents == 0 || TracerEventsSaved == 0) {
ll_frestore(f);
return 0;
}
96,9 → 93,7
 
switch (TracerOutputType) {
case TRACER_NO_OUTPUT:
#ifdef TRACER_DEBUG
cprintf("Event Type %02x Sent To NULL\n",*(BYTE *)(p));
#endif
cprintf("Event Type %02x Sent To NULL\n",*(BYTE *)(p));
break;
case TRACER_UDP_OUTPUT:
err = send_udp_event(p,*(BYTE *)(p + 9));
108,10 → 103,8
}
break;
default:
#ifdef TRACER_DEBUG
cprintf("Error: Tracer Output Not Defined\n");
#endif
ll_frestore(f);
cprintf("Error: Tracer Output Not Defined\n");
ll_frestore(f);
return -1;
break;
}
120,7 → 113,7
if (p >= LastBeforeEndTracerBuffer) p = StartTracerBuffer;
 
FirstTracerBuffer = p;
TracerEventsPresent--;
TracerEventsSaved--;
 
s++;
 
131,17 → 124,6
 
}
 
//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;
156,13 → 138,10
cprintf("First Tracer Buffer: %08x\n",(int)FirstTracerBuffer);
cprintf("Last Before End Tracer Buffer: %08x\n\n",(int)LastBeforeEndTracerBuffer);
 
cprintf("Events Logged: %d\n",(int)TracerEventsRecorded);
cprintf("Events Present: %d\n",TracerEventsPresent);
cprintf("Total Events: %d\n",(int)TracerEventsRecorded);
cprintf("Total Saved Events: %d\n",TracerEventsSaved);
 
if (TracerEventsPresent == 0) {
ll_frestore(f);
return;
}
if (TracerEventsSaved == 0) return;
 
for (i=0; i<0xFF; i++) {
p = FirstTracerBuffer;
/shark/trunk/tracer/newtrace/udp.c
37,23 → 37,15
 
#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;
65,7 → 57,7
unsigned int total_size;
};
 
int init_udp_tracer(char *l_ip, char *t_ip) {
int init_udp_tracer(char *local_ip, char *target_ip) {
 
SYS_FLAGS f;
73,27 → 65,18
 
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) {
ll_frestore(f);
if (net_init(&m) != 1)
return -1;
}
 
sleep(1);
 
ip_str2addr(local_ip,&(local.s_addr));
local.s_port = TRACER_PORT+1;
local.s_port = TRACER_PORT;
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;
106,7 → 89,9
 
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;
144,13 → 129,8
 
} else {
 
#ifdef TRACER_UDP_DEBUG
cprintf("Packet Sent - Nr %d Size %d\n",packet_number,total_pkt_size);
#endif
udp_sendto(socket, pkt, total_pkt_size, &target);
 
if (TracerUDPInit == 1)
udp_sendto(socket, pkt, total_pkt_size, &target);
 
events_number = 0;
total_pkt_size = 0;
current = pkt;
164,14 → 144,3
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);
}
 
}