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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? linux.c

?? PeerSec Networks MatrixSSL?is an embedded SSL implementation designed for small footprint applicatio
?? C
字號(hào):
/* *	linux.c *	Release $Name: MATRIXSSL_1_7_3_OPEN $ * *	Linux compatibility layer *	Other UNIX like operating systems should also be able to use this *	implementation without change. *//* *	Copyright (c) PeerSec Networks, 2002-2005. All Rights Reserved. *	The latest version of this code is available at http://www.matrixssl.org * *	This software is open source; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2 of the License, or *	(at your option) any later version. * *	This General Public License does NOT permit incorporating this software  *	into proprietary programs.  If you are unable to comply with the GPL, a  *	commercial license for this software may be purchased from PeerSec Networks *	at http://www.peersec.com *	 *	This program is distributed in WITHOUT ANY WARRANTY; without even the  *	implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  *	See the GNU General Public License for more details. *	 *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *	http://www.gnu.org/copyleft/gpl.html *//******************************************************************************/#ifdef LINUX#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <sys/times.h>#include <time.h>#include "../osLayer.h"#if defined(__i386__) || defined(RDTSC)#include <asm/timex.h>/*	As defined in asm/timex.h for x386:*/#ifndef rdtscll	#define rdtscll(val) __asm__ __volatile__("rdtsc" : "=A" (val))#endifstatic sslTime_t	hiresStart; 	/* zero-time */static sslTime_t	hiresFreq; 		/* tics per second */#else /* __i386__ */static uint32		prevTicks; 		/* Check wrap */static sslTime_t	elapsedTime; 	/* Last elapsed time */#endif#ifdef USE_MULTITHREADING#include <pthread.h>static pthread_mutexattr_t	attr;#endif/* max sure we don't retry reads forever */#define	MAX_RAND_READS		1024static 	int32	urandfd = -1;static 	int32	randfd	= -1;int32 sslOpenOsdep(void){	FILE		*cpuInfo;	double		mhz;	char		line[80] = "";	char		*tmpstr;	int32 		c;/*	Open /dev/random access non-blocking.*/	if ((randfd = open("/dev/random", O_RDONLY | O_NONBLOCK)) < 0) {		return -1;	}	if ((urandfd = open("/dev/urandom", O_RDONLY)) < 0) {		close(randfd);		return -1;	}/*	Initialize times*/#if defined(__i386__) || defined(RDTSC)	if ((cpuInfo = fopen ("/proc/cpuinfo","r")) == NULL) {		matrixStrDebugMsg("Error opening /proc/cpuinfo\n", NULL);		return -2;	}	while ((!feof(cpuInfo)) && (strncasecmp(line,"cpu MHz",7) != 0)){		fgets(line,79,cpuInfo);	}	if (strncasecmp(line,"cpu MHz",7) == 0){ 		tmpstr = strchr(line,':');		tmpstr++;		c = strspn(tmpstr, " \t");		tmpstr +=c;		c = strcspn(tmpstr, " \t\n\r");		tmpstr[c] = '\0';		mhz = 1000000 * atof(tmpstr);		hiresFreq = (sslTime_t)mhz;		fclose (cpuInfo);		} else {		fclose (cpuInfo);		hiresStart = 0;		return -3;	}	rdtscll(hiresStart);#endif /* __i386__ *//*	FUTURE - Solaris doesn't support recursive mutexes!	We don't use them internally anyway, so this is not an issue,	but we like to set this if we can because it's silly for a thread to lock	itself, rather than error or recursive lock*/#ifdef USE_MULTITHREADING	pthread_mutexattr_init(&attr);#ifndef OSX	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);#endif /* !OSX */#endif /* USE_MULTITHREADING */	return psOpenMalloc(MAX_MEMORY_USAGE);}int32 sslCloseOsdep(void){	psCloseMalloc();#ifdef USE_MULTITHREADING	pthread_mutexattr_destroy(&attr);#endif	close(randfd);	close(urandfd);	return 0;}/*	Read from /dev/random non-blocking first, then from urandom if it would 	block.  Also, handle file closure case and re-open.*/int32 sslGetEntropy(unsigned char *bytes, int32 size){	int32				rc, sanity, retry, readBytes;	unsigned char 	*where = bytes;	sanity = retry = rc = readBytes = 0;	while (size) {		if ((rc = read(randfd, where, size)) < 0 || sanity > MAX_RAND_READS) {			if (errno == EINTR) {				if (sanity > MAX_RAND_READS) {					return -1;				}				sanity++;				continue;			} else if (errno == EAGAIN) {				break;			} else if (errno == EBADF && retry == 0) {				close(randfd);				if ((randfd = open("/dev/random", O_RDONLY | O_NONBLOCK)) < 0) {					break;				}				retry++;				continue;			} else {				break;			}		}		readBytes += rc;		where += rc;		size -= rc;	}	sanity = retry = 0;		while (size) {		if ((rc = read(urandfd, where, size)) < 0 || sanity > MAX_RAND_READS) {			if (errno == EINTR) {				if (sanity > MAX_RAND_READS) {					return -1;				}				sanity++;				continue;			} else if (errno == EBADF && retry == 0) {				close(urandfd);				if ((urandfd = 					open("/dev/urandom", O_RDONLY | O_NONBLOCK)) < 0) {					return -1;				}				retry++;				continue;			} else {				return -1;			}		}		readBytes += rc;		where += rc;		size -= rc;	}	return readBytes;}#ifdef DEBUGvoid psBreak(void){	abort();}#endif/******************************************************************************/#ifdef USE_MULTITHREADINGint32 sslCreateMutex(sslMutex_t *mutex){	if (pthread_mutex_init(mutex, &attr) != 0) {		return -1;	}		return 0;}int32 sslLockMutex(sslMutex_t *mutex){	if (pthread_mutex_lock(mutex) != 0) {		return -1;	}	return 0;}int32 sslUnlockMutex(sslMutex_t *mutex){	if (pthread_mutex_unlock(mutex) != 0) {		return -1;	}	return 0;}void sslDestroyMutex(sslMutex_t *mutex){	pthread_mutex_destroy(mutex);}#endif /* USE_MULTITHREADING *//*****************************************************************************//*	Use a platform specific high resolution timer*/#if defined(__i386__) || defined(RDTSC)int32 sslInitMsecs(sslTime_t *t){	unsigned long long	diff;	int32					d;	rdtscll(*t);	diff = *t - hiresStart;	d = (int32)((diff * 1000) / hiresFreq);	return d;}/*	Return the delta in seconds between two time values*/long sslDiffMsecs(sslTime_t then, sslTime_t now){	unsigned long long	diff;	diff = now - then;	return (long)((diff * 1000) / hiresFreq);}/*	Return the delta in seconds between two time values*/int32 sslDiffSecs(sslTime_t then, sslTime_t now){	unsigned long long	diff;	diff = now - then;	return (int32)(diff / hiresFreq);}/*	Time comparison.  1 if 'a' is less than or equal.  0 if 'a' is greater*/int32	sslCompareTime(sslTime_t a, sslTime_t b){	if (a <= b) {		return 1;	}	return 0;}#else /* __i386__ */int32 sslInitMsecs(sslTime_t *timePtr){	struct tms		tbuff;	uint32	t, deltat, deltaticks;                                                                                /* *	times() returns the number of clock ticks since the system *	was booted.  If it is less than the last time we did this, the *	clock has wrapped around 0xFFFFFFFF, so compute the delta, otherwise *	the delta is just the difference between the new ticks and the last *	ticks.  Convert the elapsed ticks to elapsed msecs using rounding. */	if ((t = times(&tbuff)) >= prevTicks) {		deltaticks = t - prevTicks;	} else {		deltaticks = (0xFFFFFFFF - prevTicks) + 1 + t;	}	deltat = ((deltaticks * 1000) + (CLK_TCK / 2)) / CLK_TCK;                                                                     /* *	Add the delta to the previous elapsed time. */	elapsedTime.usec += ((deltat % 1000) * 1000);	if (elapsedTime.usec >= 1000000) {		elapsedTime.usec -= 1000000;		deltat += 1000;	}	elapsedTime.sec += (deltat / 1000);	prevTicks = t;                                                                                /* *	Return the current elapsed time. */	timePtr->usec = elapsedTime.usec;	timePtr->sec = elapsedTime.sec;	return (timePtr->usec / 1000) + timePtr->sec * 1000;}/*	Return the delta in seconds between two time values*/long sslDiffMsecs(sslTime_t then, sslTime_t now){	return (long)((now.sec - then.sec) * 1000);}/*	Return the delta in seconds between two time values*/int32 sslDiffSecs(sslTime_t then, sslTime_t now){	return (int32)(now.sec - then.sec);}/*	Time comparison.  1 if 'a' is less than or equal.  0 if 'a' is greater*/int32	sslCompareTime(sslTime_t a, sslTime_t b){	if (a.sec < b.sec) {		return 1;	} else if (a.sec == b.sec) {		if (a.usec <= b.usec) {			return 1;		} else {			return 0;		}	}		return 0;}#endif /* __i386__ */#endif /* LINUX *//******************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品国产热久久91蜜凸| 91精品国产综合久久蜜臀 | 欧美成人女星排行榜| 日本系列欧美系列| av成人免费在线| 综合亚洲深深色噜噜狠狠网站| 丁香亚洲综合激情啪啪综合| 中文字幕不卡在线播放| 91免费视频大全| 视频一区中文字幕| 日韩精品一区二区三区视频在线观看| 国产曰批免费观看久久久| 国产喂奶挤奶一区二区三区| 成人免费看的视频| 亚洲最大的成人av| 日韩欧美中文字幕一区| 丁香五精品蜜臀久久久久99网站| 亚洲色图欧洲色图婷婷| 欧美日韩高清一区| 国产精品乡下勾搭老头1| 亚洲黄一区二区三区| 欧美疯狂性受xxxxx喷水图片| 久久超碰97人人做人人爱| 欧美激情综合网| 欧美久久久一区| 国产精品 日产精品 欧美精品| 亚洲美女视频在线观看| 欧美美女直播网站| 国产精品一区二区不卡| 一区二区三区在线观看视频| 日韩写真欧美这视频| 99热精品一区二区| 蜜臀99久久精品久久久久久软件| 国产精品女人毛片| 日韩一级黄色大片| 色综合中文字幕| 狠狠狠色丁香婷婷综合激情 | 欧美精品一区二区三区蜜桃 | 日韩一级二级三级精品视频| www.亚洲在线| 美国精品在线观看| 亚洲老妇xxxxxx| 国产午夜精品一区二区三区嫩草| 欧美亚洲综合网| 播五月开心婷婷综合| 麻豆一区二区99久久久久| 亚洲卡通欧美制服中文| 欧美激情中文不卡| 精品久久久久一区| 欧美福利一区二区| 在线免费观看成人短视频| 国产99久久久久| 久久99国产精品久久99| 亚洲第一狼人社区| 亚洲视频在线观看三级| 国产午夜精品久久| 久久久天堂av| 欧美大片一区二区三区| 欧美日韩高清在线| 欧美天堂亚洲电影院在线播放| 成人成人成人在线视频| 国产一区二区伦理片| 久久国产精品区| 奇米777欧美一区二区| 亚洲成av人综合在线观看| 亚洲在线中文字幕| 亚洲欧美另类小说视频| 亚洲欧洲99久久| 1024亚洲合集| 亚洲色图欧美偷拍| 亚洲乱码中文字幕| 亚洲精品亚洲人成人网| 亚洲精品一二三四区| 亚洲蜜臀av乱码久久精品| 亚洲猫色日本管| 亚洲人成在线观看一区二区| 日韩伦理电影网| 亚洲免费av高清| 一区二区免费在线播放| 国产精品护士白丝一区av| 中文字幕精品—区二区四季| 中文子幕无线码一区tr| 国产精品卡一卡二| 亚洲欧美日韩国产中文在线| 亚洲免费在线视频一区 二区| 中文字幕日韩一区| 亚洲九九爱视频| 午夜激情一区二区| 老司机精品视频在线| 国产美女精品人人做人人爽| 东方aⅴ免费观看久久av| 99久久精品一区| 在线观看av一区| 日韩欧美一区二区在线视频| 久久亚洲综合av| 国产精品高清亚洲| 午夜精品一区二区三区免费视频| 六月丁香婷婷色狠狠久久| 国产精品夜夜嗨| 91免费看视频| 91精品国产色综合久久| 久久久国产午夜精品| 亚洲日本va在线观看| 亚洲成人三级小说| 国产乱子伦视频一区二区三区 | 一区二区在线观看免费| 香蕉加勒比综合久久| 精品一区二区在线看| 国产成人av电影在线播放| 色呦呦国产精品| 日韩你懂的在线观看| 国产精品对白交换视频| 天天影视色香欲综合网老头| 国产精品一区二区三区乱码 | 国产99久久久国产精品免费看| 91视频国产观看| 日韩欧美一区二区久久婷婷| 国产精品嫩草影院av蜜臀| 天天综合网天天综合色| 粗大黑人巨茎大战欧美成人| 欧美日韩国产精品自在自线| 久久久久久久久蜜桃| 一区二区三国产精华液| 国产乱码精品一区二区三区五月婷| 色香蕉成人二区免费| 久久久亚洲综合| 丝袜脚交一区二区| 91丨porny丨最新| 欧美mv和日韩mv的网站| 一区二区三区不卡视频| 成人晚上爱看视频| 日韩三级高清在线| 亚洲综合在线免费观看| 大陆成人av片| 日本一区二区三区国色天香| 亚洲高清免费在线| 91网上在线视频| 国产日韩欧美电影| 精品制服美女久久| 欧美日韩国产一级| 最新国产精品久久精品| 国产一区二区三区四区五区入口| 欧美日韩一区 二区 三区 久久精品| 欧美高清一级片在线观看| 日本不卡一区二区三区高清视频| 色94色欧美sute亚洲13| 亚洲国产精品成人综合| 韩国女主播成人在线观看| 欧美精品久久99| 亚洲国产视频直播| 色婷婷激情综合| 亚洲精品成人悠悠色影视| youjizz国产精品| 1区2区3区精品视频| 99久久免费精品高清特色大片| 国产亚洲成年网址在线观看| 国产一区二区电影| 国产亚洲精品资源在线26u| 久久99久久99小草精品免视看| 欧美一区二区三区四区高清 | 久久99这里只有精品| 欧美丰满美乳xxx高潮www| 午夜成人在线视频| 在线观看成人小视频| 亚洲欧美成人一区二区三区| 91麻豆swag| 亚洲精品亚洲人成人网在线播放| 91视频www| 亚洲精品国产品国语在线app| 91视频一区二区| 一区二区三区中文字幕电影 | 青青草国产成人av片免费| 99re热这里只有精品免费视频| 国产精品久线观看视频| 国产麻豆午夜三级精品| 欧美精品第1页| 亚洲午夜精品久久久久久久久| 色94色欧美sute亚洲线路二 | 91久久精品一区二区| 亚洲卡通欧美制服中文| 91麻豆免费看| 亚洲丝袜自拍清纯另类| 欧美日本在线一区| 日韩国产欧美三级| 91精品国产色综合久久不卡蜜臀 | 亚洲成人免费影院| 成人午夜电影小说| 亚洲综合无码一区二区| 欧美专区亚洲专区| 婷婷丁香久久五月婷婷| 久久久亚洲国产美女国产盗摄| 黑人精品欧美一区二区蜜桃| 精品理论电影在线| 亚洲高清免费一级二级三级| 久久在线观看免费| 高清国产一区二区| 久久伊99综合婷婷久久伊| 91亚洲资源网| 亚洲尤物在线视频观看| 日韩女同互慰一区二区|