Here's the good stuff:
I've written my own RTOS's in various languages and SALVO is as good as any. Its full featured and absolutely works as advertised. The few times I have talked to Andrew about problems have been resolved completly.
Using Salvo made an extremly complex industrial control project easy to manage even though I byoassed some of the semaphores and messaging et al.
I confess to just flipping a global bit to indicate a keyboard hit.. etc.
The real Salvo payoffs for me were in the messaging queues (to drive an interminably slow Itron graphics display) and the absolutely invaluable OS_Replace macro. That little puppy allows my users to navigate the entire system using only one task. Sweet. Just swap in little task modules as selected.
Salvo is written to compile on any ANSI compiler. That's fine but IMHO ignores the reality of embedded programming i.e. lots of hardware differences. For example, Salvo requires that all context switches be made at the top stack level because of the vast differences in the availability of the targets. Not a show stopper and in fact hard to do since different processors have different ways to handle the stack (if able at all). But since, I ..KNOW what processor I am using, it would be nice to have the ability to suspend at any stack level, especially since the 18F, and the the 8051 for that matter, have a crude ability to pop the stack into a TCB.
Maybe a compiler-specific library is in order.
All said.. I like Salvo a lot. Its contributed to 2 very successful projects and I have adopted it as a requirement for other clients for their 18F projects until I find something better..
Salvo works. I like it.