亚洲欧美第一页_禁久久精品乱码_粉嫩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 <stdlib.h>#include <unistd.h>#include <stdio.h>#include <stropts.h>#include <string.h>#include <termio.h>#include <errno.h>#include <sys/time.h>#include <sys/timex.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 >= PPS_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 */#define PPS_CAP	(PPS_CAPTUREASSERT | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)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 */	){	int nonzero = 1;	/*	 * Check for valid arguments and attach PPS signal.	 */	if (!handle) {		errno = EFAULT;		return (-1);	/* null pointer */	}	if (ioctl(filedes, TIOCSPPS, &nonzero))		return (-1);	/*	 * 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;	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 */	}	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 */	){	struct ppsclockev ev;	pps_info_t infobuf;	/*	 * 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, TIOCGPPSEV, &ev) < 0)		return (-1);	/*	 * Apply offsets as specified. Note that only assert timestamps	 * are captured by this interface. Further note that apparently	 * in Solaris 2.7 the TIOCGPPSEV doesn't increment ev.serial,	 * and doesn't return the seconds value.	 */	memset(&infobuf, 0, sizeof(infobuf));	infobuf.assert_sequence = ev.serial;	infobuf.assert_timestamp.tv_sec = ev.tv.tv_sec;	infobuf.assert_timestamp.tv_nsec = ev.tv.tv_usec * 1000;	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 (0);}#endif /* !KERNEL */#endif /* _SYS_TIMEPPS_H_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区二区三区在线观看| 丰满放荡岳乱妇91ww| 在线电影欧美成精品| 天天色综合成人网| 精品日韩在线观看| 国产成人av福利| 《视频一区视频二区| 91丨九色丨蝌蚪富婆spa| 亚洲一区二区三区爽爽爽爽爽| 在线电影国产精品| 国产精品123| 一卡二卡三卡日韩欧美| 欧美一级片在线| 国产91丝袜在线播放九色| 亚洲狠狠丁香婷婷综合久久久| 欧美性猛片aaaaaaa做受| 麻豆精品一区二区av白丝在线| 国产日韩v精品一区二区| 色综合婷婷久久| 日韩不卡一区二区三区| 国产精品你懂的| 欧美精品高清视频| 波多野结衣中文一区| 亚洲va欧美va人人爽| 国产婷婷色一区二区三区在线| 色综合久久99| 国产一区三区三区| 亚洲成人av中文| 欧美激情一区二区在线| 欧美综合在线视频| 国产成人鲁色资源国产91色综 | 亚洲日本va在线观看| 欧美人xxxx| 99热在这里有精品免费| 久久福利资源站| 亚洲欧美日韩系列| 久久久天堂av| 91精品国产高清一区二区三区蜜臀| 丁香六月综合激情| 蜜桃av一区二区在线观看 | 日韩高清不卡在线| 一色桃子久久精品亚洲| 欧美xingq一区二区| 在线观看国产91| 成人午夜电影网站| 久色婷婷小香蕉久久| 亚洲国产精品视频| 亚洲精品乱码久久久久久黑人 | 91欧美一区二区| 国模一区二区三区白浆| 秋霞电影网一区二区| 一区二区三区欧美日韩| 中文成人综合网| 久久久亚洲精品一区二区三区| 欧美精品第1页| 91搞黄在线观看| 91免费视频网址| 成人美女视频在线看| 日韩精品在线网站| 成人高清视频在线| 激情久久久久久久久久久久久久久久| 伊人婷婷欧美激情| 亚洲女人****多毛耸耸8| 国产欧美日韩综合精品一区二区| 精品国产一区二区精华| 5月丁香婷婷综合| 在线电影院国产精品| 欧美日产在线观看| 欧美日韩国产欧美日美国产精品| 欧美亚男人的天堂| 欧美在线观看视频在线| 一本色道久久综合精品竹菊| 99re成人精品视频| a级精品国产片在线观看| 成人黄页在线观看| 99久久精品情趣| 91丨国产丨九色丨pron| 91麻豆精品一区二区三区| 99久久99久久免费精品蜜臀| 99精品视频在线观看| 日本精品一区二区三区四区的功能| 91丨九色porny丨蝌蚪| 在线日韩国产精品| 欧美日韩在线三级| 日韩三级视频在线看| 久久久午夜精品理论片中文字幕| 国产午夜精品一区二区三区视频 | 中文在线一区二区| 国产精品久久久久桃色tv| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 中文字幕在线一区| 亚洲成人在线观看视频| 蜜臀久久99精品久久久久久9| 国模一区二区三区白浆| 99久久久精品免费观看国产蜜| 色哦色哦哦色天天综合| 91精品婷婷国产综合久久性色| 精品国产伦一区二区三区观看方式 | www.一区二区| 不卡一区中文字幕| 欧美偷拍一区二区| 欧美mv日韩mv| 《视频一区视频二区| 日韩精品高清不卡| 国产美女视频一区| 色综合中文综合网| jlzzjlzz欧美大全| 精品视频全国免费看| 精品国产一二三| 亚洲精品写真福利| 久久99精品久久久久久| 欧美色倩网站大全免费| 精品国产人成亚洲区| 亚洲欧美电影院| 麻豆成人久久精品二区三区红| 日韩一区二区不卡| 亚洲色图制服丝袜| 五月激情六月综合| 国产999精品久久| 欧美日韩不卡一区二区| 国产日韩欧美综合在线| 樱桃国产成人精品视频| 国产福利一区在线观看| 欧美日韩国产首页| 国产精品久久久久久久久快鸭| 丝袜a∨在线一区二区三区不卡| 国产一区 二区 三区一级| 精品视频全国免费看| 中文字幕在线一区二区三区| 麻豆国产精品视频| 欧美年轻男男videosbes| 综合色天天鬼久久鬼色| 国产一区视频导航| 欧美一区二区三区四区五区| 亚洲少妇30p| 国产 欧美在线| 久久青草欧美一区二区三区| 天天色图综合网| 91国产视频在线观看| 亚洲欧洲日产国产综合网| 国产麻豆91精品| 欧美videossexotv100| 日韩高清不卡在线| 奇米色777欧美一区二区| 国产成人精品免费在线| 欧美色区777第一页| 国产精品日韩成人| 麻豆精品一区二区| 3d成人h动漫网站入口| 亚洲最大色网站| 91小视频免费观看| 中文字幕中文字幕一区| 福利一区二区在线观看| 久久女同精品一区二区| 蓝色福利精品导航| 精品少妇一区二区三区免费观看| 日日欢夜夜爽一区| 欧美精品久久久久久久多人混战 | 91视频国产观看| 26uuu久久天堂性欧美| 日韩av网站免费在线| 欧美另类z0zxhd电影| 亚洲国产精品视频| 欧美日韩亚洲综合一区二区三区| 亚洲自拍欧美精品| 欧美日韩国产小视频在线观看| 亚洲午夜免费福利视频| 欧美日本一道本在线视频| 亚洲综合精品久久| 69久久夜色精品国产69蝌蚪网| 国产经典欧美精品| 中文字幕国产精品一区二区| 成人综合日日夜夜| 亚洲精品中文字幕在线观看| 欧美色倩网站大全免费| 视频一区国产视频| 精品日韩成人av| 丰满亚洲少妇av| 亚洲激情自拍偷拍| 欧美酷刑日本凌虐凌虐| 久久激情综合网| 国产午夜一区二区三区| youjizz国产精品| 亚洲国产成人av网| 日韩欧美国产高清| 成人性生交大合| 伊人色综合久久天天人手人婷| 欧美男女性生活在线直播观看| 理论片日本一区| 国产精品毛片久久久久久| 色婷婷亚洲婷婷| 麻豆精品视频在线| 国产精品福利电影一区二区三区四区| 91网站在线播放| 美国十次了思思久久精品导航| 国产农村妇女毛片精品久久麻豆| 色呦呦国产精品| 久久国产人妖系列| 亚洲欧美一区二区久久| 欧美一区二区久久久|