亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? timepps.h

?? 內核中關于nano計時的功能
?? H
字號:
/*********************************************************************** *								       * * Copyright (c) David L. Mills 1999-2000			       * *								       * * Permission to use, copy, modify, and distribute this software and   * * its documentation for any purpose and without fee is hereby	       * * granted, provided that the above copyright notice appears in all    * * copies and that both the copyright notice and this permission       * * notice appear in supporting documentation, and that the name	       * * University of Delaware not be used in advertising or publicity      * * pertaining to distribution of the software without specific,	       * * written prior permission. The University of Delaware makes no       * * representations about the suitability this software for any	       * * purpose. It is provided "as is" without express or implied          * * warranty.							       * *								       * **********************************************************************//* * This header file complies with "Pulse-Per-Second API for UNIX-like * Operating Systems, Version 1.0", rfc2783. Credit is due Jeff Mogul * and Marc Brett, from whom much of this code was shamelessly stolen. */#ifndef _SYS_TIMEPPS_H_#define _SYS_TIMEPPS_H_#include <sys/ioccom.h>#include <sys/stropts.h>/* * The following definitions are architecture independent */#define PPS_API_VERS_1	1	/* API version number */#define PPS_JAN_1970	2208988800UL /* 1970 - 1900 in seconds */#define PPS_NANOSECOND	1000000000L /* one nanosecond in decimal */#define PPS_FRAC	4294967296. /* 2^32 as a double */#define PPS_NORMALIZE(x) 	/* normalize timespec */ \	do { \		if ((x).tv_nsec >= PPS_NANOSECOND) { \			(x).tv_nsec -= PPS_NANOSECOND; \			(x).tv_sec++; \		} else if ((x).tv_nsec < 0) { \			(x).tv_nsec += PPS_NANOSECOND; \			(x).tv_sec--; \		} \	} while (0)#define PPS_TSPECTONTP(x)	/* convert timespec to l_fp */ \	do { \		double d_temp; \ 	\		(x).lfp_ui += (unsigned int)PPS_JAN_1970; \		d_temp = (x).lfp_uf * PPS_FRAC / PPS_NANOSECOND; \		if (d_temp >= FRAC) \			(x).lfp_ui++; \		(x).lfp_uf = (unsigned int)d_temp; \	} while (0)/* * Device/implementation parameters (mode) */#define PPS_CAPTUREASSERT	0x01	/* rising edge */#define PPS_CAPTURECLEAR	0x02	/* falling edge */#define PPS_CAPTUREBOTH		0x03	/* both edges */#define PPS_OFFSETASSERT	0x10	/* offset rising edge */#define PPS_OFFSETCLEAR		0x20	/* offset falling edge */#define PPS_OFFSET_BOTH		0x30	/* both offset edges */#define PPS_CANWAIT		0x100	/* interface can wait */#define PPS_CANPOLL		0x200	/* interfacc can poll *//*	 * Kernel actions (mode) */#define PPS_ECHOASSERT		0x40	/* echo on rising edge */#define PPS_ECHOCLEAR		0x80	/* echo on falling edge *//* * Timestamp formats (tsformat) */#define PPS_TSFMT_TSPEC		0x1000	/* timespec format */#define PPS_TSFMT_NTPFP		0x2000	/* NTP format *//* * Kernel discipline actions (not used) */#define PPS_KC_HARDPPS		0	/* enable kernel consumer */#define PPS_KC_HARDPPS_PLL	1	/* phase-lock mode */#define PPS_KC_HARDPPS_FLL	2	/* frequency-lock mode *//* * IOCTL definitions (see below) */#ifdef __STDC__#define PPS_IOC_CREATE		_IO('1', 1)#define PPS_IOC_DESTROY		_IO('1', 2)#define PPS_IOC_SETPARAMS	_IOW('1', 3, pps_params_t)#define PPS_IOC_GETPARAMS	_IOR('1', 4, pps_params_t)#define PPS_IOC_GETCAP		_IOR('1', 5, int)#define PPS_IOC_FETCH		_IOR('1', 6, pps_info_t)#define PPS_IOC_KPCBIND		_IOW('1', 7, int)#else#define PPS_IOC_CREATE		_IO(1, 1)#define PPS_IOC_DESTROY		_IO(1, 2)#define PPS_IOC_SETPARAMS	_IOW(1, 3, pps_params_t)#define PPS_IOC_GETPARAMS	_IOR(1, 4, pps_params_t)#define PPS_IOC_GETCAP		_IOR(1, 5, int)#define PPS_IOC_FETCH		_IOR(1, 6, pps_info_t)#define PPS_IOC_KPCBIND		_IOW(1, 7, int)#endif/* * Type definitions */typedef unsigned pps_seq_t;	/* sequence number */struct timespec {		/* POSIX timestamp format */	long tv_sec;		/* seconds */	long tv_nsec;		/* nanoseconds */};typedef struct ntp_fp {		/* NTP timestamp format */	unsigned int lfp_ui;	/* seconds units */	unsigned int lfp_uf;/* seconds fraction */} ntp_fp_t;typedef union pps_timeu {	/* timestamp format */	struct timespec	tspec;	ntp_fp_t ntpfp;	unsigned long longpa[3];} pps_timeu_t;/* * Timestamp information structure */typedef struct {	pps_seq_t assert_sequence; /* assert sequence number */	pps_seq_t clear_sequence; /* clear sequence number */	pps_timeu_t assert_tu;	/* assert timestamp */	pps_timeu_t clear_tu;	/* clear timestamp */	int current_mode;	/* current mode bits */} pps_info_t;#define assert_timestamp        assert_tu.tspec#define clear_timestamp         clear_tu.tspec#define assert_timestamp_ntpfp  assert_tu.ntpfp#define clear_timestamp_ntpfp   clear_tu.ntpfp/* * Parameter structure */typedef struct {		/* parameter structure */	int api_version;	/* API version number */	int mode;		/* mode bits */	pps_timeu_t assert_off_tu; /* assert offset */	pps_timeu_t clear_off_tu; /* clear offset */} pps_params_t;#define assert_offset		assert_off_tu.tspec#define clear_offset		clear_off_tu.tspec#define assert_offset_ntpfp	assert_off_tu.ntpfp#define clear_offset_ntpfp	clear_off_tu.ntpfp/* * The following definitions are architecture-dependent for * * SunOS grundoon.udel.edu 4.1.3 247 sun4c */#define PPS_CAP		(PPS_CAPTUREBOTH | PPS_OFFSET_BOTH | \    PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP) /* what we can do */#define PPSAPISTR	"ppsapi" /* STREAMS module name */typedef struct {	int filedes;		/* file descriptor */	pps_params_t params;	/* PPS parameters set by user */} pps_unit_t;typedef pps_unit_t* pps_handle_t; /* pps handlebars */#if !defined(KERNEL)/* * Create PPS API */static __inline inttime_pps_create(	int filedes,		/* file descriptor */	pps_handle_t *handle	/* ppsapi handle */	){	/*	 * Check for valid arguments and attach PPS signal.	 */	if (!handle) {		errno = EFAULT;		return (-1);	/* null pointer */	}	/*	 * Allocate and initialize default unit structure.	 */	*handle = malloc(sizeof(pps_unit_t));	if (!(*handle)) {		errno = EBADF;		return (-1);	/* what, no memory? */	}	memset(*handle, 0, sizeof(pps_unit_t));	(*handle)->filedes = filedes;	(*handle)->params.api_version = PPS_API_VERS_1;	(*handle)->params.mode = PPS_CAPTUREASSERT | PPS_TSFMT_TSPEC;	if (ioctl(filedes, I_PUSH, PPSAPISTR) < 0) {		free(handle);		return (-1);	}	return (0);}/* * Destroy PPS API */static __inline inttime_pps_destroy(	pps_handle_t handle	/* ppsapi handle */	){	/*	 * Check for valid arguments and detach PPS signal.	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	ioctl(handle->filedes, I_POP, PPSAPISTR);	free(handle);	return (0);}/* * Set parameters */static __inline inttime_pps_setparams(	pps_handle_t handle,	/* ppsapi handle */	const pps_params_t *params /* ppsapi parameters */	){	/*	 * Check for valid arguments and set parameters.	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	if (!params) {		errno = EFAULT;		return (-1);	/* bad argument */	}	memcpy(&handle->params, params, sizeof(pps_params_t));	handle->params.api_version = PPS_API_VERS_1;	return (0);}/* * Get parameters */static __inline inttime_pps_getparams(	pps_handle_t handle,	/* ppsapi handle */	pps_params_t *params	/* ppsapi parameters */	){	/*	 * Check for valid arguments and get parameters.	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	if (!params) {		errno = EFAULT;		return (-1);	/* bad argument */	}	memcpy(params, &handle->params, sizeof(pps_params_t));	return (0);}/* * Get capabilities */static __inline int time_pps_getcap(	pps_handle_t handle,	/* ppsapi handle */	int *mode		/* capture mode */	){	/*	 * Check for valid arguments and get capabilities.	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	if (!mode) {		errno = EFAULT;		return (-1);	/* bad argument */	}	*mode = PPS_CAP;	return (0);}/* * Fetch timestamps */static __inline inttime_pps_fetch(	pps_handle_t handle,	/* ppsapi handle */	const int tsformat,	/* format selector */	pps_info_t *ppsinfo,	/* what we want */ 	const struct timespec *timeout /* how long to wait for it */	){	pps_info_t infobuf;	double dtemp;	/*	 * Check for valid arguments and fetch timestamps	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	if (!ppsinfo) {		errno = EFAULT;		return (-1);	/* bad argument */	}	if (ioctl(handle->filedes, PPS_IOC_FETCH, &infobuf) < 0)		return (-1);	/*	 * Apply offsets as specified	 */	if (handle->params.mode & PPS_OFFSETASSERT) {		infobuf.assert_timestamp.tv_sec +=		    handle->params.assert_offset.tv_sec;		infobuf.assert_timestamp.tv_nsec +=		    handle->params.assert_offset.tv_nsec;		PPS_NORMALIZE(infobuf.assert_timestamp);	}	if (handle->params.mode & PPS_OFFSETCLEAR) {		infobuf.clear_timestamp.tv_sec +=		    handle->params.clear_offset.tv_sec;		infobuf.clear_timestamp.tv_nsec +=		    handle->params.clear_offset.tv_nsec;		PPS_NORMALIZE(infobuf.clear_timestamp);	}	/*	 * Translate to specified format	 */	switch (tsformat) {	/*	 * timespec format requires no translation	 */	case PPS_TSFMT_TSPEC:		break;	/*	 * NTP format requires conversion to fraction form	 */	case PPS_TSFMT_NTPFP:		PPS_TSPECTONTP(infobuf.assert_timestamp_ntpfp);		PPS_TSPECTONTP(infobuf.clear_timestamp_ntpfp);		break;	default:		errno = EINVAL;		return (-1);	}	infobuf.current_mode = handle->params.mode;	memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));	return (0);}/* * Define PPS discipline and mode */static __inline inttime_pps_kcbind(	pps_handle_t handle,	/* ppsapi handle */	const int kernel_consumer, /* consumer identifier */	const int mode,		/* capture mode */	const int tsformat	/* timestamp format */	){	/*	 * Check for valid arguments and bind kernel consumer	 */	if (!handle) {		errno = EBADF;		return (-1);	/* bad handle */	}	if (geteuid() != 0) {		errno = EPERM;		return (-1);	/* must be superuser */	}	return (ioctl(handle->filedes, PPS_IOC_KPCBIND, &mode));}#endif /* !KERNEL */#endif /* _SYS_TIMEPPS_H_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产成人系列| 日本午夜一本久久久综合| 欧美亚洲一区二区三区四区| 日本亚洲免费观看| 人人爽香蕉精品| 日韩电影在线观看电影| 亚洲一级二级三级在线免费观看| 亚洲靠逼com| 亚洲一区二区五区| 偷拍日韩校园综合在线| 午夜精品福利久久久| 国产精品久久毛片a| 久久久蜜桃精品| 日本一区二区三区四区| 樱花草国产18久久久久| 亚洲一区av在线| 免费成人深夜小野草| 国产一区二区在线观看免费| 国产精品一区二区三区网站| 白白色 亚洲乱淫| 色8久久精品久久久久久蜜| 欧美日韩和欧美的一区二区| 日韩欧美电影一区| 综合久久久久综合| 狠狠色综合日日| 欧美三级电影在线看| 欧美岛国在线观看| 亚洲日本丝袜连裤袜办公室| 亚洲自拍偷拍麻豆| 蜜臀av一区二区三区| 成人av中文字幕| 久久久久久久久久久久久夜| 午夜精品福利在线| 91免费看视频| 国产调教视频一区| 美腿丝袜亚洲综合| 欧美人妖巨大在线| 亚洲精品欧美二区三区中文字幕| 国产美女精品在线| 日韩欧美电影一区| 久久精工是国产品牌吗| 欧美高清性hdvideosex| 一区二区三区**美女毛片| 91在线云播放| 亚洲乱码国产乱码精品精的特点| 国产suv精品一区二区三区| 欧美日韩免费一区二区三区| 亚洲一区二区在线观看视频| 在线观看亚洲a| 午夜精品在线视频一区| 欧美日韩国产欧美日美国产精品| 亚洲一区国产视频| 欧美精品色综合| 黄色日韩三级电影| 中文字幕第一区二区| 一本大道久久精品懂色aⅴ| 日韩码欧中文字| 欧美日韩国产欧美日美国产精品| 日韩vs国产vs欧美| 久久久www成人免费毛片麻豆| 国产综合成人久久大片91| 国产精品久线观看视频| 日本久久精品电影| 日韩1区2区日韩1区2区| 日韩欧美电影在线| 91麻豆精东视频| 国产一区在线观看麻豆| 亚洲三级理论片| 国产亚洲精久久久久久| 91精品福利视频| 激情图片小说一区| 亚洲午夜电影在线观看| 亚洲国产精品av| 欧美高清视频一二三区 | 成人网页在线观看| 国产精品国产三级国产| 欧美日韩一区二区三区四区| 精品在线观看视频| 亚洲视频一二三| 欧洲亚洲国产日韩| 亚洲男人天堂av网| 精品欧美乱码久久久久久| 不卡的av中国片| 石原莉奈一区二区三区在线观看 | 国产综合久久久久久鬼色| 亚洲婷婷综合久久一本伊一区| 欧美日韩美女一区二区| 成人va在线观看| 久久99精品网久久| 轻轻草成人在线| 午夜激情一区二区| 一区二区激情视频| 亚洲蜜臀av乱码久久精品蜜桃| 2023国产精品| 精品对白一区国产伦| 欧美日韩一卡二卡三卡| 99视频精品免费视频| 成人中文字幕电影| 成人自拍视频在线| 成人综合日日夜夜| 91在线播放网址| 在线看国产日韩| 欧美性生活大片视频| 色网综合在线观看| 欧洲av一区二区嗯嗯嗯啊| 在线视频欧美精品| 99热在这里有精品免费| 91在线小视频| av在线综合网| 欧美伊人久久久久久久久影院| 97精品电影院| 欧美日韩三级在线| 日韩精品中午字幕| 中文字幕第一区| 亚洲女同女同女同女同女同69| 亚洲天堂精品在线观看| 亚洲综合一二区| 国产在线精品一区二区夜色| 国产成人精品www牛牛影视| 色噜噜久久综合| 精品国产一区二区三区av性色| 国产欧美va欧美不卡在线| 亚洲综合一区二区| 粉嫩av亚洲一区二区图片| 欧美日韩国产高清一区| 久久九九久久九九| 亚洲国产aⅴ成人精品无吗| 九九精品视频在线看| 99麻豆久久久国产精品免费 | 日韩精品中文字幕一区 | 国产色产综合产在线视频| 亚洲精品自拍动漫在线| 蜜桃视频在线观看一区| 在线免费视频一区二区| 国产精品成人在线观看 | 久久激情综合网| 欧美狂野另类xxxxoooo| 国产精品久99| eeuss鲁片一区二区三区在线观看| 欧美大片在线观看一区二区| 一级精品视频在线观看宜春院 | 不卡在线观看av| 国产精品久久综合| 北条麻妃国产九九精品视频| 国产日韩欧美综合在线| 国产老妇另类xxxxx| 久久综合久色欧美综合狠狠| 蓝色福利精品导航| 日韩一区二区三区免费观看| 亚洲一区影音先锋| 欧美日韩久久不卡| 美女网站一区二区| 久久亚洲综合色| 成人av集中营| 一区二区三区国产| 日韩手机在线导航| 国产成人精品综合在线观看| 国产午夜三级一区二区三| 成人精品免费看| 亚洲永久精品大片| 久久久久久久网| 欧美日韩中文字幕精品| 久久99国产精品麻豆| 国产精品久久久久久久久快鸭| 色综合咪咪久久| 九九热在线视频观看这里只有精品| 国产日韩欧美综合一区| 日本道色综合久久| 麻豆91在线播放免费| 亚洲日本中文字幕区| 久久久影院官网| 色婷婷精品久久二区二区蜜臀av | 精品国产露脸精彩对白| 色综合亚洲欧洲| 国产精品小仙女| 日本成人在线看| 亚洲一区二区三区四区的| 日韩免费在线观看| 欧美日韩在线播放一区| 成人免费av网站| 国产精品综合久久| 九色综合狠狠综合久久| 亚洲成人第一页| 国产欧美日韩精品a在线观看| 国产高清视频一区| 国产精品 欧美精品| 九色综合狠狠综合久久| 日精品一区二区三区| 日本亚洲视频在线| 日韩av中文字幕一区二区三区| 亚洲男女毛片无遮挡| 中文字幕不卡在线观看| 日韩视频不卡中文| 久久久久国产精品厨房| 国产日韩精品一区二区三区| 中日韩av电影| 亚洲欧美日韩在线| 亚洲国产aⅴ成人精品无吗| 一区二区三区欧美亚洲| 一区二区三区精品在线|