The AVR Threads Library provides basic preemptive multi-threading to the Atmel AVR family of microcontrollers. It is written mostly in C with some assembly language. It implements a simple round-robin style task switcher.
This library provides basic thread start and stop functions, a couple of flavors of mutual exclusion semaphore, and events to help synchronize threads.
I have released this code under the GNU Lesser General Public License with the hope that others might find it useful.