Hallo, für eine Anwendung in C benötige ich einen Softwaretimer. Der Handler "timer_handler" wird allerdings nicht jede 10ms ausgeführt. Der Timer läuft viel langsamer.
1 | void timer_handler (int signum) |
2 | {
|
3 | /* do something */
|
4 | }
|
5 | |
6 | void Init(void) |
7 | {
|
8 | struct sigaction sa; |
9 | struct itimerval timer; |
10 | |
11 | /* Installiere timer_handler als Signal Handler fuer SIGVTALRM. */
|
12 | memset(&sa, 0, sizeof (sa)); |
13 | sigemptyset(&sa.sa_mask); |
14 | sa.sa_handler = &timer_handler; |
15 | sigaction(SIGVTALRM, &sa, NULL); |
16 | |
17 | /* Timer konfigurieren fuer 10 ms ... */
|
18 | timer.it_value.tv_sec = 0; |
19 | timer.it_value.tv_usec = 10000; |
20 | |
21 | /* ... und alle 10 ms danach */
|
22 | timer.it_interval.tv_sec = 0; |
23 | timer.it_interval.tv_usec = 10000; |
24 | |
25 | /* Timer starten */
|
26 | setitimer(ITIMER_VIRTUAL, &timer, NULL); |
27 | }
|