/shark/trunk/kernel/exchand.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: exchand.c,v 1.2 2003-05-01 19:40:52 pj Exp $ |
CVS : $Id: exchand.c,v 1.3 2004-02-10 17:50:03 giacomo Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2003-05-01 19:40:52 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2004-02-10 17:50:03 $ |
------------ |
**/ |
46,6 → 46,8 |
*/ |
#include <kernel/kern.h> |
#include <stdlib.h> |
#include <tracer.h> |
static int myflag; |
static siginfo_t myinfo; |
127,8 → 129,28 |
} |
} |
extern void *StartTracerBuffer; // Buffer Start 0 |
extern void *EndTracerBuffer; // Buffer End 4 |
extern void *LastBeforeEndTracerBuffer; //8 |
extern void *CurrentTracerBuffer; //The Actual Write Point For The Next Event 12 |
extern void *FirstTracerBuffer; //The First Valid Event 16 |
extern int TracerActive; //20 |
extern int TracerOutputType; //24 |
extern unsigned long long TracerEventsRecorded; //28 |
extern unsigned int TracerEventsPresent; //36 |
static void theend(void *arg) |
{ |
#ifdef __NEW_TRACER__ |
void *save_tracer_pointer; |
#endif |
if (myflag) { |
cprintf("S.Ha.R.K. Exception raised!!!\n"); |
cprintf("Time (s:ns) :%ld:%ld\n", mytime.tv_sec, mytime.tv_nsec); |
137,6 → 159,27 |
cprintf("PID :%d (%s)\n", myinfo.si_task, |
proc_table[myinfo.si_task].name); |
cprintf("Avail time : %d\n", proc_table[myinfo.si_task].avail_time); |
#ifdef __NEW_TRACER__ |
save_tracer_pointer = malloc(48); |
*(void **)(save_tracer_pointer) = StartTracerBuffer; // Buffer Start 0 |
*(void **)(save_tracer_pointer+4) = EndTracerBuffer; // Buffer End 4 |
*(void **)(save_tracer_pointer+8) = LastBeforeEndTracerBuffer; //8 |
*(void **)(save_tracer_pointer+12) = CurrentTracerBuffer; //The Actual Write Point For The Next Event 12 |
*(void **)(save_tracer_pointer+16) = FirstTracerBuffer; //The First Valid Event 16 |
*(int *)(save_tracer_pointer+20) = 0; //20 |
*(int *)(save_tracer_pointer+24) = TRACER_UDP_OUTPUT; //24 |
*(unsigned long long *)(save_tracer_pointer+28) = TracerEventsRecorded; //28 |
*(unsigned int *)(save_tracer_pointer+36) = TracerEventsPresent; //36 |
cprintf("Dumper Magic Number = %u\n",(int)save_tracer_pointer); |
#endif |
} |
if (myflag_shutdown) { |
cprintf("\nShutdown message:\n%s\n", shutdown_message_buffer); |
/shark/trunk/kernel/mem.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: mem.c,v 1.2 2003-11-12 17:28:20 giacomo Exp $ |
CVS : $Id: mem.c,v 1.3 2004-02-10 17:50:04 giacomo Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2003-11-12 17:28:20 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2004-02-10 17:50:04 $ |
------------ |
Basic Memory Manager Functions: |
78,8 → 78,6 |
lmm_add_region(&lmm, ®ion , (void*)0x01000000, 0xFEFFFFFF, |
0 , 2); |
// kern_printf("highsize:%d\n", highsize); |
/* blocks of free memory */ |
if (lowsize) |
lmm_add_free(&lmm, (void *)lowp, lowsize-1); |
if (highsize) |
/shark/trunk/kernel/modules/edf.c |
---|
20,11 → 20,11 |
/** |
------------ |
CVS : $Id: edf.c,v 1.11 2004-01-08 20:21:14 giacomo Exp $ |
CVS : $Id: edf.c,v 1.12 2004-02-10 17:50:04 giacomo Exp $ |
File: $File$ |
Revision: $Revision: 1.11 $ |
Last update: $Date: 2004-01-08 20:21:14 $ |
Revision: $Revision: 1.12 $ |
Last update: $Date: 2004-02-10 17:50:04 $ |
------------ |
This file contains the scheduling module EDF (Earliest Deadline First) |
146,6 → 146,7 |
default: |
/* else, a deadline miss occurred!!! */ |
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss,1,proc_table[p].context,0); |
kern_raise(XDEADLINE_MISS,p); |
} |
} |
157,6 → 158,7 |
#ifdef EDF_DEBUG |
edf_printf("(EDF:AAARRRGGGHHH!!!)"); |
#endif |
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss,1,proc_table[p].context,0); |
kern_raise(XDEADLINE_MISS,p); |
} |
268,6 → 270,7 |
/* check if the wcet is finished... */ |
if ((lev->flags & EDF_ENABLE_WCET_CHECK) && proc_table[p].avail_time <= 0) { |
/* if it is, raise a XWCET_VIOLATION exception */ |
TRACER_LOGEVENT(FTrace_EVT_task_wcet_violation,1,proc_table[p].context,0); |
kern_raise(XWCET_VIOLATION,p); |
proc_table[p].status = EDF_WCET_VIOLATED; |
} |
/shark/trunk/tracer/include/FTrace.h |
---|
39,6 → 39,8 |
#define FTrace_EVT_task_schedule 0x82 |
#define FTrace_EVT_task_timer 0x92 |
#define FTrace_EVT_task_disable 0xA2 |
#define FTrace_EVT_task_deadline_miss 0xB2 |
#define FTrace_EVT_task_wcet_violation 0xC2 |
// interrupt events, even more lightweight than ipoints |
#define FTrace_EVT_interrupt_start 0x03 |
/shark/trunk/tracer/newtrace/tracer.c |
---|
1,16 → 1,18 |
#include <stdlib.h> |
#include <tracer.h> |
void *StartTracerBuffer; // Buffer Start |
void *EndTracerBuffer; // Buffer End |
void *LastBeforeEndTracerBuffer; |
void *CurrentTracerBuffer; //The Actual Write Point For The Next Event |
void *FirstTracerBuffer; //The First Valid Event |
void *StartTracerBuffer; // Buffer Start 0 |
void *EndTracerBuffer; // Buffer End 4 |
void *LastBeforeEndTracerBuffer; //8 |
void *CurrentTracerBuffer; //The Actual Write Point For The Next Event 12 |
void *FirstTracerBuffer; //The First Valid Event 16 |
int TracerActive = 0; |
int TracerOutputType = TRACER_NO_OUTPUT; |
unsigned long long TracerEventsRecorded; |
unsigned int TracerEventsPresent; |
int TracerActive = 0; //20 |
int TracerOutputType = TRACER_NO_OUTPUT; //24 |
unsigned long long TracerEventsRecorded; //28 |
unsigned int TracerEventsPresent; //36 |
extern unsigned int clk_per_msec; |
#define TRACER_DEBUG |
92,7 → 94,9 |
p = FirstTracerBuffer; |
s = 0; |
while(((p == CurrentTracerBuffer && s == 0) || p != CurrentTracerBuffer) && s != NumberOfEvents) { |
while(((p == CurrentTracerBuffer && s == 0) || p != CurrentTracerBuffer) && |
s != NumberOfEvents && |
TracerEventsPresent != 0) { |
switch (TracerOutputType) { |
case TRACER_NO_OUTPUT: |
/shark/trunk/tracer/newtrace/udp.c |
---|
74,29 → 74,19 |
//Init UDP, if flag = 1 init the network driver |
int tracer_init_udp(int flag, char *l_ip, char *t_ip) { |
#ifndef __NO_NET__ |
SYS_FLAGS f; |
struct net_model m = net_base; |
f = ll_fsave(); |
strcpy(local_ip,l_ip); |
strcpy(target_ip,t_ip); |
if (flag) { |
net_setmode(m, TXTASK); |
net_setudpip(m, local_ip, "255.255.255.255"); |
if (net_init(&m) != 1) { |
ll_frestore(f); |
return -1; |
} |
sleep(1); |
} |
ip_str2addr(local_ip,&(local.s_addr)); |
111,10 → 101,6 |
TracerOutputType = TRACER_UDP_OUTPUT; |
TracerUDPInit = 1; |
ll_frestore(f); |
#endif |
return 0; |
} |
121,8 → 107,6 |
int send_udp_event(void *p, int size) { |
#ifndef __NO_NET__ |
static BYTE *current = pkt; |
static int events_number = 0; |
static int packet_number = 0; |
182,8 → 166,6 |
} |
#endif |
return -1; |
} |
190,8 → 172,6 |
void send_remaining_udp_buffer() { |
#ifndef __NO_NET__ |
int i; |
if (TracerUDPInit == 1 && total_pkt_size != 0) { |
202,8 → 182,6 |
for (i=0;i<DELAY_LOOP;i++); |
} |
#endif |
} |
//Sender Task |