OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [conts/] [posix/] [libposix/] [include/] [posix/] [time.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006
2
        Free Software Foundation, Inc.
3
   This file is part of the GNU C Library.
4
 
5
   The GNU C Library is free software; you can redistribute it and/or
6
   modify it under the terms of the GNU Lesser General Public
7
   License as published by the Free Software Foundation; either
8
   version 2.1 of the License, or (at your option) any later version.
9
 
10
   The GNU C Library is distributed in the hope that it will be useful,
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
   Lesser General Public License for more details.
14
 
15
   You should have received a copy of the GNU Lesser General Public
16
   License along with the GNU C Library; if not, write to the Free
17
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18
   02111-1307 USA.  */
19
 
20
/*
21
 *      ISO C99 Standard: 7.23 Date and time    <time.h>
22
 */
23
 
24
#ifndef _TIME_H
25
 
26
#if (! defined __need_time_t && !defined __need_clock_t && \
27
     ! defined __need_timespec)
28
# define _TIME_H        1
29
# include <features.h>
30
 
31
__BEGIN_DECLS
32
 
33
#endif
34
 
35
#ifdef  _TIME_H
36
/* Get size_t and NULL from <stddef.h>.  */
37
# define __need_size_t
38
# define __need_NULL
39
# include <stddef.h>
40
 
41
/* This defines CLOCKS_PER_SEC, which is the number of processor clock
42
   ticks per second.  */
43
# include <bits/time.h>
44
 
45
/* This is the obsolete POSIX.1-1988 name for the same constant.  */
46
# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K
47
#  ifndef CLK_TCK
48
#   define CLK_TCK      CLOCKS_PER_SEC
49
#  endif
50
# endif
51
 
52
#endif /* <time.h> included.  */
53
 
54
#if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t)
55
# define __clock_t_defined      1
56
 
57
# include <bits/types.h>
58
 
59
__BEGIN_NAMESPACE_STD
60
/* Returned by `clock'.  */
61
typedef __clock_t clock_t;
62
__END_NAMESPACE_STD
63
#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
64
__USING_NAMESPACE_STD(clock_t)
65
#endif
66
 
67
#endif /* clock_t not defined and <time.h> or need clock_t.  */
68
#undef  __need_clock_t
69
 
70
#if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t)
71
# define __time_t_defined       1
72
 
73
# include <bits/types.h>
74
 
75
__BEGIN_NAMESPACE_STD
76
/* Returned by `time'.  */
77
typedef __time_t time_t;
78
__END_NAMESPACE_STD
79
#if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID
80
__USING_NAMESPACE_STD(time_t)
81
#endif
82
 
83
#endif /* time_t not defined and <time.h> or need time_t.  */
84
#undef  __need_time_t
85
 
86
#if !defined __clockid_t_defined && \
87
   ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t)
88
# define __clockid_t_defined    1
89
 
90
# include <bits/types.h>
91
 
92
/* Clock ID used in clock and timer functions.  */
93
typedef __clockid_t clockid_t;
94
 
95
#endif /* clockid_t not defined and <time.h> or need clockid_t.  */
96
#undef  __clockid_time_t
97
 
98
#if !defined __timer_t_defined && \
99
    ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
100
# define __timer_t_defined      1
101
 
102
# include <bits/types.h>
103
 
104
/* Timer ID returned by `timer_create'.  */
105
typedef __timer_t timer_t;
106
 
107
#endif /* timer_t not defined and <time.h> or need timer_t.  */
108
#undef  __need_timer_t
109
 
110
 
111
#if !defined __timespec_defined &&                              \
112
    ((defined _TIME_H &&                                        \
113
      (defined __USE_POSIX199309 || defined __USE_MISC)) ||     \
114
      defined __need_timespec)
115
# define __timespec_defined     1
116
 
117
# include <bits/types.h>        /* This defines __time_t for us.  */
118
 
119
/* POSIX.1b structure for a time value.  This is like a `struct timeval' but
120
   has nanoseconds instead of microseconds.  */
121
struct timespec
122
  {
123
    __time_t tv_sec;            /* Seconds.  */
124
    long int tv_nsec;           /* Nanoseconds.  */
125
  };
126
 
127
#endif /* timespec not defined and <time.h> or need timespec.  */
128
#undef  __need_timespec
129
 
130
 
131
#ifdef  _TIME_H
132
__BEGIN_NAMESPACE_STD
133
/* Used by other time functions.  */
134
struct tm
135
{
136
  int tm_sec;                   /* Seconds.     [0-60] (1 leap second) */
137
  int tm_min;                   /* Minutes.     [0-59] */
138
  int tm_hour;                  /* Hours.       [0-23] */
139
  int tm_mday;                  /* Day.         [1-31] */
140
  int tm_mon;                   /* Month.       [0-11] */
141
  int tm_year;                  /* Year - 1900.  */
142
  int tm_wday;                  /* Day of week. [0-6] */
143
  int tm_yday;                  /* Days in year.[0-365] */
144
  int tm_isdst;                 /* DST.         [-1/0/1]*/
145
 
146
#ifdef __UCLIBC_HAS_TM_EXTENSIONS__
147
#ifdef  __USE_BSD
148
  long int tm_gmtoff;           /* Seconds east of UTC.  */
149
  __const char *tm_zone;        /* Timezone abbreviation.  */
150
#else
151
  long int __tm_gmtoff;         /* Seconds east of UTC.  */
152
  __const char *__tm_zone;      /* Timezone abbreviation.  */
153
#endif
154
#endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
155
};
156
__END_NAMESPACE_STD
157
#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
158
__USING_NAMESPACE_STD(tm)
159
#endif
160
 
161
 
162
#ifdef __USE_POSIX199309
163
/* POSIX.1b structure for timer start values and intervals.  */
164
struct itimerspec
165
  {
166
    struct timespec it_interval;
167
    struct timespec it_value;
168
  };
169
 
170
/* We can use a simple forward declaration.  */
171
struct sigevent;
172
 
173
#endif  /* POSIX.1b */
174
 
175
#ifdef __USE_XOPEN2K
176
# ifndef __pid_t_defined
177
typedef __pid_t pid_t;
178
#  define __pid_t_defined
179
# endif
180
#endif
181
 
182
 
183
__BEGIN_NAMESPACE_STD
184
/* Time used by the program so far (user time + system time).
185
   The result / CLOCKS_PER_SECOND is program time in seconds.  */
186
extern clock_t clock (void) __THROW;
187
 
188
/* Return the current time and put it in *TIMER if TIMER is not NULL.  */
189
extern time_t time (time_t *__timer) __THROW;
190
 
191
#ifdef __UCLIBC_HAS_FLOATS__
192
/* Return the difference between TIME1 and TIME0.  */
193
extern double difftime (time_t __time1, time_t __time0)
194
     __THROW __attribute__ ((__const__));
195
#endif /* __UCLIBC_HAS_FLOATS__ */
196
 
197
/* Return the `time_t' representation of TP and normalize TP.  */
198
extern time_t mktime (struct tm *__tp) __THROW;
199
 
200
 
201
/* Format TP into S according to FORMAT.
202
   Write no more than MAXSIZE characters and return the number
203
   of characters written, or 0 if it would exceed MAXSIZE.  */
204
extern size_t strftime (char *__restrict __s, size_t __maxsize,
205
                        __const char *__restrict __format,
206
                        __const struct tm *__restrict __tp) __THROW;
207
__END_NAMESPACE_STD
208
 
209
# ifdef __USE_XOPEN
210
/* Parse S according to FORMAT and store binary time information in TP.
211
   The return value is a pointer to the first unparsed character in S.  */
212
extern char *strptime (__const char *__restrict __s,
213
                       __const char *__restrict __fmt, struct tm *__tp)
214
     __THROW;
215
# endif
216
 
217
#ifdef __UCLIBC_HAS_XLOCALE__
218
# ifdef __USE_GNU
219
/* Similar to the two functions above but take the information from
220
   the provided locale and not the global locale.  */
221
# include <xlocale.h>
222
 
223
extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
224
                          __const char *__restrict __format,
225
                          __const struct tm *__restrict __tp,
226
                          __locale_t __loc) __THROW;
227
 
228
extern char *strptime_l (__const char *__restrict __s,
229
                         __const char *__restrict __fmt, struct tm *__tp,
230
                         __locale_t __loc) __THROW;
231
# endif
232
#endif
233
 
234
 
235
__BEGIN_NAMESPACE_STD
236
/* Return the `struct tm' representation of *TIMER
237
   in Universal Coordinated Time (aka Greenwich Mean Time).  */
238
extern struct tm *gmtime (__const time_t *__timer) __THROW;
239
 
240
/* Return the `struct tm' representation
241
   of *TIMER in the local timezone.  */
242
extern struct tm *localtime (__const time_t *__timer) __THROW;
243
__END_NAMESPACE_STD
244
 
245
# if defined __USE_POSIX || defined __USE_MISC
246
/* Return the `struct tm' representation of *TIMER in UTC,
247
   using *TP to store the result.  */
248
extern struct tm *gmtime_r (__const time_t *__restrict __timer,
249
                            struct tm *__restrict __tp) __THROW;
250
 
251
/* Return the `struct tm' representation of *TIMER in local time,
252
   using *TP to store the result.  */
253
extern struct tm *localtime_r (__const time_t *__restrict __timer,
254
                               struct tm *__restrict __tp) __THROW;
255
# endif /* POSIX or misc */
256
 
257
__BEGIN_NAMESPACE_STD
258
/* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
259
   that is the representation of TP in this format.  */
260
extern char *asctime (__const struct tm *__tp) __THROW;
261
 
262
/* Equivalent to `asctime (localtime (timer))'.  */
263
extern char *ctime (__const time_t *__timer) __THROW;
264
__END_NAMESPACE_STD
265
 
266
# if defined __USE_POSIX || defined __USE_MISC
267
/* Reentrant versions of the above functions.  */
268
 
269
/* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n"
270
   that is the representation of TP in this format.  */
271
extern char *asctime_r (__const struct tm *__restrict __tp,
272
                        char *__restrict __buf) __THROW;
273
 
274
/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
275
extern char *ctime_r (__const time_t *__restrict __timer,
276
                      char *__restrict __buf) __THROW;
277
# endif /* POSIX or misc */
278
 
279
 
280
/* Defined in localtime.c.  */
281
#ifdef __UCLIBC_MJN3_ONLY__
282
#warning "mjn3 FIXME: __tzname, __daylight, and __timezone have a prototype but are not defined."
283
extern char *__tzname[2];       /* Current timezone names.  */
284
extern int __daylight;          /* If daylight-saving time is ever in use.  */
285
extern long int __timezone;     /* Seconds west of UTC.  */
286
#endif /* __UCLIBC_MJN3_ONLY__ */
287
 
288
 
289
# ifdef __USE_POSIX
290
/* Same as above.  */
291
extern char *tzname[2];
292
 
293
/* Set time conversion information from the TZ environment variable.
294
   If TZ is not defined, a locale-dependent default is used.  */
295
extern void tzset (void) __THROW;
296
# endif
297
 
298
# if defined __USE_SVID || defined __USE_XOPEN
299
extern int daylight;
300
extern long int timezone;
301
# endif
302
 
303
# ifdef __USE_SVID
304
/* Set the system time to *WHEN.
305
   This call is restricted to the superuser.  */
306
extern int stime (__const time_t *__when) __THROW;
307
# endif
308
 
309
 
310
/* Nonzero if YEAR is a leap year (every 4 years,
311
   except every 100th isn't, and every 400th is).  */
312
# define __isleap(year) \
313
  ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
314
 
315
 
316
# ifdef __USE_MISC
317
/* Miscellaneous functions many Unices inherited from the public domain
318
   localtime package.  These are included only for compatibility.  */
319
 
320
/* Like `mktime', but for TP represents Universal Time, not local time.  */
321
extern time_t timegm (struct tm *__tp) __THROW;
322
 
323
/* Another name for `mktime'.  */
324
extern time_t timelocal (struct tm *__tp) __THROW;
325
 
326
/* Return the number of days in YEAR.  */
327
extern int dysize (int __year) __THROW  __attribute__ ((__const__));
328
# endif
329
 
330
 
331
# ifdef __USE_POSIX199309
332
/* Pause execution for a number of nanoseconds.
333
 
334
   This function is a cancellation point and therefore not marked with
335
   __THROW.  */
336
extern int nanosleep (__const struct timespec *__requested_time,
337
                      struct timespec *__remaining);
338
 
339
 
340
/* Get resolution of clock CLOCK_ID.  */
341
extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
342
 
343
/* Get current value of clock CLOCK_ID and store it in TP.  */
344
extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
345
 
346
/* Set clock CLOCK_ID to value TP.  */
347
extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
348
     __THROW;
349
 
350
#ifdef __UCLIBC_MJN3_ONLY__
351
#warning "mjn3 FIXME: a bunch of unimplemented function prototypes."
352
#  ifdef __USE_XOPEN2K
353
/* High-resolution sleep with the specified clock.
354
 
355
   This function is a cancellation point and therefore not marked with
356
   __THROW.  */
357
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
358
                            __const struct timespec *__req,
359
                            struct timespec *__rem);
360
 
361
/* Return clock ID for CPU-time clock.  */
362
extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
363
#  endif
364
#endif /* __UCLIBC_MJN3_ONLY__ */
365
 
366
 
367
/* Create new per-process timer using CLOCK_ID.  */
368
extern int timer_create (clockid_t __clock_id,
369
                         struct sigevent *__restrict __evp,
370
                         timer_t *__restrict __timerid) __THROW;
371
 
372
/* Delete timer TIMERID.  */
373
extern int timer_delete (timer_t __timerid) __THROW;
374
 
375
/* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
376
extern int timer_settime (timer_t __timerid, int __flags,
377
                          __const struct itimerspec *__restrict __value,
378
                          struct itimerspec *__restrict __ovalue) __THROW;
379
 
380
/* Get current value of timer TIMERID and store it in VLAUE.  */
381
extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
382
     __THROW;
383
 
384
/* Get expiration overrun for timer TIMERID.  */
385
extern int timer_getoverrun (timer_t __timerid) __THROW;
386
# endif
387
 
388
 
389
#ifdef __UCLIBC_MJN3_ONLY__
390
#warning "mjn3 FIXME: a bunch of unimplemented function prototypes."
391
# ifdef __USE_XOPEN_EXTENDED
392
/* Set to one of the following values to indicate an error.
393
     1  the DATEMSK environment variable is null or undefined,
394
     2  the template file cannot be opened for reading,
395
     3  failed to get file status information,
396
     4  the template file is not a regular file,
397
     5  an error is encountered while reading the template file,
398
     6  memory allication failed (not enough memory available),
399
     7  there is no line in the template that matches the input,
400
     8  invalid input specification Example: February 31 or a time is
401
        specified that can not be represented in a time_t (representing
402
        the time in seconds since 00:00:00 UTC, January 1, 1970) */
403
extern int getdate_err;
404
 
405
/* Parse the given string as a date specification and return a value
406
   representing the value.  The templates from the file identified by
407
   the environment variable DATEMSK are used.  In case of an error
408
   `getdate_err' is set.
409
 
410
   This function is a possible cancellation points and therefore not
411
   marked with __THROW.  */
412
extern struct tm *getdate (__const char *__string);
413
# endif
414
 
415
# ifdef __USE_GNU
416
/* Since `getdate' is not reentrant because of the use of `getdate_err'
417
   and the static buffer to return the result in, we provide a thread-safe
418
   variant.  The functionality is the same.  The result is returned in
419
   the buffer pointed to by RESBUFP and in case of an error the return
420
   value is != 0 with the same values as given above for `getdate_err'.
421
 
422
   This function is not part of POSIX and therefore no official
423
   cancellation point.  But due to similarity with an POSIX interface
424
   or due to the implementation it is a cancellation point and
425
   therefore not marked with __THROW.  */
426
extern int getdate_r (__const char *__restrict __string,
427
                      struct tm *__restrict __resbufp);
428
# endif
429
#endif /* __UCLIBC_MJN3_ONLY__ */
430
 
431
__END_DECLS
432
 
433
#endif /* <time.h> included.  */
434
 
435
#endif /* <time.h> not already included.  */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.