Static Race Detection for Periodic Real-Time Programs with IPCP Locks
摘要
Periodic real-time programs are an important class of programs popularly used in industrial automation software and embedded applications. They comprise a set of tasks with associated priorities and periodicities, that are executed according to a priority-based preemptive scheduling policy. These programs are essentially multi-threaded programs, and hence suffer from concurrency issues like data races and deadlocks. In our previous work, we gave a sound and fairly precise way to statically detect data races in such programs, using rules that exploit the timing properties of tasks, apart from standard locks-held based rules. The technique, however, handled only non-nested locks with classical locking semantics, while in practice, especially in the automotive sector, such programs often use locks with the immediate priority ceiling protocol (IPCP) semantics. In this paper we show how to extend the earlier analysis to programs with (possibly nested) IPCP locks. We implement and evaluate our analysis, and show that it improves on the existing technique, as well as the work of Schwarz et al. which targets a similar class of programs.