What should you be asking yourself is if you need a separate thread for this.
By the way there is no need to expose any of this in your drivers C file. You just simply make a routine that say messages the LED blink pattern to where it needs to be. That way in other parts of your code you just call that routine and not worry about how it does that.
I know what you're saying on the need of a thread or not. In this case, yes, on certain components I absolutely must have a thread. One of the SPI devices is sort-of another processor. The data coming in on a couple of the busses is bi-directional and responses are based on logic. In the case of one of the busses, I'll have at least two threads sharing access on that. If I could get by with just making function calls, I'd love that.
As to the driver's C wrapping up into my threads... My SPI driver is RTOS-aware, so my driver now also must be RTOS aware. I'm not dealing with the SPI hardware directly just because of timing and I have a working solution already laid out for me.
I'm not using global for the bulk of the message transfer, but what I am doing with mail/messages is massively more complex than just doing it dirty. I'm skeptical it's entirely with merit.