The code below sets up a simple timer with SIGEV_THREAD. I compiled the code as "g++ timertest.cc -o timertest -lrt -pthread".

Running it on my G5 with 2.6.27 (but with an older glibc), it prints:

Creating timer
Setting timer 268509264 for 5-second expiration...

and then the timer never expires. I have an old Fedora Core 4 x86 machine and there it works as expected.

Is there some hard requirement to upgrade glibc? If not, then this looks like a bug somewhere.

Thanks,

Chris



int main(void)
{
    timer_t  timer_id;
    struct itimerspec    its;
    struct sigevent      se;

    // set timer signal event
    se.sigev_notify = SIGEV_THREAD;
    se.sigev_value.sival_ptr = &timer_id;
    se.sigev_notify_function = handler;
    se.sigev_notify_attributes = NULL;

    if ( timer_create(CLOCK_REALTIME, &se, &timer_id) < 0)
    {
        printf("create timer failed\n");
        fflush(0);
        return 0;
    }

    // set timer.
    its.it_value.tv_sec     = 1;
    its.it_value.tv_nsec    = 0;
    its.it_interval.tv_sec  = 1;
    its.it_interval.tv_nsec = 0;
    if ( timer_settime(timer_id, 0, &its, NULL) < 0)
    {
        printf("set timer failed\n");
        fflush(0);
        return 0;
    }

    printf("set timer OK\n");
    fflush(0);

    while(1)
    {  pause();}
    return 0;
}
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to