Revision 986
moved stuff from robot_test into libsim.c
libsim now contains the timer (pause/resume) stuff
Also commented andrew's code because it broke the build
libsim.c | ||
---|---|---|
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> |
|
1 | 11 |
|
12 |
|
|
13 |
//RobotShared* shared_state; |
|
14 |
|
|
15 |
void *tick(int sig) |
|
16 |
{ |
|
17 |
printf("robot process paused. suspending\n"); |
|
18 |
|
|
19 |
//shared_state->motor1++; |
|
20 |
|
|
21 |
if(raise(SIGTSTP)<0) |
|
22 |
printf("could not kill self!\n"); |
|
23 |
|
|
24 |
printf("robot resumed\n"); |
|
25 |
|
|
26 |
return NULL; |
|
27 |
} |
|
28 |
|
|
29 |
|
|
2 | 30 |
void dragonfly_init(int config) |
3 | 31 |
{ |
32 |
struct itimerval iv; |
|
33 |
int ret; |
|
4 | 34 |
|
35 |
/*shared_state = shmat(atoi(envp[0]), NULL, 0); |
|
36 |
if(shared_state < 0) |
|
37 |
{ |
|
38 |
printf("unable to get shared memory region\n"); |
|
39 |
return 1; |
|
40 |
}*/ |
|
41 |
|
|
42 |
|
|
43 |
printf("hello. I am a robot w/ memory_id %s\n", getenv("memory_id")); |
|
44 |
|
|
45 |
|
|
46 |
iv.it_interval.tv_sec = 1; |
|
47 |
iv.it_interval.tv_usec = 0; |
|
48 |
iv.it_value.tv_sec = 3; |
|
49 |
iv.it_value.tv_usec = 0; |
|
50 |
|
|
51 |
signal(SIGVTALRM, tick); |
|
52 |
|
|
53 |
ret = setitimer(ITIMER_VIRTUAL, &iv, NULL); |
|
54 |
|
|
55 |
printf("setitimer returned %d.\n waiting...\n", ret); |
|
56 |
fflush(stdout); |
|
57 |
|
|
58 |
//TODO: clean up code?? |
|
59 |
|
|
5 | 60 |
} |
6 | 61 |
|
Also available in: Unified diff