1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#ifndef CYGONCE_POSIX_TIME_H
#define CYGONCE_POSIX_TIME_H
/*=============================================================================
//
// time.h
//
// POSIX time header
//
//=============================================================================
// ####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later
// version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License
// along with eCos; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// As a special exception, if other files instantiate templates or use
// macros or inline functions from this file, or you compile this file
// and link it with other works to produce a work based on this file,
// this file does not by itself cause the resulting work to be covered by
// the GNU General Public License. However the source code for this file
// must still be made available in accordance with section (3) of the GNU
// General Public License v2.
//
// This exception does not invalidate any other reasons why a work based
// on this file might be covered by the GNU General Public License.
// -------------------------------------------
// ####ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): nickg
// Contributors: nickg, jlarmour
// Date: 2000-03-17
// Purpose: POSIX time header
// Description: This header contains all the definitions needed to support
// the POSIX timer and timer API under eCos.
//
// Usage: Do not include this file directly - instead include <time.h>
//
//
//####DESCRIPTIONEND####
//
//===========================================================================*/
#include <pkgconf/posix.h>
#include <cyg/infra/cyg_type.h>
/*---------------------------------------------------------------------------*/
/* Types for timers and clocks */
typedef int clockid_t;
#ifdef CYGPKG_POSIX_TIMERS
typedef int timer_t;
/* forward declaration - if the app uses it it will have to include
* signal.h anyway
*/
struct sigevent;
#endif
/*---------------------------------------------------------------------------*/
/* Structures */
struct timespec
{
time_t tv_sec;
long tv_nsec;
};
#ifdef CYGPKG_POSIX_TIMERS
struct itimerspec
{
struct timespec it_interval;
struct timespec it_value;
};
#endif
/*---------------------------------------------------------------------------*/
/* Manifest constants */
#define CLOCK_REALTIME 0
#ifdef CYGPKG_POSIX_TIMERS
#define TIMER_ABSTIME 1
#endif
/*---------------------------------------------------------------------------*/
/* Clock functions */
/* Set the clocks current time */
__externC int clock_settime( clockid_t clock_id, const struct timespec *tp);
/* Get the clocks current time */
__externC int clock_gettime( clockid_t clock_id, struct timespec *tp);
/* Get the clocks resolution */
__externC int clock_getres( clockid_t clock_id, struct timespec *tp);
/*---------------------------------------------------------------------------*/
/* Timer functions */
#ifdef CYGPKG_POSIX_TIMERS
/* Create a timer based on the given clock. */
__externC int timer_create( clockid_t clock_id,
struct sigevent *evp,
timer_t *timer_id);
/* Delete the timer */
__externC int timer_delete( timer_t timer_id );
/* Set the expiration time of the timer. */
__externC int timer_settime( timer_t timerid, int flags,
const struct itimerspec *value,
struct itimerspec *ovalue );
/* Get current timer values */
__externC int timer_gettime( timer_t timerid, struct itimerspec *value );
/* Get number of missed triggers */
__externC int timer_getoverrun( timer_t timerid );
#endif
/*---------------------------------------------------------------------------*/
/* Nanosleep */
/* Sleep for the given time. */
__externC int nanosleep( const struct timespec *rqtp,
struct timespec *rmtp);
/*---------------------------------------------------------------------------*/
#endif /* ifndef CYGONCE_POSIX_TIME_H */
/* End of time.h */
|