Aggiornato il comment block dei log RCS
[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 devlib/README 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.4  2004/08/25 14:12:09  rasky
17  *#* Aggiornato il comment block dei log RCS
18  *#*
19  *#* Revision 1.3  2004/08/10 05:45:04  bernie
20  *#* Fix spacing in header.
21  *#*
22  *#* Revision 1.2  2004/06/03 11:27:09  bernie
23  *#* Add dual-license information.
24  *#*
25  *#* Revision 1.1  2004/06/03 09:01:06  bernie
26  *#* Import into DevLib.
27  *#*
28  *#*/
29 #ifndef HPTIME_H
30 #define HPTIME_H
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif /* __cplusplus */
35
36 #ifdef _WIN32
37
38         /* type for time expressed in ms */
39         typedef unsigned long mtime_t;
40
41         /* our type for "high precision absolute time" */
42         typedef unsigned __int64 hptime_t;
43
44         #define HPTIME_TICKS_PER_SECOND         ((hptime_t)10000000I64)
45         #define HPTIME_TICKS_PER_MILLISEC       ((hptime_t)10000I64)
46         #define HPTIME_TICKS_PER_MICRO          ((hptime_t)10I64)
47
48 #elif defined(__unix__)
49
50         /* type for time expressed in ms */
51         typedef long mtime_t;
52
53         /* our type for "high precision absolute time" */
54         typedef long long hptime_t;
55
56         #define HPTIME_TICKS_PER_SECOND         ((hptime_t)1000000LL)
57         #define HPTIME_TICKS_PER_MILLISEC       ((hptime_t)1000LL)
58         #define HPTIME_TICKS_PER_MICRO          ((hptime_t)1LL)
59
60 #else /* !__unix__ */
61         #error OS dependent support code missing for this OS
62 #endif /* !__unix__ */
63
64 /*!
65  * Return the current time with the maximum precision made available from the hosting OS
66  */
67 extern hptime_t hptime_get(void);
68
69 #ifdef __cplusplus
70 }
71 #endif /* __cplusplus */
72
73 #endif /* HPTIME_H */