Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 444 → Rev 445

/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, &region , (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