Потокобезопасность обращения к портам ввода вывода
От: shasa  
Дата: 26.11.13 12:14
Оценка:
Имеем дело с портированием DOS программы на Linux. Работа идёт с аппаратными портами ввода-вывода через вызовы ioperm(..., 0), inb(), inw() и outw(). Внутри процесса к разным портам обращаются несколько потоков, каждый поток работает со своим набором портов, не пересекающимся с наборами портов других потоков процесса. В man нет информации о потоко-безопасности вызовов ioperm(..., 0), inb(), inw() и outw().
Исходя из того, что ioperm работает для всех потоков процесса, то можно предположить, что синхронизация обращений к портам из разных потоков процесса должна ложиться на приложение, поскольку есть только одна шина адреса и данных портов ввода-вывода, а ОС не может различить обращения разных потоков к шине адреса-данных портов ввода-вывода. Это только моё предположение.
Вопрос такой: Нужно ли создать один мьютекс для всех потоков, который потом будет использоваться для синхронизации обращений к портам ввода-вывода.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.