Replaced ISLISTEMPTY with LIST_EMPTY
[bertos.git] / os / hptime.h
1 /**
2  * \file
3  * <!--
4  * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
5  * This file is part of DevLib - See README.devlib for information.
6  * -->
7  *
8  * \brief Portable abstraction for high-resolution time handling (interface)
9  *
10  * \version $Id$
11  * \author Bernardo Innocenti <bernie@develer.com>
12  */
13
14 /*#*
15  *#* $Log$
16  *#* Revision 1.9  2006/07/19 12:53:58  bernie
17  *#* Documentation fixes.
18  *#*
19  *#* Revision 1.8  2006/02/20 01:46:46  bernie
20  *#* Port to MacOSX.
21  *#*
22  *#* Revision 1.7  2006/01/16 03:28:25  bernie
23  *#* Remove redundant mtime_t definition (cfg/compiler.h has one already).
24  *#*
25  *#* Revision 1.6  2005/11/27 03:57:22  bernie
26  *#* Use C99 types to match cfg/compiler.h without depending on it.
27  *#*
28  *#* Revision 1.5  2005/11/04 16:20:02  bernie
29  *#* Fix reference to README.devlib in header.
30  *#*
31  *#* Revision 1.4  2004/08/25 14:12:09  rasky
32  *#* Aggiornato il comment block dei log RCS
33  *#*
34  *#* Revision 1.3  2004/08/10 05:45:04  bernie
35  *#* Fix spacing in header.
36  *#*
37  *#* Revision 1.2  2004/06/03 11:27:09  bernie
38  *#* Add dual-license information.
39  *#*
40  *#* Revision 1.1  2004/06/03 09:01:06  bernie
41  *#* Import into DevLib.
42  *#*
43  *#*/
44 #ifndef HPTIME_H
45 #define HPTIME_H
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif /* __cplusplus */
50
51 #ifdef _WIN32
52
53         /** our type for "high precision absolute time" */
54         typedef __int64 hptime_t;
55
56         #define HPTIME_TICKS_PER_SECOND         ((hptime_t)10000000I64)
57         #define HPTIME_TICKS_PER_MILLISEC       ((hptime_t)10000I64)
58         #define HPTIME_TICKS_PER_MICRO          ((hptime_t)10I64)
59
60 #elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
61
62         #include <stdint.h>
63
64         /** Type for "high precision absolute time". */
65         typedef int64_t hptime_t;
66
67         #define HPTIME_TICKS_PER_SECOND         1000000LL
68         #define HPTIME_TICKS_PER_MILLISEC       1000LL
69         #define HPTIME_TICKS_PER_MICRO          1LL
70
71 #else /* !__unix__ */
72         #error OS dependent support code missing for this OS
73 #endif /* !__unix__ */
74
75 /**
76  * Return the current time with the maximum precision made available from the hosting OS
77  */
78 extern hptime_t hptime_get(void);
79
80 #ifdef __cplusplus
81 }
82 #endif /* __cplusplus */
83
84 #endif /* HPTIME_H */