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

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

?? hightime.c

?? 內核中關于nano計時的功能
?? C
字號:
/****************************************************************************** *                                                                            * * Copyright (c) David L. Mills 1993                                    * *                                                                            * * 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.      * *                                                                            * ******************************************************************************//* * Modification history hightime.c * * 31 Dec 93	David L. Mills *	Created file *//* * uniqtime() - Highball counter/timer interface */#include <machine/reg.h>#include <sys/param.h>#include <sys/user.h>#include <sys/kernel.h>#include <sys/vnode.h>#include <sys/proc.h>#include <machine/clock.h>#include <machine/high.h>#include <machine/pte.h>/* * Global variables */extern int tick;			/* tick the clock tocks to */extern struct timeval time;		/* system time *//* * Local variables */static struct timeval lasttime;		/* last time returned */static struct highregs *reg = NULL;	/* data/status pointer */u_long cnt_w0, cnt_w1, cnt_w2, cnt_w3;	/* counter registers *//* * Highball error counters */long high_badtime;			/* bad highball time *//* * The clock_offset variable is the offset which converts the hardware * counters to system time. It is initialized from the kernel time * variable upon first call to uniqtime() and on each call to the * settimeofday() system call. Also, it is adjusted by the adjtime() * and ntp_adjtime() system calls with the same increment as the * kernel time variable. */struct timeval clock_offset;		/* current time offset *//* * This routine reads the seconds and microseconds from the Highball * counter/timer interface and returns a Unix timeval. It is intended as * a dropin replacement for the SunOS 4.1.x uniqtime() routine or the * Van Jacobson microtime() routine. */microtime(tvp)	struct timeval *tvp;{	uniqtime(tvp);}intuniqtime(tvp)	struct timeval *tvp;{	struct timeval dtime, htime;	long ltemp;	/*	 * Map the registers and initialize the time offset. Initialize the	 * return time from the original system time, so if anything goes	 * wrong the system doesn't lock up.	 */	if (reg == NULL) {		reg = (struct highregs *)map_regs(HIGH_ADDR + 0x2000,		    sizeof(reg), OBIO);		reg->csr = DIV5;		clock_set(&time);	}	*tvp = time;	/*	 * Read the counter registers and convert to system time.	 */	highboard(&htime);	htime.tv_sec += clock_offset.tv_sec;	htime.tv_usec += clock_offset.tv_usec;	if (htime.tv_usec > 1000000) {		htime.tv_sec++;		htime.tv_usec -= 1000000;	}	/*	 * The following makes sure the clock is monotonically advancing	 * and never stuck, unless off by more than a second. If the	 * return time is too far different from the original system time,	 * return the original system time instead.	 */	dtime.tv_sec = lasttime.tv_sec - htime.tv_sec;	dtime.tv_usec = lasttime.tv_usec - htime.tv_usec;	if (dtime.tv_usec < 0) {		dtime.tv_usec += 1000000;		dtime.tv_sec--;	}	if (dtime.tv_sec == 0) {		if (dtime.tv_usec > tick - 2)			dtime.tv_usec = tick - 2;		htime.tv_usec += dtime.tv_usec + 1;		if (htime.tv_usec >= 1000000) {			htime.tv_usec -= 1000000;			htime.tv_sec++;		}	}	lasttime = htime;	ltemp = htime.tv_sec - time.tv_sec;	if (ltemp > MAXDIFF || ltemp < -MAXDIFF) {		high_badtime++;		return (EBADTIME);	}	*tvp = htime;	return (0);}/* * clock_set(tvp) * * This routine sets the clock offset of the highball counter relative * to the time of the argument. It is called by the settimeofday() * system call through its dependencies. */clock_set(tvp)	struct timeval *tvp;{	struct timeval ntime;	clock_offset = *tvp;	highboard(&ntime);	clock_offset.tv_sec -= ntime.tv_sec;	clock_offset.tv_usec -= ntime.tv_usec;	if (clock_offset.tv_usec < 0) {		clock_offset.tv_sec--;		clock_offset.tv_usec += 1000000;	}}/* * highboard(tvp) * * Read the seconds and microseconds from the Highboard and convert to * timeval format. Each 64-bit long word of the counter array includes * 16 bits of the composite counter. Read from high to low-rder, then * compare in reverse order. If a compare discrepancy is found, do it * again. Pray for no hot/cold bits. */highboard(tvp)	struct timeval *tvp;{	while(1) {		reg->clock_strobe = 1;		cnt_w3 = reg->cnt_w3 & 0xffff;		cnt_w2 = reg->cnt_w2 & 0xffff;		cnt_w1 = reg->cnt_w1 & 0xf;		cnt_w0 = reg->cnt_w0 & 0xffff;		if (cnt_w1 != (reg->cnt_w1 & 0xf))			continue;		if (cnt_w2 != (reg->cnt_w2 & 0xffff))			continue;		if (cnt_w3 != (reg->cnt_w3 & 0xffff))			continue;		break;	}	tvp->tv_sec = (cnt_w3 << 16) + cnt_w2;	tvp->tv_usec = (cnt_w1 << 16) + cnt_w0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕巨乱亚洲| 成人动漫视频在线| 在线免费视频一区二区| 精品一区二区三区香蕉蜜桃| 国产精品蜜臀av| 国产精品一区二区免费不卡 | 国产一区二区三区四区在线观看| 欧美精品一区二| 99国产精品久久| 亚洲丶国产丶欧美一区二区三区| 91污在线观看| 亚洲综合另类小说| 日韩网站在线看片你懂的| 日韩av成人高清| 久久久久久免费| 日韩主播视频在线| 精品福利二区三区| 国产不卡一区视频| 国产精品三级av在线播放| 日本乱人伦aⅴ精品| 亚洲不卡av一区二区三区| 国内外精品视频| 欧美日韩免费在线视频| 麻豆久久久久久| 7777精品伊人久久久大香线蕉完整版| 图片区小说区区亚洲影院| 久久精品日产第一区二区三区高清版| 精品成人a区在线观看| 欧美色爱综合网| 久久先锋影音av| 亚洲国产精品久久不卡毛片| 成人精品在线视频观看| 国产亚洲一二三区| 欧美日韩国产大片| 中文字幕一区在线观看视频| 99精品视频在线观看| 国产suv精品一区二区883| 国产成人免费高清| 成人午夜激情影院| 欧美性videosxxxxx| 欧美丝袜自拍制服另类| 日韩一本二本av| 91麻豆产精品久久久久久 | 欧美军同video69gay| 精品一区二区日韩| 青青草伊人久久| 亚洲精品少妇30p| 日韩手机在线导航| 91视频观看视频| 精品乱人伦小说| 欧美伦理影视网| 在线亚洲一区二区| 欧美在线综合视频| 色女孩综合影院| 国产精品亚洲专一区二区三区| 精品在线播放免费| 韩国一区二区三区| 国产成人免费视频网站 | 国产精品毛片大码女人| 久久综合九色综合97婷婷| 欧美成人欧美edvon| 日韩欧美在线不卡| 精品国产乱码久久久久久久久| 日韩一区二区在线看| 日韩欧美中文字幕精品| 精品国产伦一区二区三区观看方式| 在线91免费看| 日韩免费看的电影| 中文字幕精品在线不卡| 欧美激情一区二区三区不卡| 亚洲欧洲精品天堂一级| 亚洲欧洲综合另类| 伊人开心综合网| 日本午夜精品一区二区三区电影| 午夜视黄欧洲亚洲| 日韩**一区毛片| 国产老肥熟一区二区三区| 国产成人亚洲综合a∨婷婷图片| 99久免费精品视频在线观看| 色av综合在线| 欧美高清视频不卡网| 久久久久亚洲蜜桃| 亚洲欧洲精品天堂一级| 婷婷久久综合九色综合伊人色| 免费在线观看一区| 国产综合色在线| 99re66热这里只有精品3直播 | 色综合久久综合网欧美综合网| 欧洲精品一区二区| 欧美一区二区三区视频免费播放| 国产精品久久影院| 午夜精品视频一区| jiyouzz国产精品久久| 欧美日韩的一区二区| 精品久久久网站| 亚洲一线二线三线视频| 日韩中文字幕亚洲一区二区va在线 | 亚洲人成小说网站色在线| 亚洲一区二区三区三| 久久se这里有精品| 欧美性猛交xxxxxxxx| 精品国产乱码久久久久久老虎 | 国产女同互慰高潮91漫画| 亚洲色图一区二区三区| 国产中文字幕精品| 欧洲一区二区av| 国产婷婷一区二区| 肉丝袜脚交视频一区二区| 国产九九视频一区二区三区| 欧美美女一区二区| 综合自拍亚洲综合图不卡区| 久久精品久久精品| 欧美视频一区二区三区四区| 国产亚洲一区二区三区| 久久99国产精品麻豆| 91久久奴性调教| 久久久久久久久久电影| 久草这里只有精品视频| 欧美视频一区在线| 亚洲手机成人高清视频| 国内精品写真在线观看| 欧美老年两性高潮| 亚洲午夜精品网| 波多野结衣亚洲一区| 久久久99精品免费观看| 日韩二区在线观看| 成人激情小说网站| 久久久电影一区二区三区| 日本伊人色综合网| 欧美日韩在线直播| 亚洲色图丝袜美腿| 成人丝袜18视频在线观看| 国产亚洲成av人在线观看导航| 日韩国产一二三区| 3d动漫精品啪啪1区2区免费| 一区二区免费看| 国产乱子伦一区二区三区国色天香 | 亚洲精品ww久久久久久p站| 国产精品一区二区久激情瑜伽| 欧美老肥妇做.爰bbww视频| 日韩理论片一区二区| caoporn国产一区二区| 国产欧美综合色| 国产福利精品一区二区| 欧美成人伊人久久综合网| 日韩综合一区二区| 欧美电影免费观看完整版| 日本不卡中文字幕| 欧美人成免费网站| 另类综合日韩欧美亚洲| 欧美一区二区人人喊爽| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美性猛交xxxx乱大交退制版| 亚洲婷婷综合色高清在线| 成熟亚洲日本毛茸茸凸凹| 久久中文娱乐网| 国产精品99久久久| 亚洲欧美日本韩国| 91亚洲男人天堂| 精品国产凹凸成av人导航| 成人性生交大片免费看在线播放| 久久众筹精品私拍模特| 成人激情免费电影网址| 中文在线免费一区三区高中清不卡| 国产精品亚洲综合一区在线观看| 国产亚洲欧美一区在线观看| 国产99久久久精品| 一区二区三区欧美日韩| 欧美午夜精品电影| 久久99国产乱子伦精品免费| 久久久精品免费观看| 蜜桃传媒麻豆第一区在线观看| 制服.丝袜.亚洲.中文.综合| 久久精品国产一区二区三| 欧美极品美女视频| 99精品视频在线观看| 美女脱光内衣内裤视频久久影院| 日韩欧美激情一区| 成人av网址在线| 夜夜揉揉日日人人青青一国产精品| 奇米精品一区二区三区四区| 成人短视频下载| 一区二区三区中文字幕电影| 欧美日韩成人激情| 99在线热播精品免费| 一区二区三区久久| 久久美女艺术照精彩视频福利播放| caoporn国产一区二区| 午夜精品视频在线观看| 欧美一区二区啪啪| 久久机这里只有精品| 欧美激情一区二区在线| 欧美午夜一区二区三区免费大片| 精久久久久久久久久久| 中文字幕在线观看一区| 777午夜精品视频在线播放| 成人爽a毛片一区二区免费| 亚洲午夜激情av| 国产调教视频一区| 69堂成人精品免费视频|