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

Reply via email to