Practical Real-Time Programming in Userspace
The Linux kernel provides low latency scheduling, suitable for a wide range of multimedia, data acquisition and embedded applications. Making proper use of this functionality in userspace programs requires some insight in in the kernel internals. Unfortunately not many current applications making use of the real-time features of the kernel from userspace "get it right". In this talk I will discuss common mistakes and will introduce a couple of techniques how to better make use of the real-time features. The topics we will cover (or at least touch briefly, time permitting) are:
- threading/concurrent algorithms
- latency
- lock-free algorithms/data structures
- free lists
- lock-free memory allocation
- zero-copy memory management
- real-time scheduling
- portable atomic operations
- real-time event loops
- reference counting
- memory locking
- cache line optimization
- synchronization primitives
- shared memory IPC
- other APIs relevant for real-time hacking
We will discuss which kernel APIs can be used, which APIs should be used and which APIs to avoid when doing real-time programming. Finally, as a real-world example of how to use all these techniques we will show the basic structure of the PulseAudio sound server with a focus on real-time audio processing.
This talk is intended for everyone who is interested in multimedia programming (especially audio), data acquisition or embedded development.
Project: PulseAudio
Lennart Poettering
Born in Guatemala City (Guatemala), raised in Rio de Janeiro (Brazil) and Hamburg (Germany), Lennart Poettering now works as a software engineer in the Red Hat desktop team.
Among other Free Software projects Lennart hacks and maintains the Avahi Zeroconf Implementation (http://avahi.org/) and the PulseAudio sound server (http://pulseaudio.org/), which are now integral part of all major Linux distributions.
His interests in Free Software range from Linux kernel
hacking to low-level systems programming and GNOME desktop
development.
Lennart Poettering
Born in Guatemala City (Guatemala), raised in Rio de Janeiro (Brazil) and Hamburg (Germany), Lennart Poettering now works as a software engineer in the Red Hat desktop team.
Among other Free Software projects Lennart hacks and maintains the Avahi Zeroconf Implementation (http://avahi.org/) and the PulseAudio sound server (http://pulseaudio.org/), which are now integral part of all major Linux distributions.
His interests in Free Software range from Linux kernel
hacking to low-level systems programming and GNOME desktop
development.





