Project

General

Profile

Statistics
| Revision:

root / branches / simulator / projects / simulator / libsim / libsim.c @ 1064

History | View | Annotate | Download (1015 Bytes)

1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <sys/time.h>
4
#include <signal.h>
5
#include <unistd.h>
6
#include <stdlib.h>
7
#include <sys/shm.h>
8
#include <sys/ipc.h>
9
#include <robot_shared.h>
10
#include <string.h>
11

    
12
#define TICK_USEC 100
13

    
14
RobotShared* shared_state;
15

    
16
void tick(int sig)
17
{
18
  if(raise(SIGTSTP)<0)
19
    printf("could not kill self!\n");
20
}
21

    
22

    
23
void dragonfly_init(int config)
24
{
25
  struct itimerval iv;
26
  int ret;
27

    
28
  shared_state = shmat(atoi(getenv("memory_id")), NULL, 0);
29

    
30
  if(shared_state < 0)
31
  {
32
    fprintf(stderr, "unable to get shared memory region\n");
33
    return;
34
  }
35

    
36
                                             
37
  //printf("hello. I am a robot w/ memory_id %s\n", getenv("memory_id"));
38

    
39

    
40
  iv.it_interval.tv_sec = 0;
41
  iv.it_interval.tv_usec = TICK_USEC;
42
  iv.it_value.tv_sec = 0;
43
  iv.it_value.tv_usec = TICK_USEC;
44

    
45
  signal(SIGVTALRM, tick);
46

    
47
  ret = setitimer(ITIMER_VIRTUAL, &iv, NULL);
48

    
49
  //printf("setitimer returned %d.\n waiting...\n", ret);
50
  fflush(stdout);
51

    
52
  //TODO: clean up code??
53

    
54
}
55