亚洲欧美第一页_禁久久精品乱码_粉嫩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/ioctl.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 */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 longpad[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 * * OSF1 churchy.udel.edu V4.0 878 alpha */#define PPS_CAP		(PPS_CAPTUREBOTH | PPS_OFFSET_BOTH | \    PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP) /* what we can do */#define PPSDISC 12		/* this should be in <sys/ioctl.h> */typedef struct {	int filedes;		/* file descriptor */	int linedisc;		/* line discipline */	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 */	){	int line = PPSDISC;	/*	 * 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, TIOCGETD, &(*handle)->linedisc) < 0) {		free(handle);		return (-1);	}	if (ioctl(filedes, TIOCSETD, &line) < 0) {		return (-1);		free(handle);	}	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, TIOCSETD, &handle->linedisc);	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;	int tsf;	/*	 * 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);	tsf = tsformat;	if (tsf == 0)		tsf = handle->params.mode & (PPS_TSFMT_TSPEC |		     PPS_TSFMT_NTPFP);	/*	 * 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 (tsf) {	/*	 * 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 */	}	/*	 * Move the offsets to the kernel and zero the ones here. Only	 * the superuser can do this, so others sharing the same device	 * may suffer.	 */	if (ioctl(handle->filedes, PPS_IOC_SETPARAMS, &handle->params) <	    0)		return (-1);	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一区二区三区免费野_久草精品视频
美女脱光内衣内裤视频久久影院| 天堂蜜桃91精品| 久久久久97国产精华液好用吗| 亚洲国产激情av| 亚洲成av人片在线| 国产麻豆9l精品三级站| 成人国产精品免费观看动漫| 国产白丝网站精品污在线入口| 粉嫩aⅴ一区二区三区四区| 欧美日韩国产综合草草| 亚洲四区在线观看| 国产91精品在线观看| 欧美mv日韩mv| 久久久久青草大香线综合精品| 中文字幕精品三区| 国产一区二区精品久久99| 91精品在线一区二区| 亚洲永久免费av| 色综合网站在线| 亚洲国产成人一区二区三区| 国产剧情av麻豆香蕉精品| 欧美一区二区三区啪啪| 亚洲制服欧美中文字幕中文字幕| av不卡免费电影| 亚洲另类在线视频| 色激情天天射综合网| 中国av一区二区三区| 懂色av中文一区二区三区| 中文一区一区三区高中清不卡| 国产在线观看免费一区| 日本一区二区三区dvd视频在线 | 亚洲欧美日韩国产手机在线| 国产高清精品在线| 国产精品久久久久久久第一福利| 成人美女在线视频| 国产高清精品在线| 91精品国产欧美一区二区18| 亚洲综合一区二区精品导航| 欧美色综合影院| 日韩精品每日更新| 欧美国产丝袜视频| 91黄视频在线观看| 精品亚洲成av人在线观看| 国产免费观看久久| 欧美日韩第一区日日骚| 国产美女精品在线| 亚洲图片一区二区| 久久精品视频免费| 欧美亚州韩日在线看免费版国语版| 久久精工是国产品牌吗| 亚洲精品欧美激情| 日韩一本二本av| 99久久国产综合色|国产精品| 亚洲国产一区二区视频| 欧美一级在线视频| 欧美日韩美女一区二区| 成人性生交大片免费| 手机精品视频在线观看| 久久久久久久综合狠狠综合| 欧美久久久久久久久| 在线观看91精品国产入口| 国产精品一区二区视频| 国产在线麻豆精品观看| 亚洲黄色免费电影| 久久免费看少妇高潮| 精品美女在线观看| 欧美日本高清视频在线观看| 日本黄色一区二区| 狠狠网亚洲精品| 免费看欧美女人艹b| 男人的j进女人的j一区| 国产精品一二一区| 91福利在线导航| 国产九九视频一区二区三区| 久久国产成人午夜av影院| 男女性色大片免费观看一区二区| 美女视频黄免费的久久| 美女久久久精品| 色诱亚洲精品久久久久久| 555www色欧美视频| 国产偷国产偷精品高清尤物| 一区二区理论电影在线观看| 激情文学综合网| 欧美三级资源在线| 欧美国产一区在线| 另类中文字幕网| 色欧美日韩亚洲| 国产欧美一区视频| 日韩中文字幕1| 91久久香蕉国产日韩欧美9色| 日本一区二区视频在线| 美女网站视频久久| 欧美夫妻性生活| 一区二区三区四区五区视频在线观看 | 欧美一区二区女人| 亚洲一二三专区| 欧美午夜片在线看| 亚洲婷婷在线视频| 91在线视频免费91| 国产亚洲美州欧州综合国| 久久99国产精品久久99 | 91亚洲男人天堂| 国产日产欧美一区二区视频| 国产在线精品视频| 欧美一区二区三区视频免费播放 | 国产亚洲欧美在线| 水蜜桃久久夜色精品一区的特点 | 国产精品一区二区在线播放| 久久综合色天天久久综合图片| 免费成人在线观看| 精品福利一区二区三区免费视频| 久久99这里只有精品| 国产欧美日韩精品一区| 国产另类ts人妖一区二区| 国产日韩欧美综合在线| 色婷婷av一区二区三区大白胸| 亚洲成人动漫在线观看| 在线不卡中文字幕| 国产精品一区免费视频| 日韩毛片精品高清免费| 在线亚洲高清视频| 九色综合狠狠综合久久| 国产精品伦一区| 91麻豆精品久久久久蜜臀| 国产成人亚洲综合a∨猫咪| 亚洲欧洲成人av每日更新| 欧美精品视频www在线观看| 国产激情偷乱视频一区二区三区| 亚洲人xxxx| 337p日本欧洲亚洲大胆精品| 91丨九色丨国产丨porny| 精品亚洲成a人| 一区二区三区精品久久久| 精品国产一区二区三区不卡| 色婷婷综合激情| 国产精品白丝av| 五月婷婷激情综合网| 国产精品乱人伦中文| 欧美精品一区二区三| 这里只有精品电影| 在线观看亚洲一区| 色综合久久中文综合久久牛| 国内一区二区在线| 久久精工是国产品牌吗| 免费在线观看视频一区| 日韩国产成人精品| 视频一区二区三区入口| 中文字幕视频一区| 欧美一级片在线看| 欧美日韩国产欧美日美国产精品| 色偷偷一区二区三区| www.99精品| 色天使色偷偷av一区二区| 成人av综合一区| 在线免费不卡电影| 欧美日韩高清一区二区不卡| 欧美体内she精视频| 欧美精品在线视频| 91精品国产福利在线观看 | 成人中文字幕合集| 成人性生交大片免费| 91在线一区二区| 欧美日韩欧美一区二区| 日韩精品一区二区在线| 久久精子c满五个校花| 一区二区中文字幕在线| 亚洲伊人伊色伊影伊综合网| 偷拍自拍另类欧美| 久久99蜜桃精品| 一本到不卡免费一区二区| 欧美男人的天堂一二区| 久久噜噜亚洲综合| 亚洲精品国产高清久久伦理二区| 午夜日韩在线观看| 国产精品 欧美精品| 欧美精品色综合| 国产精品久久久久天堂| 日韩成人午夜电影| eeuss影院一区二区三区| 日韩亚洲国产中文字幕欧美| 成人欧美一区二区三区视频网页| 亚洲va韩国va欧美va| 波多野结衣精品在线| 欧美videossexotv100| 一区二区三区国产精华| 国产麻豆精品在线观看| 日韩三级高清在线| 亚洲一区二区三区四区中文字幕| 国产成人夜色高潮福利影视| 91精品国产91久久久久久最新毛片| 国产精品福利一区| 国产精品主播直播| 欧美不卡在线视频| 蜜桃精品视频在线观看| 欧美大片日本大片免费观看| 日韩精品久久理论片| 欧美欧美午夜aⅴ在线观看| 中文字幕一区二区三区在线播放 | 国产欧美日韩精品在线| 精品亚洲国内自在自线福利|