LINUX.ORG.RU

Можно поробовать fcntl с командами F_SETLK, F_SETLKW, F_GETLK с дескриптором порта.

AVI
()

Сначала настроить IO permission map через ioperm(), потом можно из юзерспейса доступаться типа так:

inline void outb(unsigned int port, unsigned int value)
{
asm volatile ("outb %b1, %w0": :"d" (port),"a" (value));
}


int main() {
outb(0x02f8, 0);
}

Я ответил? Если нет специфицируй начальные условия.

Banshee
()

ну значит в чем у меня проблема. у меня есть прога которая работает через COM порт с устройством. Во время работы проги я могу открыть порт из другой прогаммы - никакой ошибки при этом не происходит и в результате начинается неразбериха данные отсылаются а ловит их другая прога и т.д. мне надо чтобы нельзя было открыть порт никому кроме меня то есть сделать монопольный доступ. Это возможно?

anonymous
()
Ответ на: комментарий от anonymous

(1) Можно "лочить" порт. Ну то есть первая программа создает файлик специальный, а вторая его проверяет. Но это не прокатит, если вторая программа не твоя и ничего не знает про то что порт типа "залочен". (2) Посмотреть кто обслуживает компорт. lsmod или cat /proc/interrupts и посмотреть внутрь этого драйвера. Если в нем нет необходимого функционала -- добавить.

Banshee
()
Ответ на: комментарий от Banshee


1. Создать отдельного пользователя com_user
2. Дать permissions для /dev/твой-порт только этому com_user
3. Сделать твою прогу SUID com_user

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.