Re: Поведение libc
В сообщении от 21 Июнь 2007 18:50 Max Dmitrichenko написал(a): > > Если её скомпилировать и слиноковать динамически с libc и librt, то все > работает. > Если же это делать статически, то timer_create возвращает EINVAL, при этом, > если > заменить CLOCK_MONOTONIC на CLOCK_REALTIME, то все опять работает. То есть > статическая > версия libc почему-то не хочет создавать таймер, привязанный к > CLOCK_MONOTONIC, > однако clock_getres работает для обоих типов линковки и с CLOCK_MONOTONIC, и > с CLOCK_REALTIME. > > Проверено и в sarge, и в ethc. Кто-нибудь скажет, чем обусловлено такое > поведение? Пытаюсь уже сам понять, ковыряясь в исходниках glibc. Только там как минимум две реализации функции timer_create: 1) nptl/sysdeps/pthread/timer_create.c 2) nptl/sysdeps/unix/sysv/linux/timer_create.c Как понять которая из них используется? Тут есть вообще кто-нибудь, кто эти таймеры использовал? -- Макс -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Поведение libc
В сообщении от 21 Июнь 2007 21:23 Yuri Kozlov написал(a): > Я, конечно, не силён в этом, но судя по > > http://www.opengroup.org/pubs/online/7908799/xsh/timer_create.html > > CLOCK_REALTIME должен быть реализован везде, а остальное никто > не обещал. :) > Что и говорит ошибка > [EINVAL] > The specified clock ID is not defined. На мой взгляд CLOCK_MONOTONIC должен быть либо реализован во всех функциях, либо нигде. А получается что clock_getres работает всегда, а timer_create только когда прилинковано динамически. Кроме того, CLOCK_MONOTONIC очевидно есть в 2.6 ядре. А в 2.4 POSIX Real Time не поддержан вообще. -- Макс -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Поведение libc
21.06.07, Max Dmitrichenko<[EMAIL PROTECTED]> написал(а): Привет всем! Столкнулся с проблемой и не знаю от чего она и как её побороть. Если же это делать статически, то timer_create возвращает EINVAL, при этом, если заменить CLOCK_MONOTONIC на CLOCK_REALTIME, то все опять работает. То есть статическая версия libc почему-то не хочет создавать таймер, привязанный к CLOCK_MONOTONIC, однако clock_getres работает для обоих типов линковки и с CLOCK_MONOTONIC, и с CLOCK_REALTIME. Проверено и в sarge, и в ethc. Кто-нибудь скажет, чем обусловлено такое поведение? Я, конечно, не силён в этом, но судя по http://www.opengroup.org/pubs/online/7908799/xsh/timer_create.html CLOCK_REALTIME должен быть реализован везде, а остальное никто не обещал. :) Что и говорит ошибка [EINVAL] The specified clock ID is not defined. -- Regards, Yuri Kozlov
Поведение libc
Привет всем! Столкнулся с проблемой и не знаю от чего она и как её побороть. Вот тупая программа: #include #include #include void my_alarm(sigval_t t) { return; } int main(int argc, char** argv) { int rc; struct sigevent sigevent; timer_t tmrid; sigevent.sigev_notify= SIGEV_THREAD; sigevent.sigev_value.sival_ptr = 0; sigevent.sigev_notify_function = my_alarm; sigevent.sigev_notify_attributes = 0; rc = timer_create(CLOCK_MONOTONIC, &sigevent, &tmrid); if (rc == -1) { perror("Error"); return 1; } return 0; } Если её скомпилировать и слиноковать динамически с libc и librt, то все работает. Если же это делать статически, то timer_create возвращает EINVAL, при этом, если заменить CLOCK_MONOTONIC на CLOCK_REALTIME, то все опять работает. То есть статическая версия libc почему-то не хочет создавать таймер, привязанный к CLOCK_MONOTONIC, однако clock_getres работает для обоих типов линковки и с CLOCK_MONOTONIC, и с CLOCK_REALTIME. Проверено и в sarge, и в ethc. Кто-нибудь скажет, чем обусловлено такое поведение? -- Макс -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]