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

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

?? irixsig.c

?? ARM 嵌入式 系統(tǒng) 設(shè)計(jì)與實(shí)例開發(fā) 實(shí)驗(yàn)教材 二源碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
		recalc_sigpending(current);		spin_unlock_irq(&current->sigmask_lock);	}	if(old) {		error = verify_area(VERIFY_WRITE, old, sizeof(*old));		if(error)			return error;		__copy_to_user(old, &current->blocked, sizeof(unsigned long)*4);	}	return 0;}asmlinkage int irix_sigsuspend(struct pt_regs *regs){	sigset_t *uset, saveset, newset;	uset = (sigset_t *) regs->regs[4];	if (copy_from_user(&newset, uset, sizeof(sigset_t)))		return -EFAULT;	sigdelsetmask(&newset, ~_BLOCKABLE);	spin_lock_irq(&current->sigmask_lock);	saveset = current->blocked;	current->blocked = newset;	recalc_sigpending(current);	spin_unlock_irq(&current->sigmask_lock);	regs->regs[2] = -EINTR;	while (1) {		current->state = TASK_INTERRUPTIBLE;		schedule();		if (do_irix_signal(&saveset, regs))			return -EINTR;	}}/* hate hate hate... */struct irix5_siginfo {	int sig, code, error;	union {		char unused[128 - (3 * 4)]; /* Safety net. */		struct {			int pid;			union {				int uid;				struct {					int utime, status, stime;				} child;			} procdata;		} procinfo;		unsigned long fault_addr;		struct {			int fd;			long band;		} fileinfo;		unsigned long sigval;	} stuff;};static inline unsigned long timespectojiffies(struct timespec *value){	unsigned long sec = (unsigned) value->tv_sec;	long nsec = value->tv_nsec;	if (sec > (LONG_MAX / HZ))		return LONG_MAX;	nsec += 1000000000L / HZ - 1;	nsec /= 1000000000L / HZ;	return HZ * sec + nsec;}asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,				struct timespec *tp){	long expire = MAX_SCHEDULE_TIMEOUT;	sigset_t kset;	int i, sig, error, timeo = 0;#ifdef DEBUG_SIG	printk("[%s:%d] irix_sigpoll_sys(%p,%p,%p)\n",	       current->comm, current->pid, set, info, tp);#endif	/* Must always specify the signal set. */	if(!set)		return -EINVAL;	error = verify_area(VERIFY_READ, set, sizeof(kset));	if (error)		goto out;	__copy_from_user(&kset, set, sizeof(set));	if (error)		goto out;	if (info && clear_user(info, sizeof(*info))) {		error = -EFAULT;		goto out;	}	if(tp) {		error = verify_area(VERIFY_READ, tp, sizeof(*tp));		if(error)			return error;		if(!tp->tv_sec && !tp->tv_nsec) {			error = -EINVAL;			goto out;		}		expire = timespectojiffies(tp)+(tp->tv_sec||tp->tv_nsec);	}	while(1) {		long tmp = 0;		current->state = TASK_INTERRUPTIBLE;		expire = schedule_timeout(expire);		for (i=0; i<=4; i++)			tmp |= (current->pending.signal.sig[i] & kset.sig[i]);		if (tmp)			break;		if (!expire) {			timeo = 1;			break;		}		if (signal_pending(current))			return -EINTR;	}	if (timeo)		return -EAGAIN;	for(sig = 1; i <= 65 /* IRIX_NSIG */; sig++) {		if (sigismember (&kset, sig))			continue;		if (sigismember (&current->pending.signal, sig)) {			/* XXX need more than this... */			if (info)				info->sig = sig;			error = 0;			goto out;		}	}	/* Should not get here, but do something sane if we do. */	error = -EINTR;out:	return error;}/* This is here because of irix5_siginfo definition. */#define P_PID    0#define P_PGID   2#define P_ALL    7extern int getrusage(struct task_struct *, int, struct rusage *);#define W_EXITED     1#define W_TRAPPED    2#define W_STOPPED    4#define W_CONT       8#define W_NOHANG    64#define W_MASK      (W_EXITED | W_TRAPPED | W_STOPPED | W_CONT | W_NOHANG)asmlinkage int irix_waitsys(int type, int pid, struct irix5_siginfo *info,			    int options, struct rusage *ru){	int flag, retval;	DECLARE_WAITQUEUE(wait, current);	struct task_struct *p;	if (!info) {		retval = -EINVAL;		goto out;	}	retval = verify_area(VERIFY_WRITE, info, sizeof(*info));	if(retval)		goto out;	if (ru) {		retval = verify_area(VERIFY_WRITE, ru, sizeof(*ru));		if(retval)			goto out;	}	if (options & ~(W_MASK)) {		retval = -EINVAL;		goto out;	}	if (type != P_PID && type != P_PGID && type != P_ALL) {		retval = -EINVAL;		goto out;	}	add_wait_queue(&current->wait_chldexit, &wait);repeat:	flag = 0;	current->state = TASK_INTERRUPTIBLE;	read_lock(&tasklist_lock);	for (p = current->p_cptr; p; p = p->p_osptr) {		if ((type == P_PID) && p->pid != pid)			continue;		if ((type == P_PGID) && p->pgrp != pid)			continue;		if ((p->exit_signal != SIGCHLD))			continue;		flag = 1;		switch (p->state) {			case TASK_STOPPED:				if (!p->exit_code)					continue;				if (!(options & (W_TRAPPED|W_STOPPED)) &&				    !(p->ptrace & PT_PTRACED))					continue;				if (ru != NULL)					getrusage(p, RUSAGE_BOTH, ru);				__put_user(SIGCHLD, &info->sig);				__put_user(0, &info->code);				__put_user(p->pid, &info->stuff.procinfo.pid);				__put_user((p->exit_code >> 8) & 0xff,				           &info->stuff.procinfo.procdata.child.status);				__put_user(p->times.tms_utime, &info->stuff.procinfo.procdata.child.utime);				__put_user(p->times.tms_stime, &info->stuff.procinfo.procdata.child.stime);				p->exit_code = 0;				retval = 0;				goto end_waitsys;			case TASK_ZOMBIE:				current->times.tms_cutime += p->times.tms_utime + p->times.tms_cutime;				current->times.tms_cstime += p->times.tms_stime + p->times.tms_cstime;				if (ru != NULL)					getrusage(p, RUSAGE_BOTH, ru);				__put_user(SIGCHLD, &info->sig);				__put_user(1, &info->code);      /* CLD_EXITED */				__put_user(p->pid, &info->stuff.procinfo.pid);				__put_user((p->exit_code >> 8) & 0xff,				           &info->stuff.procinfo.procdata.child.status);				__put_user(p->times.tms_utime,				           &info->stuff.procinfo.procdata.child.utime);				__put_user(p->times.tms_stime,				           &info->stuff.procinfo.procdata.child.stime);				retval = 0;				if (p->p_opptr != p->p_pptr) {					REMOVE_LINKS(p);					p->p_pptr = p->p_opptr;					SET_LINKS(p);					notify_parent(p, SIGCHLD);				} else					release_task(p);				goto end_waitsys;			default:				continue;		}	}	read_unlock(&tasklist_lock);	if (flag) {		retval = 0;		if (options & W_NOHANG)			goto end_waitsys;		retval = -ERESTARTSYS;		if (signal_pending(current))			goto end_waitsys;		current->state = TASK_INTERRUPTIBLE;		schedule();		goto repeat;	}	retval = -ECHILD;end_waitsys:	current->state = TASK_RUNNING;	remove_wait_queue(&current->wait_chldexit, &wait);out:	return retval;}struct irix5_context {	u32 flags;	u32 link;	u32 sigmask[4];	struct { u32 sp, size, flags; } stack;	int regs[36];	u32 fpregs[32];	u32 fpcsr;	u32 _unused0;	u32 _unused1[47];	u32 weird_graphics_thing;};asmlinkage int irix_getcontext(struct pt_regs *regs){	int error, i, base = 0;	struct irix5_context *ctx;	unsigned long flags;	if (regs->regs[2] == 1000)		base = 1;	ctx = (struct irix5_context *) regs->regs[base + 4];#ifdef DEBUG_SIG	printk("[%s:%d] irix_getcontext(%p)\n",	       current->comm, current->pid, ctx);#endif	error = verify_area(VERIFY_WRITE, ctx, sizeof(*ctx));	if(error)		goto out;	__put_user(current->thread.irix_oldctx, &ctx->link);	__copy_to_user(&ctx->sigmask, &current->blocked, sizeof(irix_sigset_t));	/* XXX Do sigstack stuff someday... */	__put_user(0, &ctx->stack.sp);	__put_user(0, &ctx->stack.size);	__put_user(0, &ctx->stack.flags);	__put_user(0, &ctx->weird_graphics_thing);	__put_user(0, &ctx->regs[0]);	for (i = 1; i < 32; i++)		__put_user(regs->regs[i], &ctx->regs[i]);	__put_user(regs->lo, &ctx->regs[32]);	__put_user(regs->hi, &ctx->regs[33]);	__put_user(regs->cp0_cause, &ctx->regs[34]);	__put_user(regs->cp0_epc, &ctx->regs[35]);	flags = 0x0f;	if(!current->used_math) {		flags &= ~(0x08);	} else {		/* XXX wheee... */		printk("Wheee, no code for saving IRIX FPU context yet.\n");	}	__put_user(flags, &ctx->flags);	error = 0;out:	return error;}asmlinkage unsigned long irix_setcontext(struct pt_regs *regs){	int error, base = 0;	struct irix5_context *ctx;	if(regs->regs[2] == 1000)		base = 1;	ctx = (struct irix5_context *) regs->regs[base + 4];#ifdef DEBUG_SIG	printk("[%s:%d] irix_setcontext(%p)\n",	       current->comm, current->pid, ctx);#endif	error = verify_area(VERIFY_READ, ctx, sizeof(*ctx));	if (error)		goto out;	if (ctx->flags & 0x02) {		/* XXX sigstack garbage, todo... */		printk("Wheee, cannot do sigstack stuff in setcontext\n");	}	if (ctx->flags & 0x04) {		int i;		/* XXX extra control block stuff... todo... */		for(i = 1; i < 32; i++)			regs->regs[i] = ctx->regs[i];		regs->lo = ctx->regs[32];		regs->hi = ctx->regs[33];		regs->cp0_epc = ctx->regs[35];	}	if (ctx->flags & 0x08) {		/* XXX fpu context, blah... */		printk("Wheee, cannot restore FPU context yet...\n");	}	current->thread.irix_oldctx = ctx->link;	error = regs->regs[2];out:	return error;}struct irix_sigstack { unsigned long sp; int status; };asmlinkage int irix_sigstack(struct irix_sigstack *new, struct irix_sigstack *old){	int error;#ifdef DEBUG_SIG	printk("[%s:%d] irix_sigstack(%p,%p)\n",	       current->comm, current->pid, new, old);#endif	if(new) {		error = verify_area(VERIFY_READ, new, sizeof(*new));		if(error)			goto out;	}	if(old) {		error = verify_area(VERIFY_WRITE, old, sizeof(*old));		if(error)			goto out;	}	error = 0;out:	return error;}struct irix_sigaltstack { unsigned long sp; int size; int status; };asmlinkage int irix_sigaltstack(struct irix_sigaltstack *new,				struct irix_sigaltstack *old){	int error;#ifdef DEBUG_SIG	printk("[%s:%d] irix_sigaltstack(%p,%p)\n",	       current->comm, current->pid, new, old);#endif	if (new) {		error = verify_area(VERIFY_READ, new, sizeof(*new));		if(error)			goto out;	}	if (old) {		error = verify_area(VERIFY_WRITE, old, sizeof(*old));		if(error)			goto out;	}	error = 0;out:	error = 0;	return error;}struct irix_procset {	int cmd, ltype, lid, rtype, rid;};asmlinkage int irix_sigsendset(struct irix_procset *pset, int sig){	int error;	error = verify_area(VERIFY_READ, pset, sizeof(*pset));	if(error)		goto out;#ifdef DEBUG_SIG	printk("[%s:%d] irix_sigsendset([%d,%d,%d,%d,%d],%d)\n",	       current->comm, current->pid,	       pset->cmd, pset->ltype, pset->lid, pset->rtype, pset->rid,	       sig);#endif	error = -EINVAL;out:	return error;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品国产精品| 天天影视色香欲综合网老头| 欧美日韩电影在线| 日本高清不卡aⅴ免费网站| 成人性生交大合| 成人一区在线看| 成人视屏免费看| 91在线观看污| 欧美吞精做爰啪啪高潮| 欧美日韩免费一区二区三区视频 | 亚洲欧美日韩中文字幕一区二区三区| 精品国产乱码久久久久久久久| 国产精品国产三级国产aⅴ原创| 亚洲精品一线二线三线| 久久久亚洲高清| 中文在线资源观看网站视频免费不卡| 国产欧美一区二区精品秋霞影院 | 欧美视频一区二区在线观看| 色噜噜夜夜夜综合网| 91黄视频在线观看| 6080亚洲精品一区二区| xfplay精品久久| 中文字幕av一区二区三区免费看| 亚洲人成网站精品片在线观看| 亚洲视频小说图片| 免费av成人在线| 国产成人免费av在线| 91一区一区三区| 日韩一级片在线观看| 久久久欧美精品sm网站| 亚洲人成亚洲人成在线观看图片| 午夜欧美在线一二页| 久久成人久久爱| 成人性生交大片免费看视频在线| 欧美视频在线观看一区二区| 精品免费日韩av| 最近日韩中文字幕| 麻豆91精品91久久久的内涵| av资源网一区| 欧美一区二区三区精品| 中文字幕免费观看一区| 天天av天天翘天天综合网| 国产在线精品国自产拍免费| 色婷婷精品久久二区二区蜜臂av| 精品免费国产一区二区三区四区| 亚洲欧美激情插| 麻豆精品一区二区三区| 在线视频综合导航| 欧美韩日一区二区三区| 日本三级韩国三级欧美三级| 91在线视频18| 2022国产精品视频| 琪琪一区二区三区| 欧美三级电影网| 国产精品乱子久久久久| 国产一区二区按摩在线观看| 欧美日韩精品高清| 国产精品成人一区二区艾草| 精品一区二区三区不卡| 91精品国产色综合久久不卡蜜臀| 中文字幕一区不卡| 高清日韩电视剧大全免费| 日韩无一区二区| 调教+趴+乳夹+国产+精品| 91精品国产欧美一区二区| 国产农村妇女精品| 国产在线精品不卡| 精品日韩在线一区| 日本不卡一区二区三区| 欧美日韩三级在线| 亚洲v中文字幕| 色播五月激情综合网| 欧美人成免费网站| 一区二区三区欧美亚洲| 91麻豆精品在线观看| 国产精品传媒入口麻豆| 粉嫩av一区二区三区| 中文av一区二区| av网站免费线看精品| 国产精品色在线| 国产精品456露脸| 日本一区二区久久| 大胆欧美人体老妇| ㊣最新国产の精品bt伙计久久| 国产91精品精华液一区二区三区| 欧美国产在线观看| 国产精品白丝jk黑袜喷水| 国产无一区二区| 成人av免费观看| 久久综合一区二区| 国产成人高清在线| 国产精品嫩草影院com| 92国产精品观看| 一区二区三区成人| 欧美一区二区在线看| 捆绑紧缚一区二区三区视频| 精品国产乱码久久久久久闺蜜| 国产乱码字幕精品高清av| 亚洲国产精品二十页| 一本到一区二区三区| 亚洲一区二区三区三| 日韩一卡二卡三卡四卡| 国精产品一区一区三区mba视频| 日韩精品一区二区三区在线观看| 国产91在线|亚洲| 亚洲欧美综合另类在线卡通| 欧美精品一二三区| 国产乱码精品一品二品| 中文字幕中文字幕在线一区| 欧美伊人精品成人久久综合97| 亚洲成av人片在线| 日韩三级精品电影久久久| 国产91在线|亚洲| 亚洲一线二线三线久久久| 欧美日韩aaa| 麻豆精品在线视频| 一区二区免费视频| 欧美zozo另类异族| 欧洲人成人精品| 国产精品一区二区不卡| 亚洲一区二区三区中文字幕| 久久综合狠狠综合久久激情 | 成人免费在线观看入口| 91精品国产欧美日韩| 岛国精品一区二区| 青青草97国产精品免费观看 | 国产精品香蕉一区二区三区| 亚洲成人精品一区二区| 中文字幕国产一区二区| 欧美一区二区久久久| 色综合色综合色综合| 国产成人精品三级麻豆| 青椒成人免费视频| 亚洲成av人影院在线观看网| 国产精品高潮呻吟| 国产精品视频一二三| 精品国产一二三区| 正在播放一区二区| 欧美亚洲综合久久| www.在线欧美| 福利电影一区二区| 国产综合色视频| 久久国产剧场电影| 久久九九久精品国产免费直播| 日韩欧美在线1卡| 欧美性一级生活| 91在线精品一区二区| 成人激情黄色小说| 大白屁股一区二区视频| 国产毛片精品视频| 久久99久久久欧美国产| 亚洲第一av色| 一二三四区精品视频| 一区二区三区久久| 亚洲色图一区二区三区| 欧美激情一区二区三区在线| 国产日本一区二区| 日韩一区二区在线观看视频播放| 欧美日韩综合在线| 欧美三级三级三级| 337p亚洲精品色噜噜噜| 欧美一级午夜免费电影| 欧美mv日韩mv亚洲| 国产调教视频一区| 国产精品久久免费看| 中文一区二区完整视频在线观看| 国产精品欧美一级免费| 亚洲同性gay激情无套| 国产精品成人免费在线| 亚洲乱码一区二区三区在线观看| ...中文天堂在线一区| 亚洲在线免费播放| 亚洲国产一二三| 免费看黄色91| 久久精品99国产精品日本| 日本成人在线一区| 成人午夜电影久久影院| 成人动漫一区二区在线| 91视频91自| 欧美日本一区二区在线观看| 日韩精品一区二| 国产精品欧美极品| 五月激情综合婷婷| 久久成人羞羞网站| 91啪九色porn原创视频在线观看| 欧美午夜电影一区| 久久只精品国产| 亚洲乱码国产乱码精品精可以看| 偷窥少妇高潮呻吟av久久免费| 另类小说综合欧美亚洲| 国产91丝袜在线18| 6080国产精品一区二区| 国产日韩在线不卡| 日韩avvvv在线播放| 国产成a人无v码亚洲福利| 欧美日韩一卡二卡三卡| 久久精品欧美日韩| 欧美aaaaa成人免费观看视频| 成人影视亚洲图片在线| 日韩精品一区二区三区中文不卡|