Sharing Userspace IO Devices for fast access to multimedia hardware
Channel: Linux.conf.au 2010 -- Wellington, New Zealand
Date: 2014-12-05

Presenter(s): Conrad Parker
URL: http://2010.linux.conf.au/programme/schedule/view_talk/50315

UIO is a Linux kernel interface for accessing devices, such that the driver logic can be implemented in userspace. It is very lightweight, and provides no mechanisms for co-ordinating access to the device, or management of resources associated with it.We introduce UIOMux: a resource management layer for UIO devices, providing fine-grained locking, memory management and interrupt dispatch. It is used in the Linux multimedia architecture for SH-Mobile, a system-on-chip with video compression and image manipulation functions. An example will be given for managing an image rescaling and colorspace conversion hardware unit (VEU). We demonstrate how multiple VEUs can be shared, how the driver logic is implemented as a shared library (libshveu), and how this is used in higher level software such as GStreamer plugins. This architecture allows coordination of access to multiple hardware units, so that zero-copy pipelines combining the VEU with camera capture and hardware video encoding/decoding can be constructed by conventional GStreamer applications.UIOMux is implemented as a stateful shared library, allowing in-process device access by applications without context-switching. We'll consider the advantages and disadvantages of this approach, and make comparisons with in-kernel resource management and persistent dbus services.

http://lca2010.linux.org.au - http://www.linux.org.au
CC BY-SA - http://creativecommons.org/licenses/by-sa/4.0/legalcode.txt