2012-04-18 2 views
8

Я не мог найти упоминания о характеристиках безопасности потока V4L2, за исключением this e-mail from 2008. В нем говорится о большой блокировке ядра, которая, я думаю, сейчас ушла, не так ли?Насколько безопасен поток V4L2?

У кого-нибудь есть обновленная информация об этом? Могу ли я ioctl (я думаю о VIDIOC_DQBUF и VIDIOC_QBUF) тот же дескриптор файла V4L2 из нескольких потоков без сериализации? Вышеприведенное обсуждение, похоже, указывает на то, что ответ зависит от водителя, но я думал, что все равно спрошу.

ответ

2

В спецификации не упоминается, является ли V4L2 потокобезопасным. Однако кажется, что некоторые реализации на самом деле являются потокобезопасными.

POSIX.1-2001 и POSIX.1-2008 требуют, чтобы все функции, указанные в стандарте, были потокобезопасными, за исключением некоторых конкретных функций. ioctl() не является одним из них, поэтому он является потокобезопасным. Однако ioctl() является точкой отмены, поэтому поток может быть прерван после достижения ioctl().

Я считаю, что правильное решение состоит в том, чтобы предположить, что V4L2 не является потокобезопасным и соответственно блокирует блокировку.

+1

Спасибо! У вас есть несколько очков бонусов. – gspr