⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.h

📁 Axis 221 camera embedded programing interface
💻 H
字号:
#ifndef _LINUX_TIME_H#define _LINUX_TIME_H#include <linux/types.h>#ifdef __KERNEL__# include <linux/seqlock.h>#endif#ifndef _STRUCT_TIMESPEC#define _STRUCT_TIMESPECstruct timespec {	time_t	tv_sec;		/* seconds */	long	tv_nsec;	/* nanoseconds */};#endifstruct timeval {	time_t		tv_sec;		/* seconds */	suseconds_t	tv_usec;	/* microseconds */};struct timezone {	int	tz_minuteswest;	/* minutes west of Greenwich */	int	tz_dsttime;	/* type of dst correction */};#ifdef __KERNEL__/* Parameters used to convert the timespec values: */#define MSEC_PER_SEC	1000L#define USEC_PER_MSEC	1000L#define NSEC_PER_USEC	1000L#define NSEC_PER_MSEC	1000000L#define USEC_PER_SEC	1000000L#define NSEC_PER_SEC	1000000000L#define FSEC_PER_SEC	1000000000000000Lstatic inline int timespec_equal(struct timespec *a, struct timespec *b){	return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec);}/* * lhs < rhs:  return <0 * lhs == rhs: return 0 * lhs > rhs:  return >0 */static inline int timespec_compare(struct timespec *lhs, struct timespec *rhs){	if (lhs->tv_sec < rhs->tv_sec)		return -1;	if (lhs->tv_sec > rhs->tv_sec)		return 1;	return lhs->tv_nsec - rhs->tv_nsec;}static inline int timeval_compare(struct timeval *lhs, struct timeval *rhs){	if (lhs->tv_sec < rhs->tv_sec)		return -1;	if (lhs->tv_sec > rhs->tv_sec)		return 1;	return lhs->tv_usec - rhs->tv_usec;}extern unsigned long mktime(const unsigned int year, const unsigned int mon,			    const unsigned int day, const unsigned int hour,			    const unsigned int min, const unsigned int sec);extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec);/* * sub = lhs - rhs, in normalized form */static inline struct timespec timespec_sub(struct timespec lhs,						struct timespec rhs){	struct timespec ts_delta;	set_normalized_timespec(&ts_delta, lhs.tv_sec - rhs.tv_sec,				lhs.tv_nsec - rhs.tv_nsec);	return ts_delta;}/* * Returns true if the timespec is norm, false if denorm: */#define timespec_valid(ts) \	(((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC))extern struct timespec xtime;extern struct timespec wall_to_monotonic;extern seqlock_t xtime_lock;void timekeeping_init(void);static inline unsigned long get_seconds(void){	return xtime.tv_sec;}struct timespec current_kernel_time(void);#define CURRENT_TIME		(current_kernel_time())#define CURRENT_TIME_SEC	((struct timespec) { xtime.tv_sec, 0 })extern void do_gettimeofday(struct timeval *tv);extern int do_settimeofday(struct timespec *tv);extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz);#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)extern long do_utimes(int dfd, char __user *filename, struct timeval *times);struct itimerval;extern int do_setitimer(int which, struct itimerval *value,			struct itimerval *ovalue);extern unsigned int alarm_setitimer(unsigned int seconds);extern int do_getitimer(int which, struct itimerval *value);extern void getnstimeofday(struct timespec *tv);extern struct timespec timespec_trunc(struct timespec t, unsigned gran);extern int timekeeping_is_continuous(void);/** * timespec_to_ns - Convert timespec to nanoseconds * @ts:		pointer to the timespec variable to be converted * * Returns the scalar nanosecond representation of the timespec * parameter. */static inline s64 timespec_to_ns(const struct timespec *ts){	return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;}/** * timeval_to_ns - Convert timeval to nanoseconds * @ts:		pointer to the timeval variable to be converted * * Returns the scalar nanosecond representation of the timeval * parameter. */static inline s64 timeval_to_ns(const struct timeval *tv){	return ((s64) tv->tv_sec * NSEC_PER_SEC) +		tv->tv_usec * NSEC_PER_USEC;}/** * ns_to_timespec - Convert nanoseconds to timespec * @nsec:	the nanoseconds value to be converted * * Returns the timespec representation of the nsec parameter. */extern struct timespec ns_to_timespec(const s64 nsec);/** * ns_to_timeval - Convert nanoseconds to timeval * @nsec:	the nanoseconds value to be converted * * Returns the timeval representation of the nsec parameter. */extern struct timeval ns_to_timeval(const s64 nsec);/** * timespec_add_ns - Adds nanoseconds to a timespec * @a:		pointer to timespec to be incremented * @ns:		unsigned nanoseconds value to be added */static inline void timespec_add_ns(struct timespec *a, u64 ns){	ns += a->tv_nsec;	while(unlikely(ns >= NSEC_PER_SEC)) {		ns -= NSEC_PER_SEC;		a->tv_sec++;	}	a->tv_nsec = ns;}#endif /* __KERNEL__ */#define NFDBITS			__NFDBITS#define FD_SETSIZE		__FD_SETSIZE#define FD_SET(fd,fdsetp)	__FD_SET(fd,fdsetp)#define FD_CLR(fd,fdsetp)	__FD_CLR(fd,fdsetp)#define FD_ISSET(fd,fdsetp)	__FD_ISSET(fd,fdsetp)#define FD_ZERO(fdsetp)		__FD_ZERO(fdsetp)/* * Names of the interval timers, and structure * defining a timer setting: */#define	ITIMER_REAL		0#define	ITIMER_VIRTUAL		1#define	ITIMER_PROF		2struct itimerspec {	struct timespec it_interval;	/* timer period */	struct timespec it_value;	/* timer expiration */};struct itimerval {	struct timeval it_interval;	/* timer interval */	struct timeval it_value;	/* current value */};/* * The IDs of the various system clocks (for POSIX.1b interval timers): */#define CLOCK_REALTIME			0#define CLOCK_MONOTONIC			1#define CLOCK_PROCESS_CPUTIME_ID	2#define CLOCK_THREAD_CPUTIME_ID		3/* * The IDs of various hardware clocks: */#define CLOCK_SGI_CYCLE			10#define MAX_CLOCKS			16#define CLOCKS_MASK			(CLOCK_REALTIME | CLOCK_MONOTONIC)#define CLOCKS_MONO			CLOCK_MONOTONIC/* * The various flags for setting POSIX.1b interval timers: */#define TIMER_ABSTIME			0x01#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -