Tuesday, October 11, 2016 • 16:40 - 17:30
The pthread condvar uses internal locking which is not configurable for PI. Using condvars in real-time applications can therefor lead to non-intuitive unbounded priority inversions, despite the use of a PI mutex. Patches to glibc have provided non-POSIX (-np) extensions to the condvar implementation, allowing the condvar to be configured for PI. While these patches are broadly used with the PREEMPT_RT Linux kernel, they have not yet made it into the upstream glibc sources.
Concurrently, the glibc implementation of condvars was found to be non-compliant with POSIX, which has lead to the development of a new condvar algorithm, which makes it impossible to support PI using the existing operations. While a solution has not yet been identified, there are possibilities involving modifying existing operation or introducing new PI futex operation which merit discussion.
We are soliciting input on implementation from kernel developers with experience in core locking mechanisms (futex, rt-mutex, etc.) as well as system library developers, and real-time applications developers. The focus of the presentation is discussion of potential paths to a solution which is POSIX compliant for the core and supports Priority Inheritance.
Darren's focus is Intel Architecture in embedded, real-time, and safety critical applications. He is the Linux kernel maintainer for x86 platform drivers and represents Intel to the LF Real-Time Linux Project, and the OSADL SIL2LinuxMP project. He previously served as the MinnowBoard program architect for 4 years, providing technical technical direction to the original MinnowBoard, MAX, and Turbot boards. As the Yocto Project BSP technical lead, he redesigned the BSPs for Intel processors and wrote the manual for Yocto Project kernel development. Prior to Intel, Darren led the Real-Time Linux development team at IBM for 6 years where he focused on real-time scheduling and IPC mechanisms.
Torvald works for Red Hat's Platform Toolchain Team, focusing on parallelism and concurrency. Recently, he has been revising the implementations of most of the POSIX Threads synchronization data structures in glibc and contributed to the improvement of the futex manpages. He holds a PhD for his work on shared-memory synchronization.