●Implementation of Concurrent Worker Queues.
●spinlock_t and rwlock_t : In RT linux, they are preemptible.
Therefore ensuring that critical sections are preemptible. It’s also
possible to create non-preemptible versions using
●Converting interrupt handlers into preemptible kernel threads.
●Implement priority-inheritance for in-kernel spinlocks and
semaphores to avoid priority inversion. Default linux doesn’t
RT Patch that we used
was generated on
mainline linux codebase
Patch to be applied on
Dragonboard kernel with SoC
Plus the codebase2 has
Android modifications on
Plus the codebase2
backported some changes
from linux 3.6 to linux 3.4
Challenges post solving merge conflicts
Adding changes introduced by RT patch to SoC specific drivers.
For example: GPU driver (msm_kgsl)
Fixing any build errors for various Preemption models.
No Forced Preemption
This is the traditional Linux preemption model, geared towards
throughput. It will still provide good latencies most of the time, but
there are no guarantees and occasional longer delays are possible.
Voluntary Kernel Preemption
This option reduces the latency of the kernel by adding more
"explicit preemption points" to the kernel code. These new
preemption points have been selected to reduce the maximum
latency of rescheduling, providing faster application reactions,
at the cost of slightly lower throughput.
Preemptible Kernel (Low latency)
This option reduces the latency of the kernel by making all kernel
code (that is not executing in a critical section) preemptible.
Preemptible Kernel (Basic RT)
This option is basically the same as (Low-Latency Desktop) but
enables changes which are preliminary for the full preemptiple RT
Fully Preemptible Kernel (RT)
All and everything is preemptible
Performance Results on