Subject: order of callout expiry
To: None <tech-kern@netbsd.org>
From: David Laight <david@l8s.co.uk>
List: tech-kern
Date: 09/09/2002 15:54:36
I have been thinking about a slight difference between the
standard callout(9) code and the version I'm running on this
system - which I may put forward in a CP [1].
Is the order in which callouts that expire on the same tick
required to be well defined?
Is LIFO queuing of callouts allowed?
For instance if a function contains:
callout_reset(&c1, n, f1, 0);
callout_reset(&c2, n, f2, 0);
Is it valid for f2() to be called before f1()?
The current implementation guarantees this...
Also what if there is an intermediate timeout, eg:
void f1(void *a) { callout_reset(&c1, n, f3, 0); }
...
callout_reset(&c1, n, f1, 0);
callout_reset(&c2, n*2, f2, 0);
Can f3() be called before f2()?
David
[1] Has a smaller data footprint, shorter code paths and
is o(n.Log(time)), current code is o(n.time).
I've also removed the (semi)splurious dependency on NPROC.
--
David Laight: david@l8s.co.uk