timeout -- execute a function after a specified length of time

Synopsis (Not in current DDI version)

   #include <sys/types.h>
   #include <sys/ddi.h>

int timeout(void (*fn)(), caddr_t arg, long ticks);


timeout schedules the specified function to be called after the time interval specified by ticks. arg will be passed as the only argument to function fn. The timeout call returns immediately without waiting for the specified function to execute.


Function to execute when the time increment expires. The function specified by fn runs in interrupt context in HDK Technical Reference and must not lower the interrupt priority below that specified by the plhi argument." fn will be run at some point after the time interval expires. Like a device interrupt (see intr(D2)), it may need to be deferred until the interrupt priority is dropped to a sufficiently low level. Timer callback functions are only run when the interrupt priority level is plbase; they never interrupt device interrupt handlers.

Argument to the function.

Number of clock ticks to wait before the function is called. The length of time before the function is called is not guaranteed to be exactly equal to the requested time, but will be at least ticks clock ticks in length. If ticks specifies the value zero, this implies that the function should be run as soon as possible.

Return values

If the function specified by fn is successfully scheduled, timeout( ) returns an identifier that can be passed to the untimeout(D3) function to cancel the request. If the function could not be scheduled (because the timeout table is full), the following panic message results:
   PANIC:  Timeout table overflow


Drivers should be careful to cancel any pending timeout functions that access data structures before these structures are de-initialized or deallocated.

Context and synchronization

Non-blockable, interrupt, user, or blockable context.


See the bufcall(D3str) function page for an example of timeout.

Hardware applicability


Version applicability

ddi: 1, 2, 3, 4, 5, 5mp, 6, 6mp

Differences between versions

Beginning with DDI version 7 (and supported beginning with DDI version 3), the itimeout(D3) function replaces the timeout( ) function. itimeout( ) returns an error instead of causing a panic when no more space is available, so drivers can handle the error, which improves system reliability and availability. itimeout( ) also allows the driver to select an interrupt priority other than plhi.

SCO OpenServer provides the timeout(D3oddi) function, which is similar to the DDI timeout( ) function, although the casting of the arguments are different.

SCO OpenServer ODDI compatibility

ODDI drivers use the timeout(D3oddi) or nano_timeout(D3oddi) function for all timeouts.

UDI compatibility

UDI drivers use udi_timer_start( ) in place of timeout( ) and udi_timer_cancel( ) in place of untimeout( ). udi_timer_start_repeating( ) is similar to timeout( ) with the TO_PERIODIC flag.


bufcall(D3str), delay(D3), drv_usectohz(D3), timeout(D3oddi) untimeout(D3)

``Timeouts'' in HDK Technical Reference

19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005