Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1292 → Rev 1293

/demos/trunk/newtrace/newtrace.c
File deleted
/demos/trunk/newtrace/utils/udpdump.c
0,0 → 1,119
/*
* Project: S.Ha.R.K.
*
* Coordinators:
* Giorgio Buttazzo <giorgio@sssup.it>
* Paolo Gai <pj@gandalf.sssup.it>
*
* Authors :
* Giacomo Guidi <giacomo@gandalf.sssup.it>
*
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
*
* http://www.sssup.it
* http://retis.sssup.it
* http://shark.sssup.it
*/
 
#include <netinet/in.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>/* close() */
#include <stdlib.h>
#include <signal.h>
 
#define SERVER_PORT 20000
#define MAX_MSG 10000
 
struct tracer_udp_header {
char id[12];
unsigned int pkt_number;
unsigned int events;
unsigned int size;
};
 
FILE *output_file;
 
void close_and_exit()
{
 
printf("Closing...\n");
 
fclose(output_file);
 
exit(0);
 
}
 
int main(int argc, char *argv[])
{
int sd, rc, n, cliLen;
struct sockaddr_in cliAddr, servAddr;
char msg[MAX_MSG];
char ch;
 
struct tracer_udp_header *pkt_head = (struct tracer_udp_header *)(msg);
 
if (argc < 2) {
printf("%s: Enter the output file name [%s filename]\n",argv[0],argv[0]);
exit(1);
}
 
// socket creation
sd = socket(AF_INET, SOCK_DGRAM, 0);
if(sd < 0) {
printf("%s: cannot open socket \n",argv[0]);
exit(1);
}
 
output_file = fopen(argv[1],"w+b");
if (output_file == NULL) {
printf("%s: Cannot open the file\n");
exit(1);
}
 
// bind local server port
servAddr.sin_family = AF_INET;
 
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
servAddr.sin_port = htons(SERVER_PORT);
 
rc = bind (sd, (struct sockaddr *)&servAddr,sizeof(servAddr));
if(rc < 0) {
printf("%s: cannot bind port number %d \n",
argv[0], SERVER_PORT);
exit(1);
}
 
signal(SIGINT, close_and_exit);
 
while(1) {
 
printf("Wait packet...\n");
 
// receive message
cliLen = sizeof(cliAddr);
n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *)&cliAddr, &cliLen);
 
printf("Received %d, length %d(%d), %d tracer events.\n",
pkt_head->pkt_number, n, pkt_head->size, pkt_head->events);
if(n < 0) {
printf("%s: cannot receive data \n",argv[0]);
continue;
}
 
fwrite((void *)(msg+sizeof(struct tracer_udp_header)),n-sizeof(struct tracer_udp_header),1,output_file);
}
 
fclose(output_file);
 
return 0;
 
}
 
/demos/trunk/newtrace/udp/initfile.c
0,0 → 1,84
/*
* Project: S.Ha.R.K.
*
* Coordinators:
* Giorgio Buttazzo <giorgio@sssup.it>
* Paolo Gai <pj@gandalf.sssup.it>
*
* Authors :
* Paolo Gai <pj@gandalf.sssup.it>
* (see the web pages for full authors list)
*
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
*
* http://www.sssup.it
* http://retis.sssup.it
* http://shark.sssup.it
*/
 
/*
* Copyright (C) 2000 Paolo Gai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
 
#include "kernel/kern.h"
#include "modules/edf.h"
#include "modules/cbs.h"
#include "modules/rr.h"
#include "modules/dummy.h"
 
#include "modules/sem.h"
#include "modules/hartport.h"
#include "modules/cabs.h"
 
#include "drivers/keyb.h"
 
/*+ sysyem tick in us +*/
#define TICK 0
 
/*+ RR tick in us +*/
#define RRTICK 10000
 
TIME __kernel_register_levels__(void *arg)
{
struct multiboot_info *mb = (struct multiboot_info *)arg;
 
EDF_register_level(EDF_ENABLE_ALL);
CBS_register_level(CBS_ENABLE_ALL, 0);
RR_register_level(RRTICK, RR_MAIN_YES, mb);
dummy_register_level();
 
SEM_register_module();
 
CABS_register_module();
 
return TICK;
}
 
TASK __init__(void *arg)
{
struct multiboot_info *mb = (struct multiboot_info *)arg;
 
HARTPORT_init();
 
KEYB_init(NULL);
 
__call_main__(mb);
 
return (void *)0;
}
 
/demos/trunk/newtrace/udp/udptrace.c
0,0 → 1,81
/*
* Project: S.Ha.R.K.
*
* Coordinators:
* Giorgio Buttazzo <giorgio@sssup.it>
* Paolo Gai <pj@gandalf.sssup.it>
*
* Authors :
* Giacomo Guidi <giacomo@gandalf.sssup.it>
*
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
*
* http://www.sssup.it
* http://retis.sssup.it
* http://shark.sssup.it
*/
 
/*
* Copyright (C) 2000 Paolo Gai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
 
#include <kernel/kern.h>
#include <tracer.h>
 
int main(int argc, char **argv)
{
 
long long i;
int err;
 
struct timespec start,end,diff;
 
//Initialize Tracer
tracer_initialize(1000000);
 
//Set UDP output
err = tracer_init_udp(1,"192.168.82.46","192.168.82.20");
if (err != 0) {
cprintf("Network Open Fail !\n");
sys_end();
}
 
kern_gettime(&start);
tracer_enable();
 
for (i=0;i<1000000000;i++);
 
tracer_disable();
kern_gettime(&end);
 
SUBTIMESPEC(&end,&start,&diff);
 
cprintf("Logged Time %d s %d us\n",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
 
tracer_print_statistics();
 
//Send the events
tracer_send_logged_events(-1);
tracer_flush_sent_events();
 
// Ctrl-C to exit
while(1);
 
return 0;
 
}
/demos/trunk/newtrace/udp/makefile
0,0 → 1,16
#
#
#
 
ifndef BASE
BASE=../../..
endif
include $(BASE)/config/config.mk
 
PROGS = udptrace
 
include $(BASE)/config/example.mk
 
udptrace:
make -f $(SUBMAKE) BASE=$(BASE) APP=udptrace INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT=__OLDCHAR__
 
/demos/trunk/newtrace/makefile
0,0 → 1,7
.PHONY: all clean
 
all:
make -C udp
 
clean:
make -C udp clean
/demos/trunk/newtrace/readme
0,0 → 1,8
This directory contains a set of sub directories containing all the tracer
examples and utilities.
 
Here a short description of the contents
 
utils - some small utilities that can read tracer files
udp - a small application that sends its trace data through the network