tv revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncset prototyped
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncset explicit
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynciff TV
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccat{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * AT&T Research
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * high resolution Tv_t interface definitions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #include <ast.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define TV_NSEC_IGNORE (1000000000L)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define TV_TOUCH_RETAIN ((Tv_t*)1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync typedef struct Tv_s
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync uint32_t tv_sec;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync uint32_t tv_nsec;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } Tv_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif mem stat.st_mtimespec.tv_nsec sys/stat.h {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_GET(st) ((st)->st_atimespec.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_GET(st) ((st)->st_ctimespec.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_GET(st) ((st)->st_mtimespec.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncelif mem stat.st_mtim.st__tim.tv_nsec sys/stat.h {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_GET(st) ((st)->st_atim.st__tim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_GET(st) ((st)->st_ctim.st__tim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_GET(st) ((st)->st_mtim.st__tim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncelif mem stat.st_mtim.tv_nsec sys/stat.h {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_GET(st) ((st)->st_atim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_GET(st) ((st)->st_ctim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_GET(st) ((st)->st_mtim.tv_nsec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncelif mem stat.st_mtimensec sys/stat.h {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_GET(st) ((st)->st_atimensec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_GET(st) ((st)->st_ctimensec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_GET(st) ((st)->st_mtimensec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncelse pass{ no_stat_nsec=1 }end {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_GET(st) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_GET(st) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_GET(st) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_SET(st,n) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_SET(st,n) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_SET(st,n) 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncendif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif ( !no_stat_nsec ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_ATIME_NSEC_SET(st,n) (ST_ATIME_NSEC_GET(st)=(n))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_CTIME_NSEC_SET(st,n) (ST_CTIME_NSEC_GET(st)=(n))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define ST_MTIME_NSEC_SET(st,n) (ST_MTIME_NSEC_GET(st)=(n))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncendif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccat{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvgetatime(t,s) ((t)->tv_nsec=ST_ATIME_NSEC_GET(s),(t)->tv_sec=(s)->st_atime)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvgetmtime(t,s) ((t)->tv_nsec=ST_MTIME_NSEC_GET(s),(t)->tv_sec=(s)->st_mtime)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvgetctime(t,s) ((t)->tv_nsec=ST_CTIME_NSEC_GET(s),(t)->tv_sec=(s)->st_ctime)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvsetatime(t,s) (ST_ATIME_NSEC_SET(s,(t)->tv_nsec),(s)->st_atime=(t)->tv_sec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvsetmtime(t,s) (ST_MTIME_NSEC_SET(s,(t)->tv_nsec),(s)->st_mtime=(t)->tv_sec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define tvsetctime(t,s) (ST_CTIME_NSEC_SET(s,(t)->tv_nsec),(s)->st_ctime=(t)->tv_sec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #if _BLD_ast && defined(__EXPORT__)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define extern __EXPORT__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern int tvgettime(Tv_t*);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern int tvsettime(const Tv_t*);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern int tvcmp(const Tv_t*, const Tv_t*);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern int tvtouch(const char*, const Tv_t*, const Tv_t*, const Tv_t*, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern int tvsleep(const Tv_t*, Tv_t*);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync extern char* fmttv(const char*, Tv_t*);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync