LinuxForum.Fans
Тема

spinlock.h

Автор: Merzley 4 сообщений 1480 просмотров
#321054

Доброго времени суток.
Понадобились мне в приложении спинлоки. В системе вообще не оказалось файла spinlock.h. Установил linux headers, подключил заголовочный файл с помощью #include <linxu/spinlock.h> и попытался скомпилировать в месте с -l/usr/src/linux-headers-3.8-2-common-rt/include/. Компилятор ругнулся на #include <asm/bug.h> в файле linux/bug.h - нет такого файла. Добавил при компиляции -l/usr/src/linux-headers-3.2.0-4-common/arch/x86/include/ - файл нашелся, но появилось куча ошибок компиляции везде, где только можно. Буду очень признателен, если кто-нибудь ткнет меня носом где и что я делаю не правильно. Заранее благодарю.

#321061

во-первых, речь о юзерспейсе или ядре?

если первое, то ядро в юзерспейс апи для спинлоков не предоставляет. для синхронизации процессов используй семафоры, для потоков - pthread_spin_lock(). в принципе, если очень нужно синхронизировать через сабж процессы, то должна быть какая-то реализация спинлоков поверх shm'а.

"Merzley⇓" написал:
-l/usr/src/linux-headers-3.8-2-common-rt/include/.

тут, видимо -I, а не -l... в любом случае это должно быть лишним... эти исходники только для ядра... а если разговор всё же о кёрнелспейсе, то ты что-то сильно не правильно собираешь.

#321063

Блин, я идиот. Полез делать что-то не разобравшись полностью вначале. Спинлоки нужны были в юзерспейсе, не в ядре. Везде, где искал информацию по спинлокам натыкался на spinlock.h, а про pthread_spin_lock ни разу даже ничего не увидел. А то, что подключать заголовки ядра в к обычному приложению глупо, как-то только сейчас дошло.
Собственно, маленький вопрос по pthread_spin_lock: эти локи работают без входа в режим ядра, так или нет?
В общем, спасибо большое за ответ. Вы мне очень помогли.

P.S.

"Fat-Zer⇓" написал:
тут, видимо -I, а не -l...

Конечно, -I, а не -l. Очепятка.

#321073
"Merzley⇓" написал:
Собственно, маленький вопрос по pthread_spin_lock: эти локи работают без входа в режим ядра, так или нет?

само собой без...

Войдите или зарегистрируйтесь, чтобы ответить.