2012-04-18 7 views
8

Non sono riuscito a trovare alcuna menzione delle caratteristiche di sicurezza del filo di V4L2, ad eccezione di this e-mail from 2008. Parla del grande blocco del kernel, che immagino sia andato ora, giusto?In che modo thread-safe è V4L2?

Qualcuno ha informazioni aggiornate su questo? Posso ioctl (sto pensando in particolare a VIDIOC_DQBUF e VIDIOC_QBUF) lo stesso descrittore di file V4L2 da più thread senza serializzazione? La discussione sopra citata sembra indicare che la risposta dipende dal guidatore, ma ho pensato di chiedere comunque.

risposta

2

La specifica non indica se V4L2 è thread-safe. Tuttavia sembra che alcune implementazioni siano effettivamente thread-safe.

POSIX.1-2001 e POSIX.1-2008 richiedono che tutte le funzioni specificate nello standard siano thread-safe, tranne alcune funzioni specifiche. ioctl() non è uno di questi, quindi è thread-safe. Tuttavia, ioctl() è un punto di annullamento, quindi il thread può essere terminato quando raggiunge ioctl().

Penso che la soluzione corretta è supporre che V4L2 non sia thread-safe e che esegua il blocco di conseguenza.

+1

Grazie! Avere alcuni punti di merito – gspr