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

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

?? rtlinux_signal.c

?? fsmlabs的real time linux的內核
?? C
字號:
/* * (C) Finite State Machine Labs Inc. 2000 business@fsmlabs.com * * Released under the terms of GPL 2. * Open RTLinux makes use of a patented process described in * US Patent 5,995,745. Use of this process is governed * by the Open RTLinux Patent License which can be obtained from * www.fsmlabs.com/PATENT or by sending email to * licensequestions@fsmlabs.com *//* * This is a hack to get NR_IRQS on the PowerPC since it depends on * the configured machine and processor type as well as having __KERNEL__ * defined.  Other architectures (alpha, mips) may need this one day as well. * -- Cort */#define __KERNEL__#include <linux/autoconf.h>#include <asm/irq.h>#undef __KERNEL__#include <fcntl.h>#include <linux/unistd.h>#include <asm/errno.h>#include <rtlinux_signal.h>/*#include <sys/mman.h>*//* sys/mman.h has old and wrong values -- Cort */#include <asm/mman.h>#include <stdio.h>#include <pthread.h>int gethrtime_init = 0;#define	SETUP_CALL(ptr,file)				\	if (!ptr)					\	{						\		char s[256];				\		int fd;					\							\		memset(s, 0, 256);			\		if ((fd = open(file, O_RDONLY)) < 0)	\			return (-1);			\		if ((read(fd, &s, 256)) < 0)		\			return (-1);			\		ptr = (typeof(ptr)) strtoul(s, NULL, 10);	\		close(fd);				\	}/* gethrtime function pointer */hrtime_t(*gethrtime_p) (void);int (*rtf_put_p) (unsigned int fifo, void *buf, int count);int (*rtf_get_p) (unsigned int fifo, void *buf, int count);unsigned long __NR_rtf_create_p = 0;unsigned long __NR_rtf_destroy_p = 0;volatile unsigned long create_fifo_retval, create_fifo_num,    create_fifo_size, create_fifo_done;volatile unsigned long destroy_fifo_retval, destroy_fifo_num,    destroy_fifo_done;hrtime_t gethrtime(void){	return gethrtime_p();}int rtf_put(unsigned int fifo, void *buf, int count){	return rtf_put_p(fifo, buf, count);}int rtf_get(unsigned int fifo, void *buf, int count){	return rtf_get_p(fifo, buf, count);}/* system calls for FIFO manipulation -Nathan */_syscall1(int, rtf_destroy_p, unsigned int, fifo);_syscall2(int, rtf_create_p, unsigned int, fifo, int, size);int rtf_destroy(unsigned int fifo){	if (__NR_rtf_destroy_p == 0)		SETUP_CALL(__NR_rtf_destroy_p,			   "/proc/rtlinux/rtf_destroy");	return (rtf_destroy_p(fifo));}int rtf_create(unsigned int fifo, int size){	if (__NR_rtf_create_p == 0)		SETUP_CALL(__NR_rtf_create_p, "/proc/rtlinux/rtf_create");	return (rtf_create_p(fifo, size));}/* global signal set of per-process blocked signals -Nathan */rtlinux_sigset_t rtlinux_blocked = { 0, };int rtlinux_sigaction(int sig, struct rtlinux_sigaction *act,		      struct rtlinux_sigaction *oldact){	char s[256];	int fd;	unsigned long err;	SETUP_CALL(gethrtime_p, "/proc/rtlinux/gethrtime");	SETUP_CALL(rtf_put_p, "/proc/rtlinux/rtf_put");	SETUP_CALL(rtf_get_p, "/proc/rtlinux/rtf_get");	/* Lock all our pages so we don't have to worry about faults	 * when the code is running in kernel mode.	 */	if (mlockall(MCL_CURRENT | MCL_FUTURE)) {		perror("mlockall");		return -1;	}	sprintf(s, "/proc/rtlinux/sigaction");	if ((fd = open(s, O_WRONLY)) <= -1)		return -1;	act->sa_signal = sig;	if ((err = write(fd, act, sizeof(*act))) != sizeof(*act))		return -1;	else		return 0;}/* XXX: This function (and functions it depends upon) will allow you to set * non-existant signals as blocked or unblocked.  Mainly, this is for forward * compatibility when we add more signals; please don't abuse it.  -Nathan */int rtlinux_sigprocmask(int how, rtlinux_sigset_t * set,			rtlinux_sigset_t * oldset){	int retval, i;	int fd;	/* first save the old set */	if (oldset != NULL) {		for (i = 0; i < RTLINUX_SIGMAX; i++) {			retval = rtlinux_sigismember(&rtlinux_blocked, i);			if (retval == -1)				return (-1);			else if (retval == 1)				if ((rtlinux_sigaddset(oldset, i)) == -1)					return (-1);		}	}	if (how == RTLINUX_SIG_BLOCK) {		for (i = 0; i < RTLINUX_SIGMAX; i++) {			retval = rtlinux_sigismember(set, i);			if (retval == -1)				return (-1);			else if (retval == 1)				if (				    (rtlinux_sigaddset				     (&rtlinux_blocked, i)) == -1)					return (-1);		}	} else if (how == RTLINUX_SIG_UNBLOCK) {		for (i = 0; i < RTLINUX_SIGMAX; i++) {			retval = rtlinux_sigismember(set, i);			if (retval == -1)				return (-1);			else if (retval == 1)				if (				    (rtlinux_sigdelset				     (&rtlinux_blocked, i)) == -1)					return (-1);		}	} else if (how == RTLINUX_SIG_SETMASK) {		rtlinux_sigemptyset(&rtlinux_blocked);		for (i = 0; i < RTLINUX_SIGMAX; i++) {			retval = rtlinux_sigismember(set, i);			if (retval == -1)				return (-1);			else if (retval == 1)				if (				    (rtlinux_sigaddset				     (&rtlinux_blocked, i)) == -1)					return (-1);		}	} else {		return (-1);	}	if ((fd = open("/proc/rtlinux/sigprocmask", O_WRONLY)) < 0)		return (-1);	if (	    (retval =	     write(fd, &rtlinux_blocked,		   sizeof(rtlinux_sigset_t))) != sizeof(rtlinux_sigset_t)) {		close(fd);		fprintf(stderr, "wrote %d of %d bytes\n", retval,			sizeof(rtlinux_sigset_t));		return (-1);	}	if ((close(fd)) != 0)		return (-1);	/* if all else suceeds */	return (0);}/* The size of rtlinux_sigset_t is currently 34 bytes -- 272 bits, so we have * to do some malicious bit twiddling of our own here. The first two functions * aren't so bad, just beware the rest. -Nathan */int rtlinux_sigemptyset(rtlinux_sigset_t * set){	if (set == NULL)		return (-1);	memset(set, 0x00, sizeof(rtlinux_sigset_t));	return (0);}int rtlinux_sigfillset(rtlinux_sigset_t * set){	if (set == NULL)		return (-1);	memset(set, 0xff, sizeof(rtlinux_sigset_t));	return (0);}int rtlinux_sigaddset(rtlinux_sigset_t * set, int sig){	int offset;	unsigned long int value;	if (set == NULL)		return (-1);	if (sig > RTLINUX_SIGMAX) {		errno = EINVAL;		return (-1);	}	offset = (int) ((sig / (sizeof(unsigned long int) * 8)));	value = 1 << (sig % (sizeof(unsigned long int) * 8));	set->__val[offset] |= value;	return (0);}int rtlinux_sigdelset(rtlinux_sigset_t * set, int sig){	int offset;	unsigned long int value;	if (set == NULL)		return (-1);	if (sig > RTLINUX_SIGMAX) {		errno = EINVAL;		return (-1);	}	offset = (int) ((sig / (sizeof(unsigned long int) * 8)));	value = 1 << (sig % (sizeof(unsigned long int) * 8));	set->__val[offset] &= ~(value);	return (0);}int rtlinux_sigismember(const rtlinux_sigset_t * set, int sig){	int offset;	unsigned long int value;	if (set == NULL)		return (-1);	if (sig > RTLINUX_SIGMAX) {		errno = EINVAL;		return (-1);	}	offset = (int) ((sig / (sizeof(unsigned long int) * 8)));	value = 1 << (sig % (sizeof(unsigned long int) * 8));	if (((unsigned long int) (set->__val[offset] & value)) > 0)		return (1);	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久91精品国产一区二区精品| 精品国产凹凸成av人网站| 国产一区二区三区精品视频| 天天综合网天天综合色| 亚洲国产wwwccc36天堂| 一区二区三区不卡在线观看| 一二三区精品视频| 亚洲成人www| 日韩av电影免费观看高清完整版在线观看 | 日本二三区不卡| 成人av电影免费在线播放| 成人精品视频网站| 91麻豆视频网站| 色狠狠桃花综合| 91精品国产综合久久福利软件 | 在线一区二区三区四区五区 | 在线不卡a资源高清| 91精品在线麻豆| 26uuu色噜噜精品一区二区| 亚洲精品一区二区三区影院 | 欧美麻豆精品久久久久久| 欧美日韩精品欧美日韩精品 | 国内精品视频666| 国产成人精品一区二区三区四区| 成人综合在线观看| 日本精品视频一区二区| 日韩欧美国产精品一区| 国产日韩高清在线| 亚洲电影在线免费观看| 秋霞影院一区二区| 成人在线一区二区三区| 欧美午夜精品一区二区蜜桃| 日韩三级视频中文字幕| 亚洲日韩欧美一区二区在线| 欧美aaaaa成人免费观看视频| 国产一区二区在线看| 一本久久精品一区二区| 日韩限制级电影在线观看| 国产精品久久久久毛片软件| 亚洲超碰97人人做人人爱| 国产麻豆成人精品| 欧美日韩国产高清一区二区三区 | 精品在线亚洲视频| 色综合一个色综合| 26uuu久久综合| 亚洲va在线va天堂| 99r精品视频| 久久亚洲捆绑美女| 日韩国产在线一| 99久久伊人网影院| 国产亚洲一区二区三区在线观看 | 国产精品77777| 欧美理论电影在线| 亚洲免费观看高清完整| 国产一区二区三区最好精华液| 欧美日韩一区不卡| 亚洲精品日韩专区silk| 国产精品自拍一区| 日韩一区二区三区免费观看| 亚洲乱码中文字幕| av资源网一区| 国产精品国产三级国产普通话三级 | 国产在线精品一区二区不卡了| 欧美亚洲禁片免费| 亚洲天堂免费看| 99精品在线免费| 1000部国产精品成人观看| 国产精品综合在线视频| 久久人人超碰精品| 激情综合色丁香一区二区| 欧美一区二区三区成人| 日本亚洲三级在线| 欧美一区二区福利在线| 天堂久久久久va久久久久| 欧美精品日日鲁夜夜添| 午夜精品久久一牛影视| 欧美图区在线视频| 亚洲福利视频导航| 欧美一区二区三区免费大片| 免费美女久久99| 欧美mv和日韩mv的网站| 国产一区免费电影| 国产精品第13页| 欧洲av一区二区嗯嗯嗯啊| 亚洲一区在线观看视频| 欧美精品 日韩| 久久精品国产久精国产| 亚洲精品一区二区三区蜜桃下载 | 亚洲精品综合在线| 欧美系列一区二区| 天堂一区二区在线| 精品国产网站在线观看| 成人性生交大片免费看视频在线| 中文成人综合网| 欧美视频中文一区二区三区在线观看| 亚洲国产精品一区二区久久恐怖片| 欧美丝袜丝nylons| 国产在线国偷精品产拍免费yy| 国产精品久久久久久久浪潮网站 | 国产在线精品一区二区三区不卡 | 五月天丁香久久| 26uuu精品一区二区三区四区在线| 国产成人夜色高潮福利影视| 亚洲三级小视频| 欧美tickling网站挠脚心| 99综合电影在线视频| 亚洲第一二三四区| 国产日韩欧美不卡| 777亚洲妇女| 成人网页在线观看| 天堂久久久久va久久久久| 国产欧美精品国产国产专区 | 精品三级在线观看| 色网综合在线观看| 麻豆精品在线看| 亚洲视频在线一区| 精品乱码亚洲一区二区不卡| 色又黄又爽网站www久久| 久久精品av麻豆的观看方式| 亚洲色欲色欲www在线观看| 精品日韩一区二区| 欧美日韩免费在线视频| 国产成人av在线影院| 日本不卡一区二区三区高清视频| 日本一区二区三区电影| 日韩小视频在线观看专区| 在线一区二区观看| 国产精品一二三四五| 亚洲电影一区二区三区| 国产精品你懂的在线| 日韩欧美国产三级| 欧美日韩国产不卡| 色美美综合视频| av一二三不卡影片| 福利电影一区二区三区| 蜜桃av一区二区在线观看| 亚洲影院免费观看| 中文字幕在线不卡一区二区三区| 精品国产精品一区二区夜夜嗨| 欧美性色黄大片| 91福利在线导航| 色哟哟欧美精品| 色婷婷亚洲综合| 99国产精品久| 一本一道久久a久久精品 | 欧美一区二区免费| 在线观看91av| 欧美日韩卡一卡二| 91国在线观看| 欧美视频中文字幕| 精品视频123区在线观看| 在线亚洲一区观看| 欧美亚洲日本一区| 欧美精品三级日韩久久| 在线播放视频一区| 欧美日本一区二区| 欧美一级午夜免费电影| 欧美一区午夜精品| 日韩精品中文字幕在线不卡尤物 | 国产成人av电影在线观看| 国产毛片精品视频| 成人自拍视频在线观看| 99热这里都是精品| 在线精品国精品国产尤物884a| 91免费观看视频| 欧美亚洲动漫精品| 欧美一区二区三区小说| 日韩免费观看高清完整版| 精品欧美乱码久久久久久| 精品av久久707| 成人免费小视频| 亚洲一区二区三区四区在线免费观看 | 亚洲一区在线免费观看| 午夜精品久久久久久久99樱桃| 午夜av一区二区三区| 久草精品在线观看| 成人精品视频网站| 欧美日韩亚洲综合在线| 欧美精品一区视频| 亚洲视频1区2区| 另类小说综合欧美亚洲| 大白屁股一区二区视频| 欧美日韩亚洲丝袜制服| 久久亚区不卡日本| 亚洲色图欧洲色图婷婷| 天天影视涩香欲综合网| 国产丶欧美丶日本不卡视频| 91丨国产丨九色丨pron| 欧美一级搡bbbb搡bbbb| 中文字幕av在线一区二区三区| 一区二区三区成人| 国产美女久久久久| 欧美日韩一二三| 国产精品视频看| 狂野欧美性猛交blacked| 99re8在线精品视频免费播放| 欧美剧在线免费观看网站| 国产人成一区二区三区影院| 亚洲图片欧美色图| 高清在线不卡av|