Re: Поведение libc

2007-06-22 Пенетрантность Max Dmitrichenko
В сообщении от 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

2007-06-22 Пенетрантность Max Dmitrichenko
В сообщении от 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

2007-06-21 Пенетрантность Yuri Kozlov

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