Advertisement
dkonigsberg

qnxtimertest.c

Aug 23rd, 2012
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.53 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <sys/netmgr.h>
  4. #include <sys/neutrino.h>
  5. #include <sys/time.h>
  6.  
  7. #define MY_PULSE_CODE   _PULSE_CODE_MINAVAIL
  8.  
  9. typedef union {
  10.         struct _pulse   pulse;
  11.         /* your other message structures would go
  12.            here too */
  13. } my_message_t;
  14.  
  15. main()
  16. {
  17.    struct sigevent         event;
  18.    struct itimerspec       itime;
  19.    timer_t                 timer_id;
  20.    int                     chid;
  21.    int                     rcvid;
  22.    my_message_t            msg;
  23.    struct timeval          tv;
  24.    time_t                  start_time;
  25.  
  26.    chid = ChannelCreate(0);
  27.  
  28.    event.sigev_notify = SIGEV_PULSE;
  29.    event.sigev_coid = ConnectAttach(ND_LOCAL_NODE, 0,
  30.                                     chid,
  31.                                     _NTO_SIDE_CHANNEL, 0);
  32.    event.sigev_priority = getprio(0);
  33.    event.sigev_code = MY_PULSE_CODE;
  34.    timer_create(CLOCK_MONOTONIC /*CLOCK_REALTIME*/, &event, &timer_id);
  35.  
  36.    itime.it_value.tv_sec = 150;
  37.    itime.it_value.tv_nsec = 0;
  38.    itime.it_interval.tv_sec = 0;
  39.    itime.it_interval.tv_nsec = 0;
  40.    timer_settime(timer_id, 0, &itime, NULL);
  41.  
  42.    gettimeofday(&tv, 0);
  43.    start_time = tv.tv_sec;
  44.    for (;;) {
  45.        rcvid = MsgReceive(chid, &msg, sizeof(msg), NULL);
  46.        if (rcvid == 0) { /* we got a pulse */
  47.             if (msg.pulse.code == MY_PULSE_CODE) {
  48.                 gettimeofday(&tv, 0);
  49.                 printf("Got a pulse: %d seconds\n", (tv.tv_sec - start_time));
  50.                 break;
  51.             }
  52.        }
  53.    }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement