Всем привет!
Создаю семафор в ядре, точнее в функции fs/read_write.c, чтобы обезопасить работу своего кода в многопоточной среде. Каждый раз мне возвращается новый семафор... Почему, ведь IPC_EXCL говорит, что если создан семафор, то вернется ошибка и в этом случае я буду работать с уже существующим семафором...
смотрю ipcs -s - семафор создан.
int sid;
union semun semopts;
semopts.val = 1;
struct sembuf sem_lock;
key_t sem_key=16384;
if ((sid = sys_semget( sem_key, 1, IPC_CREAT | IPC_EXCL | 0666 )) != -1)
{
sys_semctl(sid, 0, SETVAL, semopts);
printk(KERN_ERR «\nsys_semget create new \n»);
}
else
sid = sys_semget( sem_key, 1, 0666 );
дальше делаю lock
sem_lock.sem_num =0;
sem_lock.sem_op =-1;
sem_lock.sem_flg =0;
sys_semop(sid, &sem_lock, 1);
потом unlock
struct sembuf sem_unlock;
sem_unlock.sem_num =0;
sem_unlock.sem_op = 1;
sem_unlock.sem_flg =0;
sys_semop(sid, &sem_unlock, 1);
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Семафоры (2005)
- Форум Семафоры (2003)
- Форум Вопрос по семафорам (2002)
- Форум Ошибка: undefined reference to 'shm_unlink' (2010)
- Форум Использовать семафоры для взаимного исключения (2018)
- Форум Семафоры, не правильное отображение строки , язык си (2012)
- Форум Не отправляется сообщение через Message Queue (IPC) (2011)
- Форум семафоры (2005)
- Форум семафоры (2006)
- Форум семафоры (2005)