1d6b92ffaSHans Petter Selasky /*
2d6b92ffaSHans Petter Selasky  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
3d6b92ffaSHans Petter Selasky  * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
4d6b92ffaSHans Petter Selasky  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
5d6b92ffaSHans Petter Selasky  *
6d6b92ffaSHans Petter Selasky  * This software is available to you under a choice of one of two
7d6b92ffaSHans Petter Selasky  * licenses.  You may choose to be licensed under the terms of the GNU
8d6b92ffaSHans Petter Selasky  * General Public License (GPL) Version 2, available from the file
9d6b92ffaSHans Petter Selasky  * COPYING in the main directory of this source tree, or the
10d6b92ffaSHans Petter Selasky  * OpenIB.org BSD license below:
11d6b92ffaSHans Petter Selasky  *
12d6b92ffaSHans Petter Selasky  *     Redistribution and use in source and binary forms, with or
13d6b92ffaSHans Petter Selasky  *     without modification, are permitted provided that the following
14d6b92ffaSHans Petter Selasky  *     conditions are met:
15d6b92ffaSHans Petter Selasky  *
16d6b92ffaSHans Petter Selasky  *      - Redistributions of source code must retain the above
17d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
18d6b92ffaSHans Petter Selasky  *        disclaimer.
19d6b92ffaSHans Petter Selasky  *
20d6b92ffaSHans Petter Selasky  *      - Redistributions in binary form must reproduce the above
21d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
22d6b92ffaSHans Petter Selasky  *        disclaimer in the documentation and/or other materials
23d6b92ffaSHans Petter Selasky  *        provided with the distribution.
24d6b92ffaSHans Petter Selasky  *
25d6b92ffaSHans Petter Selasky  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26d6b92ffaSHans Petter Selasky  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27d6b92ffaSHans Petter Selasky  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28d6b92ffaSHans Petter Selasky  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29d6b92ffaSHans Petter Selasky  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30d6b92ffaSHans Petter Selasky  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31d6b92ffaSHans Petter Selasky  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32d6b92ffaSHans Petter Selasky  * SOFTWARE.
33d6b92ffaSHans Petter Selasky  *
34d6b92ffaSHans Petter Selasky  */
35d6b92ffaSHans Petter Selasky 
36d6b92ffaSHans Petter Selasky /*
37d6b92ffaSHans Petter Selasky  * Abstract:
38d6b92ffaSHans Petter Selasky  *	Declaration of timer abstraction.
39d6b92ffaSHans Petter Selasky  */
40d6b92ffaSHans Petter Selasky 
41d6b92ffaSHans Petter Selasky #ifndef _CL_TIMER_H_
42d6b92ffaSHans Petter Selasky #define _CL_TIMER_H_
43d6b92ffaSHans Petter Selasky 
44d6b92ffaSHans Petter Selasky #include <complib/cl_types.h>
45d6b92ffaSHans Petter Selasky 
46d6b92ffaSHans Petter Selasky #ifdef __cplusplus
47d6b92ffaSHans Petter Selasky #  define BEGIN_C_DECLS extern "C" {
48d6b92ffaSHans Petter Selasky #  define END_C_DECLS   }
49d6b92ffaSHans Petter Selasky #else				/* !__cplusplus */
50d6b92ffaSHans Petter Selasky #  define BEGIN_C_DECLS
51d6b92ffaSHans Petter Selasky #  define END_C_DECLS
52d6b92ffaSHans Petter Selasky #endif				/* __cplusplus */
53d6b92ffaSHans Petter Selasky 
54d6b92ffaSHans Petter Selasky BEGIN_C_DECLS
55d6b92ffaSHans Petter Selasky /****h* Component Library/Timer
56d6b92ffaSHans Petter Selasky * NAME
57d6b92ffaSHans Petter Selasky *	Timer
58d6b92ffaSHans Petter Selasky *
59d6b92ffaSHans Petter Selasky * DESCRIPTION
60d6b92ffaSHans Petter Selasky *	The Timer provides the ability to schedule a function to be invoked at
61d6b92ffaSHans Petter Selasky *	a given time in the future.
62d6b92ffaSHans Petter Selasky *
63d6b92ffaSHans Petter Selasky *	The timer callback function must not perform any blocking operations.
64d6b92ffaSHans Petter Selasky *
65d6b92ffaSHans Petter Selasky *	The timer functions operate on a cl_timer_t structure which should be
66d6b92ffaSHans Petter Selasky *	treated as opaque and should be manipulated only through the provided
67d6b92ffaSHans Petter Selasky *	functions.
68d6b92ffaSHans Petter Selasky *
69d6b92ffaSHans Petter Selasky * SEE ALSO
70d6b92ffaSHans Petter Selasky *	Structures:
71d6b92ffaSHans Petter Selasky *		cl_timer_t
72d6b92ffaSHans Petter Selasky *
73d6b92ffaSHans Petter Selasky *	Callbacks:
74d6b92ffaSHans Petter Selasky *		cl_pfn_timer_callback_t
75d6b92ffaSHans Petter Selasky *
76d6b92ffaSHans Petter Selasky *	Initialization:
77d6b92ffaSHans Petter Selasky *		cl_timer_construct, cl_timer_init, cl_timer_destroy
78d6b92ffaSHans Petter Selasky *
79d6b92ffaSHans Petter Selasky *	Manipulation:
80d6b92ffaSHans Petter Selasky *		cl_timer_start, cl_timer_stop
81d6b92ffaSHans Petter Selasky *********/
82d6b92ffaSHans Petter Selasky /****d* Component Library: Timer/cl_pfn_timer_callback_t
83d6b92ffaSHans Petter Selasky * NAME
84d6b92ffaSHans Petter Selasky *	cl_pfn_timer_callback_t
85d6b92ffaSHans Petter Selasky *
86d6b92ffaSHans Petter Selasky * DESCRIPTION
87d6b92ffaSHans Petter Selasky *	The cl_pfn_timer_callback_t function type defines the prototype for
88d6b92ffaSHans Petter Selasky *	functions used to notify users of a timer expiration.
89d6b92ffaSHans Petter Selasky *
90d6b92ffaSHans Petter Selasky * SYNOPSIS
91d6b92ffaSHans Petter Selasky */
92d6b92ffaSHans Petter Selasky typedef void (*cl_pfn_timer_callback_t) (IN void *context);
93d6b92ffaSHans Petter Selasky /*
94d6b92ffaSHans Petter Selasky * PARAMETERS
95d6b92ffaSHans Petter Selasky *	context
96d6b92ffaSHans Petter Selasky *		[in] Value specified in a previous call to cl_timer_init.
97d6b92ffaSHans Petter Selasky *
98d6b92ffaSHans Petter Selasky * RETURN VALUE
99d6b92ffaSHans Petter Selasky *	This function does not return a value.
100d6b92ffaSHans Petter Selasky *
101d6b92ffaSHans Petter Selasky * NOTES
102d6b92ffaSHans Petter Selasky *	This function type is provided as function prototype reference for the
103d6b92ffaSHans Petter Selasky *	function provided by users as a parameter to the cl_timer_init function.
104d6b92ffaSHans Petter Selasky *
105d6b92ffaSHans Petter Selasky * SEE ALSO
106d6b92ffaSHans Petter Selasky *	Timer, cl_timer_init
107d6b92ffaSHans Petter Selasky *********/
108d6b92ffaSHans Petter Selasky 
109d6b92ffaSHans Petter Selasky /*
110d6b92ffaSHans Petter Selasky  * This include file defines the timer structure, and depends on the timer
111d6b92ffaSHans Petter Selasky  * callback definition.
112d6b92ffaSHans Petter Selasky  */
113d6b92ffaSHans Petter Selasky #include <complib/cl_timer_osd.h>
114d6b92ffaSHans Petter Selasky 
115d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_construct
116d6b92ffaSHans Petter Selasky * NAME
117d6b92ffaSHans Petter Selasky *	cl_timer_construct
118d6b92ffaSHans Petter Selasky *
119d6b92ffaSHans Petter Selasky * DESCRIPTION
120d6b92ffaSHans Petter Selasky *	The cl_timer_construct function initializes the state of a timer.
121d6b92ffaSHans Petter Selasky *
122d6b92ffaSHans Petter Selasky * SYNOPSIS
123d6b92ffaSHans Petter Selasky */
124d6b92ffaSHans Petter Selasky void cl_timer_construct(IN cl_timer_t * const p_timer);
125d6b92ffaSHans Petter Selasky /*
126d6b92ffaSHans Petter Selasky * PARAMETERS
127d6b92ffaSHans Petter Selasky *	p_timer
128d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure whose state to initialize.
129d6b92ffaSHans Petter Selasky *
130d6b92ffaSHans Petter Selasky * RETURN VALUE
131d6b92ffaSHans Petter Selasky *	This function does not return a value.
132d6b92ffaSHans Petter Selasky *
133d6b92ffaSHans Petter Selasky * NOTES
134d6b92ffaSHans Petter Selasky *	Allows calling cl_timer_destroy without first calling cl_timer_init.
135d6b92ffaSHans Petter Selasky *
136d6b92ffaSHans Petter Selasky *	Calling cl_timer_construct is a prerequisite to calling any other
137d6b92ffaSHans Petter Selasky *	timer function except cl_timer_init.
138d6b92ffaSHans Petter Selasky *
139d6b92ffaSHans Petter Selasky * SEE ALSO
140d6b92ffaSHans Petter Selasky *	Timer, cl_timer_init, cl_timer_destroy
141d6b92ffaSHans Petter Selasky *********/
142d6b92ffaSHans Petter Selasky 
143d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_init
144d6b92ffaSHans Petter Selasky * NAME
145d6b92ffaSHans Petter Selasky *	cl_timer_init
146d6b92ffaSHans Petter Selasky *
147d6b92ffaSHans Petter Selasky * DESCRIPTION
148d6b92ffaSHans Petter Selasky *	The cl_timer_init function initializes a timer for use.
149d6b92ffaSHans Petter Selasky *
150d6b92ffaSHans Petter Selasky * SYNOPSIS
151d6b92ffaSHans Petter Selasky */
152d6b92ffaSHans Petter Selasky cl_status_t
153d6b92ffaSHans Petter Selasky cl_timer_init(IN cl_timer_t * const p_timer,
154d6b92ffaSHans Petter Selasky 	      IN cl_pfn_timer_callback_t pfn_callback,
155d6b92ffaSHans Petter Selasky 	      IN const void *const context);
156d6b92ffaSHans Petter Selasky /*
157d6b92ffaSHans Petter Selasky * PARAMETERS
158d6b92ffaSHans Petter Selasky *	p_timer
159d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure to initialize.
160d6b92ffaSHans Petter Selasky *
161d6b92ffaSHans Petter Selasky *	pfn_callback
162d6b92ffaSHans Petter Selasky *		[in] Address of a callback function to be invoked when a timer expires.
163d6b92ffaSHans Petter Selasky *		See the cl_pfn_timer_callback_t function type definition for details
164d6b92ffaSHans Petter Selasky *		about the callback function.
165d6b92ffaSHans Petter Selasky *
166d6b92ffaSHans Petter Selasky *	context
167d6b92ffaSHans Petter Selasky *		[in] Value to pass to the callback function.
168d6b92ffaSHans Petter Selasky *
169d6b92ffaSHans Petter Selasky * RETURN VALUES
170d6b92ffaSHans Petter Selasky *	CL_SUCCESS if the timer was successfully initialized.
171d6b92ffaSHans Petter Selasky *
172d6b92ffaSHans Petter Selasky *	CL_ERROR otherwise.
173d6b92ffaSHans Petter Selasky *
174d6b92ffaSHans Petter Selasky * NOTES
175d6b92ffaSHans Petter Selasky *	Allows calling cl_timer_start and cl_timer_stop.
176d6b92ffaSHans Petter Selasky *
177d6b92ffaSHans Petter Selasky * SEE ALSO
178d6b92ffaSHans Petter Selasky *	Timer, cl_timer_construct, cl_timer_destroy, cl_timer_start,
179d6b92ffaSHans Petter Selasky *	cl_timer_stop, cl_pfn_timer_callback_t
180d6b92ffaSHans Petter Selasky *********/
181d6b92ffaSHans Petter Selasky 
182d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_destroy
183d6b92ffaSHans Petter Selasky * NAME
184d6b92ffaSHans Petter Selasky *	cl_timer_destroy
185d6b92ffaSHans Petter Selasky *
186d6b92ffaSHans Petter Selasky * DESCRIPTION
187d6b92ffaSHans Petter Selasky *	The cl_timer_destroy function performs any necessary cleanup of a timer.
188d6b92ffaSHans Petter Selasky *
189d6b92ffaSHans Petter Selasky * SYNOPSIS
190d6b92ffaSHans Petter Selasky */
191d6b92ffaSHans Petter Selasky void cl_timer_destroy(IN cl_timer_t * const p_timer);
192d6b92ffaSHans Petter Selasky /*
193d6b92ffaSHans Petter Selasky * PARAMETERS
194d6b92ffaSHans Petter Selasky *	p_timer
195d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure to destroy.
196d6b92ffaSHans Petter Selasky *
197d6b92ffaSHans Petter Selasky * RETURN VALUE
198d6b92ffaSHans Petter Selasky *	This function does not return a value.
199d6b92ffaSHans Petter Selasky *
200d6b92ffaSHans Petter Selasky * NOTES
201d6b92ffaSHans Petter Selasky *	cl_timer_destroy cancels any pending callbacks.
202d6b92ffaSHans Petter Selasky *
203d6b92ffaSHans Petter Selasky *	This function should only be called after a call to cl_timer_construct
204d6b92ffaSHans Petter Selasky *	or cl_timer_init.
205d6b92ffaSHans Petter Selasky *
206d6b92ffaSHans Petter Selasky * SEE ALSO
207d6b92ffaSHans Petter Selasky *	Timer, cl_timer_construct, cl_timer_init
208d6b92ffaSHans Petter Selasky *********/
209d6b92ffaSHans Petter Selasky 
210d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_start
211d6b92ffaSHans Petter Selasky * NAME
212d6b92ffaSHans Petter Selasky *	cl_timer_start
213d6b92ffaSHans Petter Selasky *
214d6b92ffaSHans Petter Selasky * DESCRIPTION
215d6b92ffaSHans Petter Selasky *	The cl_timer_start function sets a timer to expire after a given interval.
216d6b92ffaSHans Petter Selasky *
217d6b92ffaSHans Petter Selasky * SYNOPSIS
218d6b92ffaSHans Petter Selasky */
219d6b92ffaSHans Petter Selasky cl_status_t
220d6b92ffaSHans Petter Selasky cl_timer_start(IN cl_timer_t * const p_timer, IN const uint32_t time_ms);
221d6b92ffaSHans Petter Selasky /*
222d6b92ffaSHans Petter Selasky * PARAMETERS
223d6b92ffaSHans Petter Selasky *	p_timer
224d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure to schedule.
225d6b92ffaSHans Petter Selasky *
226d6b92ffaSHans Petter Selasky *	time_ms
227d6b92ffaSHans Petter Selasky *		[in] Time, in milliseconds, before the timer should expire.
228d6b92ffaSHans Petter Selasky *
229d6b92ffaSHans Petter Selasky * RETURN VALUES
230d6b92ffaSHans Petter Selasky *	CL_SUCCESS if the timer was successfully scheduled.
231d6b92ffaSHans Petter Selasky *
232d6b92ffaSHans Petter Selasky *	CL_ERROR otherwise.
233d6b92ffaSHans Petter Selasky *
234d6b92ffaSHans Petter Selasky * NOTES
235d6b92ffaSHans Petter Selasky *	cl_timer_start implicitly stops the timer before being scheduled.
236d6b92ffaSHans Petter Selasky *
237d6b92ffaSHans Petter Selasky *	The interval specified by the time_ms parameter is a minimum interval.
238d6b92ffaSHans Petter Selasky *	The timer is guaranteed to expire no sooner than the desired interval, but
239d6b92ffaSHans Petter Selasky *	may take longer to expire.
240d6b92ffaSHans Petter Selasky *
241d6b92ffaSHans Petter Selasky * SEE ALSO
242d6b92ffaSHans Petter Selasky *	Timer, cl_timer_stop, cl_timer_trim
243d6b92ffaSHans Petter Selasky *********/
244d6b92ffaSHans Petter Selasky 
245d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_stop
246d6b92ffaSHans Petter Selasky * NAME
247d6b92ffaSHans Petter Selasky *	cl_timer_stop
248d6b92ffaSHans Petter Selasky *
249d6b92ffaSHans Petter Selasky * DESCRIPTION
250d6b92ffaSHans Petter Selasky *	The cl_timer_stop function stops a pending timer from expiring.
251d6b92ffaSHans Petter Selasky *
252d6b92ffaSHans Petter Selasky * SYNOPSIS
253d6b92ffaSHans Petter Selasky */
254d6b92ffaSHans Petter Selasky void cl_timer_stop(IN cl_timer_t * const p_timer);
255d6b92ffaSHans Petter Selasky /*
256d6b92ffaSHans Petter Selasky * PARAMETERS
257d6b92ffaSHans Petter Selasky *	p_timer
258d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure.
259d6b92ffaSHans Petter Selasky *
260d6b92ffaSHans Petter Selasky * RETURN VALUE
261d6b92ffaSHans Petter Selasky *	This function does not return a value.
262d6b92ffaSHans Petter Selasky *
263d6b92ffaSHans Petter Selasky * SEE ALSO
264d6b92ffaSHans Petter Selasky *	Timer, cl_timer_start, cl_timer_trim
265d6b92ffaSHans Petter Selasky *********/
266d6b92ffaSHans Petter Selasky 
267d6b92ffaSHans Petter Selasky /****f* Component Library: Timer/cl_timer_trim
268d6b92ffaSHans Petter Selasky * NAME
269d6b92ffaSHans Petter Selasky *	cl_timer_trim
270d6b92ffaSHans Petter Selasky *
271d6b92ffaSHans Petter Selasky * DESCRIPTION
272d6b92ffaSHans Petter Selasky *	The cl_timer_trim function pulls in the absolute expiration
273d6b92ffaSHans Petter Selasky *	time of a timer if the current expiration time exceeds the specified
274d6b92ffaSHans Petter Selasky *	interval.
275d6b92ffaSHans Petter Selasky *
276d6b92ffaSHans Petter Selasky *	sets a timer to expire after a given
277d6b92ffaSHans Petter Selasky *	interval if that interval is less than the current timer expiration.
278d6b92ffaSHans Petter Selasky *
279d6b92ffaSHans Petter Selasky * SYNOPSIS
280d6b92ffaSHans Petter Selasky */
281d6b92ffaSHans Petter Selasky cl_status_t
282d6b92ffaSHans Petter Selasky cl_timer_trim(IN cl_timer_t * const p_timer, IN const uint32_t time_ms);
283d6b92ffaSHans Petter Selasky /*
284d6b92ffaSHans Petter Selasky * PARAMETERS
285d6b92ffaSHans Petter Selasky *	p_timer
286d6b92ffaSHans Petter Selasky *		[in] Pointer to a cl_timer_t structure to schedule.
287d6b92ffaSHans Petter Selasky *
288d6b92ffaSHans Petter Selasky *	time_ms
289d6b92ffaSHans Petter Selasky *		[in] Maximum time, in milliseconds, before the timer should expire.
290d6b92ffaSHans Petter Selasky *
291d6b92ffaSHans Petter Selasky * RETURN VALUES
292d6b92ffaSHans Petter Selasky *	CL_SUCCESS if the timer was successfully scheduled.
293d6b92ffaSHans Petter Selasky *
294d6b92ffaSHans Petter Selasky *	CL_ERROR otherwise.
295d6b92ffaSHans Petter Selasky *
296d6b92ffaSHans Petter Selasky * NOTES
297d6b92ffaSHans Petter Selasky *	cl_timer_trim has no effect if the time interval is greater than the
298d6b92ffaSHans Petter Selasky *	remaining time when the timer is set.
299d6b92ffaSHans Petter Selasky *
300d6b92ffaSHans Petter Selasky *	If the new interval time is less than the remaining time, cl_timer_trim
301d6b92ffaSHans Petter Selasky *	implicitly stops the timer before resetting it.
302d6b92ffaSHans Petter Selasky *
303d6b92ffaSHans Petter Selasky *	If the timer is reset, it is guaranteed to expire no sooner than the
304d6b92ffaSHans Petter Selasky *	new interval, but may take longer to expire.
305d6b92ffaSHans Petter Selasky *
306d6b92ffaSHans Petter Selasky * SEE ALSO
307d6b92ffaSHans Petter Selasky *	Timer, cl_timer_start, cl_timer_stop
308d6b92ffaSHans Petter Selasky *********/
309d6b92ffaSHans Petter Selasky 
310d6b92ffaSHans Petter Selasky /****f* Component Library: Time Stamp/cl_get_time_stamp
311d6b92ffaSHans Petter Selasky * NAME
312d6b92ffaSHans Petter Selasky *	cl_get_time_stamp
313d6b92ffaSHans Petter Selasky *
314d6b92ffaSHans Petter Selasky * DESCRIPTION
315d6b92ffaSHans Petter Selasky *	The cl_get_time_stamp function returns the current time stamp in
316d6b92ffaSHans Petter Selasky *	microseconds since the system was booted.
317d6b92ffaSHans Petter Selasky *
318d6b92ffaSHans Petter Selasky * SYNOPSIS
319d6b92ffaSHans Petter Selasky */
320d6b92ffaSHans Petter Selasky uint64_t cl_get_time_stamp(void);
321d6b92ffaSHans Petter Selasky /*
322d6b92ffaSHans Petter Selasky * RETURN VALUE
323d6b92ffaSHans Petter Selasky *	Time elapsed, in microseconds, since the system was booted.
324d6b92ffaSHans Petter Selasky *
325d6b92ffaSHans Petter Selasky * SEE ALSO
326d6b92ffaSHans Petter Selasky *	Timer, cl_get_time_stamp_sec
327d6b92ffaSHans Petter Selasky *********/
328d6b92ffaSHans Petter Selasky 
329d6b92ffaSHans Petter Selasky /****f* Component Library: Time Stamp/cl_get_time_stamp_sec
330d6b92ffaSHans Petter Selasky * NAME
331d6b92ffaSHans Petter Selasky *	cl_get_time_stamp_sec
332d6b92ffaSHans Petter Selasky *
333d6b92ffaSHans Petter Selasky * DESCRIPTION
334d6b92ffaSHans Petter Selasky *	The cl_get_time_stamp_sec function returns the current time stamp in
335d6b92ffaSHans Petter Selasky *	seconds since the system was booted.
336d6b92ffaSHans Petter Selasky *
337d6b92ffaSHans Petter Selasky * SYNOPSIS
338d6b92ffaSHans Petter Selasky */
339d6b92ffaSHans Petter Selasky uint32_t cl_get_time_stamp_sec(void);
340d6b92ffaSHans Petter Selasky /*
341d6b92ffaSHans Petter Selasky * RETURN VALUE
342d6b92ffaSHans Petter Selasky *	Time elapsed, in seconds, since the system was booted.
343d6b92ffaSHans Petter Selasky *
344d6b92ffaSHans Petter Selasky * SEE ALSO
345d6b92ffaSHans Petter Selasky *	Timer, cl_get_time_stamp
346d6b92ffaSHans Petter Selasky *********/
347d6b92ffaSHans Petter Selasky 
348d6b92ffaSHans Petter Selasky END_C_DECLS
349d6b92ffaSHans Petter Selasky #endif				/* _CL_TIMER_H_ */
350