Salutations,
As I've been going through the callout implementation, one thing I've
noticed is that callouts and callout_funcs can't be interleaved.
The implementation of a callout, is that it has an event as the first
element of the structure. When that event is posted to an event queue,
it is posted with the event type EVENT_T_TIMER, which is reserved for
callouts. However, you must know a priori what type of callout it is, a
callout, or a callout_func.
I don't think this behavior is ideal, and there are a couple of options
for fixing it:
1- Break out EVENT_T_TIMER into EVENT_T_TIMER (callout) and
EVENT_T_TIMER_FUNC (callout_func).
2- Remove the concept of callout, and just have callout_func.
callout_func is by far the more useful of the two.
3- Add a flags field to callout, which will tell you whether its a
callout or a callout_func.
I'm leaning towards either #2 or #3 here, because I think the first one
will end up being confusing when debugging things. "Oh no, I put TIMER
instead of TIMER_FUNC. GRR." My personal preference is #2, but I'm not
sure everyone wants to be forced to have a function per-timer in their
task context.
Thoughts?
Sterling
- callout and callout_func Sterling Hughes
-