How to trace the source of deadlocks

In this article I explain how you can use the principles of tracing tools to find the sequence of events that lead to a deadlock. A deadlock is a cyclic dependency, for example where action A cannot continue because it is waiting for a resource to be unlocked by action B, however action B is waiting on A before continuing. Deadlocks are one of the many banes of multi-threaded development for dynamically scheduled systems. Even though the locations of the deadlock itself are easy enough to find, establishing how we got to that point is often a harder task.
Read More

Deadline Floor Inheritance Protocol for Earliest Deadline First resource sharing

In a previous posting, I mentioned the Deadline Floor Inheritance Protocol for resource sharing in EDF schedulers. In this blog post, I describe how this works.
Read More

Mark explains what code coverage is for

Mark explains to a friend:
Read More

What's next for Ada?

While the dust settles around the introduction of Ada 2012, it's interesting to see that people are looking forward to what the next version of Ada might bring. At the Ada Europe conference last week, a number of presentations looked at areas that are not currently in the Ada language, which might be worthy candidates for including in the future. Given our own interests in embedded, real-time systems, we naturally focus upon the ones relevant to this area.
Read More

Lesser used PowerPC instructions

We've been looking recently at some object code from an Ada compiler for the PowerPC e500v2 core. As part of this, we examined the distribution of instruction mnemonics in the code generated by this particular use of the compiler on a suite of example programs. The split by type of instruction is roughly as follows: Interestingly, there aren't as many compare operations as we might otherwise expect. This is because xor tends to be used for this instead.
Read More