xref: /titanic_50/usr/src/lib/libast/amd64/include/ast/tmx.h (revision 3db3491215579980a91e230cf21b20608fbb8259)
1 /***********************************************************************
2 *                                                                      *
3 *               This software is part of the ast package               *
4 *          Copyright (c) 1985-2008 AT&T Intellectual Property          *
5 *                      and is licensed under the                       *
6 *                  Common Public License, Version 1.0                  *
7 *                    by AT&T Intellectual Property                     *
8 *                                                                      *
9 *                A copy of the License is available at                 *
10 *            http://www.opensource.org/licenses/cpl1.0.txt             *
11 *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12 *                                                                      *
13 *              Information and Software Systems Research               *
14 *                            AT&T Research                             *
15 *                           Florham Park NJ                            *
16 *                                                                      *
17 *                 Glenn Fowler <gsf@research.att.com>                  *
18 *                  David Korn <dgk@research.att.com>                   *
19 *                   Phong Vo <kpv@research.att.com>                    *
20 *                                                                      *
21 ***********************************************************************/
22 
23 /* : : generated by proto : : */
24 /* : : generated from /home/gisburn/ksh93/ast_ksh_20081104/build_i386_64bit/src/lib/libast/features/tmx by iffe version 2008-01-31 : : */
25 
26 #ifndef _TMX_H
27 #if !defined(__PROTO__)
28 #  if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
29 #    if defined(__cplusplus)
30 #      define __LINKAGE__	"C"
31 #    else
32 #      define __LINKAGE__
33 #    endif
34 #    define __STDARG__
35 #    define __PROTO__(x)	x
36 #    define __OTORP__(x)
37 #    define __PARAM__(n,o)	n
38 #    if !defined(__STDC__) && !defined(__cplusplus)
39 #      if !defined(c_plusplus)
40 #      	define const
41 #      endif
42 #      define signed
43 #      define void		int
44 #      define volatile
45 #      define __V_		char
46 #    else
47 #      define __V_		void
48 #    endif
49 #  else
50 #    define __PROTO__(x)	()
51 #    define __OTORP__(x)	x
52 #    define __PARAM__(n,o)	o
53 #    define __LINKAGE__
54 #    define __V_		char
55 #    define const
56 #    define signed
57 #    define void		int
58 #    define volatile
59 #  endif
60 #  define __MANGLE__	__LINKAGE__
61 #  if defined(__cplusplus) || defined(c_plusplus)
62 #    define __VARARG__	...
63 #  else
64 #    define __VARARG__
65 #  endif
66 #  if defined(__STDARG__)
67 #    define __VA_START__(p,a)	va_start(p,a)
68 #  else
69 #    define __VA_START__(p,a)	va_start(p)
70 #  endif
71 #  if !defined(__INLINE__)
72 #    if defined(__cplusplus)
73 #      define __INLINE__	extern __MANGLE__ inline
74 #    else
75 #      if defined(_WIN32) && !defined(__GNUC__)
76 #      	define __INLINE__	__inline
77 #      endif
78 #    endif
79 #  endif
80 #endif
81 #if !defined(__LINKAGE__)
82 #define __LINKAGE__		/* 2004-08-11 transition */
83 #endif
84 
85 #define _TMX_H	1
86 /*
87  * AT&T Research
88  *
89  * high resolution Time_t support
90  */
91 
92 #include <tm.h>
93 #include <tv.h>
94 
95 #define TMX_MAXDATE	"2554-07-21+23:34:33.709551614 UTC"
96 #define TMX_MAXYEAR	2554
97 #define TMX_MAXSEC	((Time_t)18446744073)
98 #define TMX_MAXNSEC	709551614
99 #define TMX_RESOLUTION	1000000000
100 
101 typedef uint64_t Time_t;
102 typedef uint64_t Tmxsec_t;
103 typedef uint32_t Tmxnsec_t;
104 
105 #define tmxsec(t)	((Tmxsec_t)((t)/1000000000))
106 #define tmxnsec(t)	((Tmxnsec_t)((t)%1000000000))
107 #define tmxsns(s,n)	(((((Time_t)(s))*1000000000))+((Time_t)(n)))
108 
109 #define TMX_NOTIME	((Time_t)(-1))
110 #define TMX_NOW		tmxgettime()
111 #define TMX_MAXTIME	tmxsns(TMX_MAXSEC,TMX_MAXNSEC)
112 
113 #define tmx2tv(t,v)	((v)->tv_nsec=tmxnsec(t),(v)->tv_sec=tmxsec(t))
114 #define tv2tmx(v)	tmxsns((v)->tv_sec,(v)->tv_nsec)
115 
116 #define tmxclock(p)	tmxsns(((p)?*(p):time(NiL)),0)
117 
118 #define tmxgetatime(s)	tmxsns((s)->st_atime,ST_ATIME_NSEC_GET(s))
119 #define tmxgetctime(s)	tmxsns((s)->st_ctime,ST_CTIME_NSEC_GET(s))
120 #define tmxgetmtime(s)	tmxsns((s)->st_mtime,ST_MTIME_NSEC_GET(s))
121 
122 #define tmxsetatime(s,t) ((s)->st_atime=tmxsec(t),ST_ATIME_NSEC_SET(s,tmxnsec(t)))
123 #define tmxsetctime(s,t) ((s)->st_ctime=tmxsec(t),ST_CTIME_NSEC_SET(s,tmxnsec(t)))
124 #define tmxsetmtime(s,t) ((s)->st_mtime=tmxsec(t),ST_MTIME_NSEC_SET(s,tmxnsec(t)))
125 
126 #if _BLD_ast && defined(__EXPORT__)
127 #undef __MANGLE__
128 #define __MANGLE__ __LINKAGE__		__EXPORT__
129 #endif
130 
131 extern __MANGLE__ Time_t		tmxdate __PROTO__((const char*, char**, Time_t));
132 extern __MANGLE__ char*		tmxfmt __PROTO__((char*, size_t, const char*, Time_t));
133 extern __MANGLE__ Time_t		tmxleap __PROTO__((Time_t));
134 extern __MANGLE__ Tm_t*		tmxmake __PROTO__((Time_t));
135 extern __MANGLE__ Time_t		tmxscan __PROTO__((const char*, char**, const char*, char**, Time_t, long));
136 extern __MANGLE__ int		tmxsleep __PROTO__((Time_t));
137 extern __MANGLE__ Time_t		tmxtime __PROTO__((Tm_t*, int));
138 
139 extern __MANGLE__ Time_t		tmxgettime __PROTO__((void));
140 extern __MANGLE__ int		tmxsettime __PROTO__((Time_t));
141 
142 extern __MANGLE__ int		tmxtouch __PROTO__((const char*, Time_t, Time_t, Time_t, int));
143 
144 extern __MANGLE__ char*		fmttmx __PROTO__((const char*, Time_t));
145 
146 #undef __MANGLE__
147 #define __MANGLE__ __LINKAGE__
148 
149 #endif
150