NAME | SYNOPSIS | API RESTRICTIONS | FEATURES | DESCRIPTION | RETURN VALUES | ERRORS | ATTRIBUTES | SEE ALSO
#include <exec/chTimeout.h>int svSysTimeoutSet(KnTimeout * timeout, KnTimeVal * waitLimit, int flag, KnLapDesc * lapdesc);
The function or functions documented here may not be used safely in all application contexts with all APIs provided in the ChorusOS 5.0 product.
See API(5FEA) for details.
TIMEOUT
The svSysTimeoutSet() system call declares lapdesc as the descriptor of a raw LAP (see svLapCreate(2K) ), which must be invoked when the interval of time specified by *waitLimit (see intro(2K) ) has elapsed.
The waitLimit pointer argument refers to a KnTimeVal structure whose members are defined in sysTime(2K) . If the KnTimeVal structure indicated by waitLimit is not equal to the resolution , the time value composed of the tmSec and tmNSec fields is rounded. The fields are rounded down to the nearest multiple of the values in resolution unless the time is zero, in which case they are rounded up to the values in resolution .
The LAP handler of the lapdesc descriptor is a special kind of interrupt handler which is executed solely in SUPERVISOR execution mode. Its code and accessed data must be within the locked-in-memory regions of a SUPERVISOR actor. The set of microkernel calls that can be used in this timeout handler is limited, as for any interrupt handler.
The argument passed to the LAP handler is the timeout parameter specified by svSysTimeoutSet() . Fields within the KnTimeout structure are initialized and modified solely within the microkernel and are inaccessible to the application.
The flag argument is reserved for future use and should therefore be set to 0 to ensure compatibility with future releases of the system.
The svSysTimeoutCancel() system call attempts to cancel a timeout request. It takes as an argument the address of the KnTimeout object used in the call to svSysTimeoutSet() . If the timeout request is still pending, it is immediately canceled and a value is returned showing that the timer had not yet expired. Otherwise, the timeout interval had expired and the timeout handler was called, in which case nothing occurs and the value returned indicates this.
The svTimeoutGetRes() system call obtains the resolution of the *waitLimit argument of svSysTimeoutSet() . The time value returned in resolution represents the smallest possible difference between two distinct *waitLimit values.
The svSysTimeoutSet() , svTimeoutGetRes() and svSysTimeoutCancel() system calls are restricted to SUPERVISOR threads.
The svSysTimeoutSet() system call must not be called using a KnTimeout which has an existing timeout pending (use svSysTimeoutCancel() to cancel the request first).
On completion, svSysTimeoutSet() returns K_OK if the timeout was successfully entered. Otherwise, a negative error code is returned specifying the reason it was not successful. On completion, svSysTimeoutCancel() returns a boolean value set to 1 if the request was still pending, or 0 if the timeout handler was called.
The *waitLimit value specified is invalid, or lapdesc is not a valid raw lap descriptor.
The value indicated by *waitLimit is invalid if either the tmSec or tmNSec fields of the structure are negative, or if the structure is poorly constructed (for example, if the number of nanoseconds in tmNSec makes tmNSec greater than one second).
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | API RESTRICTIONS | FEATURES | DESCRIPTION | RETURN VALUES | ERRORS | ATTRIBUTES | SEE ALSO