LINUX.ORG.RU

POSIX семафор


0

0
Подскажите реализован ли сабж, если да то как им пользоваться.
Беру пример из Стивенса.
Компилится без проблем, при запуске получаю сообщение
sem_open: Function not implemented

AFAIK нет в Linux POSIX semaphores... и POSIX message queues нет... ставь Solaris и забудешь про геморрой ;-)
anonymous
()
реализованы в NPTL. в linuxthreads, кажется, тоже.
idle ★★★★★
()
Смотрю /usr/include/semaphore.h и вижу, что реализация есть.
Компиляция проходит, значит синтаксис вызова правильный.
Линкуется с ключиком -lrt. Получается, что проблема у меня
в ядре, поскольку ошибка вылазит при запуске. Смотрю конфиг
и в упор не вижу ничего кроме SYSV IPC.

Пытаюсь нагуглить решение - безуспешно. Где включаются эти
posix-семафоры в ядре?
sts
() автор топика
Ответ на: комментарий от binr
2binr

Нашёл твой пост. Там у тебя были проблемы с shm насколько я понял и семафоры не posix, а sysv? Всё-таки хочется posix-а.
sts
() автор топика

То, что в системе есть соответствующие *.h файлы
еще не означает, что семафоры и очереди поддерживаются.

Наоборот - ошибка ENOSYS как раз и означает, что
функция не поддерживается.

Не знаю, как в 2.6 и NPTL, но в 2.4.x message queues
не было - были сторонние патчи разной степени кривизны.

2 OP: groups.google.com в руки.
anonymous
()
Ответ на: комментарий от anonymous
А попробуй смонтировать файловую систему tmpfs into /dev/shm. Используемые мной Posix ф-и после етого вместо возврата ENOSYS стали нормально работать.
cvv ★★★★★
()
Ответ на: комментарий от cvv
2cvv

#cat /etc/fstab
...
tmpfs  /dev/shm   tmpfs   defaults   0 0
...

С shm всё в порядке - пишется, читается. А в твоём случае
posix-функции это семафоры в том числе? 
sts
() автор топика
Ответ на: комментарий от sts
второй раз пишу. реализованы в libpthreads,
nptl точно, в linuxthreads не знаю до какой
степени.

реализация использует SHMFS, должна быть
примонтирована.
idle ★★★★★
()
Ответ на: комментарий от sts
Нет. Я юзал только шаренную память и поначалу встретил туже проблему. Семафоры я не юзал. Вместо них я юзал файловые блокировки так как надо было синхронизировать процессы.
cvv ★★★★★
()
Ответ на: комментарий от idle
2idle

sem_open() точно отсутствует. Если вместо неё пользовать sem_init(),
то работает. Все функции из glibc которые есть по ссылке работают.
Остальные видимо пока ещё не реализованы. Сейчас мне этого достаточно.
Спасибо.
sts
() автор топика
Ответ на: комментарий от sts
2 sts.

достаточно, так достаточно, но имейте в виду, что
nptl она точно _есть_ :)) у меня код перед глазами
idle ★★★★★
()
Ответ на: комментарий от idle
Ага, вижу;))) Забыл установить nptl-devel, поэтому сразу не нашёл.
sts
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.