Subversion Repositories shark

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 pj 1
/*
2
 * Project: S.Ha.R.K.
3
 *
4
 * Coordinators:
5
 *   Giorgio Buttazzo    <giorgio@sssup.it>
6
 *   Paolo Gai           <pj@gandalf.sssup.it>
7
 *
8
 * Authors     :
9
 *   Massimiliano Giorgi <massy@gandalf.sssup.it>
10
 *   (see the web pages for full authors list)
11
 *
12
 * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
13
 *
14
 * http://www.sssup.it
15
 * http://retis.sssup.it
16
 * http://shark.sssup.it
17
 */
18
 
19
#include <ll/sys/types.h>
20
#include <ll/stdlib.h>
21
 
22
#include <kernel/func.h>
23
#include <kernel/mem.h>
24
#include <kernel/log.h>
25
 
26
#include <drivers/udpip.h>
27
 
28
#include <trace/types.h>
29
#include <trace/trace.h>
30
#include <trace/queues.h>
31
 
32
#include <fs/fs.h>
33
 
34
#include <unistd.h>
35
#include <fcntl.h>
36
#include <limits.h>
37
 
38
typedef struct TAGudp_queue_t {
39
  UDP_ADDR    addr;
40
  trc_event_t evt;
41
} udp_queue_t;
42
 
43
static trc_event_t *udp_get(udp_queue_t *queue)
44
{
45
  return &queue->evt;
46
}
47
 
48
static int udp_post(udp_queue_t *queue)
49
{
50
  //int s=0;
51
  /* s ??? */
52
  //udp_sendto(s,&queue->evt,sizeof(trc_event_t),&queue->addr);
53
  return 0;
54
}
55
 
56
static int udp_create(trc_queue_t *queue, TRC_UDP_PARMS *args)
57
{
58
  udp_queue_t *ptr;
59
 
60
  if (args==NULL) return -1;
61
 
62
  ptr=(udp_queue_t*)kern_alloc(sizeof(udp_queue_t));
63
  if (ptr==NULL) return -1;
64
 
65
  queue->get=(trc_event_t*(*)(void*))udp_get;
66
  queue->post=(int(*)(void*))udp_post;
67
  queue->data=ptr;
68
 
69
  memcpy(&ptr->addr,&args->addr,sizeof(UDP_ADDR));
70
 
71
  return 0;
72
}
73
 
74
static int udp_activate(udp_queue_t *queue)
75
{
76
  return 0;
77
}
78
 
79
static int udp_terminate(udp_queue_t *queue)
80
{
81
  return 0;
82
}
83
 
84
int trc_register_udp_queue(void)
85
{
86
  int res;
87
 
88
  res=trc_register_queuetype(TRC_UDP_QUEUE,
89
                             (int(*)(trc_queue_t*,void*))udp_create,
90
                             (int(*)(void*))udp_activate,
91
                             (int(*)(void*))udp_terminate
92
                             );  
93
  if (res!=0) printk(KERN_WARNING "can't register tracer udp queue");
94
  return res;
95
}