OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 441 to Rev 442
    Reverse comparison

Rev 441 → Rev 442

/trunk/or1ksim/vapi/vapi.c
48,8 → 48,6
static unsigned int server_fd = 0;
static unsigned int nhandlers = 0;
 
void server_request(void);
 
static int tcp_level = 0;
 
static struct vapi_handler {
58,7 → 56,7
void (*read_func)(unsigned long, unsigned long);
struct vapi_handler *next;
int temp;
} *vapi_handler;
} *vapi_handler = NULL;
 
/* Structure for polling, it is cached, that it doesn't have to be rebuilt each time */
static struct pollfd *fds = NULL;
118,7 → 116,6
return tt;
}
 
/* Added by Erez 09/12/01 */
void vapi_write_log_file(VAPI_COMMAND command, unsigned long devid, unsigned long data)
{
if (!runtime.vapi.vapi_file)
295,7 → 292,7
return sockfd;
}
 
void server_request()
static void server_request()
{
struct sockaddr_in sa;
struct sockaddr* addr = (struct sockaddr*)&sa;
381,30 → 378,27
if (vapi_write_stream(t->fd, &data, sizeof (data)) < 0)
return 1;
return 0;
}
}
 
static int read_packet (unsigned long id, unsigned long *data) {
unsigned long t_id;
struct vapi_handler *t = find_handler (id);
if (!t || !t->fd)
static int read_packet (int fd, unsigned long *id, unsigned long *data)
{
if (fd <= 0)
return 1;
if (vapi_read_stream(t->fd, &t_id, sizeof (unsigned long)) < 0)
if (vapi_read_stream(fd, id, sizeof(unsigned long)) < 0)
return 1;
t_id = htonl (t_id);
if (t_id != id) {
fprintf (stderr, "IDs not the same (got %x, expected %x)\n", t_id, id);
*id = ntohl (*id);
if (vapi_read_stream(fd, data, sizeof(unsigned long)) < 0)
return 1;
}
if (vapi_read_stream(t->fd, data, sizeof (unsigned long)) < 0)
return 1;
*data = htonl (*data);
*data = ntohl (*data);
return 0;
}
 
static void vapi_request (struct vapi_handler *t) {
unsigned long data;
if(read_packet (t->id, &data)) {
if(t->fd) {
static void vapi_request (struct vapi_handler *t)
{
unsigned long id, data;
if (read_packet(t->fd, &id, &data)) {
if (t->fd >= 0) {
perror("vapi read");
close(t->fd);
t->fd = 0;
413,12 → 407,16
return;
}
 
vapi_write_log_file (0, t->id, data);
debug (4, "[%08x, %08x]\n", t->id, data);
if (!t->read_func)
fprintf (stderr, "WARNING: packet sent to undefined id %x, %x\n", t->id, data);
vapi_write_log_file (VAPI_COMMAND_REQUEST, id, data);
debug (4, "[%08x, %08x]\n", id, data);
 
/* This packet may be for another handler */
if (t->id != id)
t = find_handler (id);
if (!t || !t->read_func)
fprintf (stderr, "WARNING: Received packet for undefined id %08x, data %08x\n", id, data);
else
t->read_func(t->id, data);
t->read_func(id, data);
}
 
void vapi_check ()
513,7 → 511,7
fds = 0;
if (runtime.vapi.vapi_file) {
/* Mark end of simulation */
vapi_write_log_file (2, t->id, 0);
vapi_write_log_file (VAPI_COMMAND_END, 0, 0);
fclose (runtime.vapi.vapi_file);
}
 
572,7 → 570,7
int vapi_send (unsigned long id, unsigned long data)
{
debug (4, "vapi_send [%08x %08x]\n", id, data);
vapi_write_log_file (1, id, data);
vapi_write_log_file (VAPI_COMMAND_SEND, id, data);
write_packet (id, data);
}
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.