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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.