callout api final status report

Prashant Vaibhav pvaibhav at freebsd.org
Mon Aug 24 16:19:10 UTC 2009


Hi All,

At the end of GSoC, I've achieved 2 of the objectives, while the 3rd and the
auxiliary objectives could not be achieved.

In summary:

1. Callout subsystem was redesigned to remove the 'wheel' data structure,
and was replaced with a binary heap. This should be more efficient specially
when rearming existing callouts. Initial testing (outside of kernel) shows
good average O(1) performance for random insertions. The queues (min and max
heap) is generic and can be used by other subsystems within the kernel.

2. A new callout API was written which consolidates many of the functions of
the existing API, in a hardware-independent manner. It is currently
implemented as a wrapper over existing API, both of which co-exist in the
kernel. A demo of its usage can be found in the iwi driver source code,
which was updated to use the new API.

3. To actually make the new API fully hardware independent, kobj is used to
define an interface for hardware timers. Timer hardware will register
themselves with the callout API and one of them can be chosen as the current
timing/callout provider. This part is still in its early stages.

More detailed information can be found at the blog post on
http://freebsd.mercurysquad.com/

Work on the project is expected to continue until all the original goals are
achieved.

Best,
Prashant Vaibhav


More information about the soc-status mailing list