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

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

?? semmalib.s

?? vxworks的源代碼
?? S
字號(hào):
/* semMALib.s - internal VxWorks mutex semaphore assembler library *//* Copyright 1984-2002 Wind River Systems, Inc. */	.data	.globl	_copyright_wind_river	.long	_copyright_wind_river/*modification history--------------------01l,16may02,pcm  unlock interrupts on error conditions in semMGive ()01k,29mar02,bwa  Used an unconditional jump to semIntRestrict.01j,05mar02,bwa  Added check for int context in semMTake() (SPR 73060)01i,23oct01,bwa  Added VxWorks events support.01h,06apr98,nps  ported to WV2.001g,08jul96,sbs  made windview instrumentation conditionally compiled01f,10dec93,smb  added instrumentation 01e,23aug92,jcf  changed bxxx to jxx.  fixed addw a7 to addl a7.01d,30jul92,rrr  changed _sig_timeout_recalc to _func_sigTimeoutRecalc01c,27jul92,jcf  took semMTakeKern outline for clarity.01b,10jul92,rrr  Expanded semMTakeKern inline so a jmp could be put at the end,                 this is needed for signal restarting.01a,15jun92,jcf  extracted from semALib.s v1m.*//*DESCRIPTIONThis module contains internals to the VxWorks kernel.These routines have been coded in assembler because they are optimized forperformance.*/#define _ASMLANGUAGE#include "vxWorks.h"#include "asm.h"#include "private/taskLibP.h"#include "private/semLibP.h"#ifndef PORTABLE	/* globals */	.globl	_semMGive		/* optimized mutex semaphore give */	.globl	_semMTake		/* optimized mutex semaphore take */	.text	.even/********************************************************************************* semIsInvalid - unlock interupts and call semInvalid ().*/semIsInvalidUnlock:	movew	d1,sr			/* UNLOCK INTERRUPTS */semIsInvalid:	jmp	_semInvalid		/* let C rtn do work and rts *//********************************************************************************* semMGive - optimized give of a counting semaphore**STATUS semMGive*    (*    SEM_ID semId		/@ semaphore id to give @/*    )*/semMIntRestrict:	jmp	_semIntRestrict			/* let C do the work */semMRecurse:	subqw	#1,a0@(SEM_RECURSE)		/* decrement recurse count */	movew	d1,sr				/* UNLOCK INTERRUPTS */	rts_semMGive:					/* a0 = semId! d0 = 0! */	movel	_taskIdCurrent,a1		/* taskIdCurrent into a1 */	tstl	_intCnt				/* restrict isr use */	jne 	semMIntRestrict			/* intCnt > 0 */	movew	sr,d1				/* old sr into d1 */	movew	_intLockTaskSR,sr		/* LOCK INTERRUPTS */        cmpl    #_semClass,a0@          	/* check validity */#ifdef WV_INSTRUMENTATION        jeq     objOkMGive	/* windview - check the validity of instrumented class */        cmpl    #_semInstClass,a0@              /* check validity */#endif	jne 	semIsInvalidUnlock		/* semaphore id error */objOkMGive:	cmpl	a0@(SEM_STATE),a1		/* taskIdCurrent is owner? */	jne 	semIsInvalidUnlock		/* SEM_INVALID_OPERATION */	tstw	a0@(SEM_RECURSE)		/* if recurse count > 0 */	jne 	semMRecurse			/* handle recursion */semMInvCheck:	btst	#3,a0@(SEM_OPTIONS)		/* SEM_INVERSION_SAFE? */	jeq 	semMStateSet			/* if not, test semQ */	subql	#1,a1@(WIND_TCB_MUTEX_CNT)	/* decrement mutex count */	jne 	semMStateSet			/* if nonzero, test semQ */	movel	a1@(WIND_TCB_PRIORITY),d0	/* put priority in d0 */	subl	a1@(WIND_TCB_PRI_NORMAL),d0	/* subtract normal priority */	jeq 	semMStateSet			/* if same, test semQ */	moveq	#4,d0				/* or in PRIORITY_RESORT */semMStateSet:	movel	a0@(SEM_Q_HEAD),a0@(SEM_STATE)	/* update semaphore state */	beq 	semMVerifyTaskId		/* no task pending,test taskId*/	addql	#1,d0				/* set SEM_Q_GET */semMDelSafe:	btst	#2,a0@(SEM_OPTIONS)		/* SEM_DELETE_SAFE? */	jeq 	semMShortCut			/* check for short cut */	subql	#1,a1@(WIND_TCB_SAFE_CNT)	/* decrement safety count */	jne 	semMShortCut			/* check for short cut */	tstl	a1@(WIND_TCB_SAFETY_Q_HEAD)	/* check for pended deleters */	jeq 	semMShortCut			/* check for short cut */	addql	#2,d0				/* set SAFETY_Q_FLUSH */semMShortCut:	tstl	d0				/* any work for kernel level? */	jne 	semMKernWork			/* enter kernel if any work */	movew	d1,sr				/* UNLOCK INTERRUPTS */	rts					/* d0 is still 0 for OK */semMKernWork:	movel	#0x1,_kernelState		/* KERNEL ENTER */	movew	d1,sr				/* UNLOCK INTERRUPTS */	movel	d0,_semMGiveKernWork		/* setup work for semMGiveKern*/	jmp	_semMGiveKern			/* finish semMGive in C */semMVerifyTaskId:	cmpil	#0,a0@(SEM_EVENTS_TASKID)	/* task waiting for events ? */	beq	semMDelSafe			/* no, finish semMGive work */	addql	#0x8,d0				/* yes, set SEM_M_SEND_EVENTS */	bra	semMDelSafe			/* finish semMGive work *//********************************************************************************* semMTake - optimized take of a mutex semaphore**STATUS semMTake*    (*    SEM_ID semId		/@ semaphore id to give @/*    )*/_semMTake:					/* a0 = semId! */	cmpil	#0,_intCnt			/* in ISR ? */	jne	semMIntRestrict			/* if so, return */	movel	_taskIdCurrent,a1		/* taskIdCurrent into a1 */	movew	sr,d1				/* old sr into d1 */	movew	_intLockTaskSR,sr		/* LOCK INTERRUPTS */        cmpl    #_semClass,a0@          	/* check validity */#ifdef WV_INSTRUMENTATION        jeq     objOkMTake	/* windview - check the validity of instrumented class */        cmpl    #_semInstClass,a0@              /* check validity */#endif        jne     semIsInvalidUnlock      	/* invalid semaphore */objOkMTake:	movel	a0@(SEM_STATE),d0		/* test for owner */	jne 	semMEmpty			/* sem is owned, is it ours? */	movel	a1,a0@(SEM_STATE)		/* we now own semaphore */	btst	#2,a0@(SEM_OPTIONS)		/* SEM_DELETE_SAFE? */	jeq 	semMPriCheck			/* semMPriCheck */	addql	#1,a1@(WIND_TCB_SAFE_CNT)	/* bump safety count */semMPriCheck:	btst	#3,a0@(SEM_OPTIONS)		/* SEM_INVERSION_SAFE? */	jeq 	semMDone			/* if not, skip increment */	addql	#1,a1@(WIND_TCB_MUTEX_CNT)	/* bump priority mutex count */semMDone:	movew	d1,sr				/* UNLOCK INTERRUPTS */	rts					/* d0 is still 0 for OK */semMEmpty:	cmpl	a1,d0				/* recursive take */	jne 	semMQUnlockPut			/* if not, block */	addqw	#1,a0@(SEM_RECURSE)		/* increment recurse count */	movew	d1,sr				/* UNLOCK INTERRUPTS */	clrl	d0				/* return OK */	rtssemMQUnlockPut:	movel	#0x1,_kernelState		/* KERNEL ENTER */	movew	d1,sr				/* UNLOCK INTERRUPTS */	movel	a7@(0x8),a7@-			/* push the timeout */	movel	a0,a7@-				/* push the semId */        jsr	_semMPendQPut			/* do as much in C as possible*/        addql	#0x8,a7				/* cleanup */	tstl	d0				/* test return */	jne 	semMFail			/* if !OK, exit kernel, ERROR */semMQPendQOk:        jsr	_windExit			/* KERNEL EXIT */	tstl	d0				/* test the return value */	jgt 	semMRestart			/* is it a RESTART? */        rts					/* finished OK or TIMEOUT */semMRestart:	movel   a7@(0x8),a7@-			/* push the timeout */        movel   __func_sigTimeoutRecalc,a0	/* address of recalc routine */        jsr     a0@				/* recalc the timeout */        addql	#0x4,a7				/* clean up */        movel   d0,a7@(0x8)			/* and restore timeout */        jmp     _semTake			/* start the whole thing over */semMFail:        jsr	_windExit			/* KERNEL EXIT */        moveq	#-1,d0				/* return ERROR */	rts					/* failed */#endif	/* !PORTABLE */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区永久视频免费观看| 91香蕉视频污| 欧美xxxxxxxx| 韩国成人福利片在线播放| 久久人人97超碰com| 国产成人午夜视频| 亚洲免费观看高清完整版在线观看 | 北条麻妃一区二区三区| 亚洲视频一二区| 欧美午夜一区二区三区| 欧美aaaaa成人免费观看视频| 欧美成人三级电影在线| 成人黄色免费短视频| 一区二区视频在线看| 欧美日韩mp4| 国产九色精品成人porny| 中文字幕日韩一区| 欧美日韩一本到| 久久91精品久久久久久秒播| 日本一区二区久久| 欧美日韩一区三区四区| 国产在线精品不卡| 亚洲精品乱码久久久久久久久 | 久久亚洲一区二区三区明星换脸| 国产成人免费视频网站| 一区二区三区欧美| 精品国产1区二区| 日本韩国欧美在线| 久久精品国产精品亚洲精品| 中文字幕日韩欧美一区二区三区| 91精品久久久久久久久99蜜臂| 高清在线成人网| 亚洲午夜久久久久久久久电影院| 精品精品欲导航| 欧美综合一区二区三区| 国产成人精品亚洲午夜麻豆| 亚洲成在人线免费| 中文字幕免费在线观看视频一区| 欧美日本在线播放| 成人av在线影院| 蜜臀久久久久久久| 一区二区三区欧美| 日韩色在线观看| 欧美熟乱第一页| av不卡免费电影| 国产精品亚洲成人| 爽好久久久欧美精品| 亚洲日本成人在线观看| 欧美精品一区二区三区高清aⅴ | 免费成人结看片| 一区二区三区国产精华| 久久精品亚洲乱码伦伦中文| 欧美理论片在线| 91日韩一区二区三区| 国产精品一级在线| 精品午夜一区二区三区在线观看| 五月天一区二区三区| 亚洲男女一区二区三区| 中文字幕一区二区视频| 久久久久国产精品麻豆ai换脸| 91麻豆精品久久久久蜜臀| 一本到高清视频免费精品| 成人精品视频一区二区三区| 精品一区二区三区香蕉蜜桃| 日韩电影免费在线| 五月综合激情婷婷六月色窝| 亚洲午夜三级在线| 亚洲一级电影视频| 亚洲精品国产高清久久伦理二区| 国产精品国模大尺度视频| 国产欧美一区二区三区在线老狼| 亚洲精品一区二区三区影院| 日韩精品中文字幕在线一区| 欧美一区二区久久| 日韩一区二区三区免费看 | 2021国产精品久久精品| 日韩午夜电影在线观看| 制服丝袜成人动漫| 3d动漫精品啪啪一区二区竹菊| 69久久夜色精品国产69蝌蚪网| 在线播放亚洲一区| 欧美一级夜夜爽| 精品国产第一区二区三区观看体验| 日韩一区二区中文字幕| 欧美xxxx在线观看| 国产欧美日韩在线看| 国产精品伦一区二区三级视频| 欧美激情在线观看视频免费| 欧美国产精品一区二区三区| 亚洲欧洲日韩在线| 一区二区理论电影在线观看| 一区二区欧美国产| 日韩国产精品91| 久久国产尿小便嘘嘘| 国产成人自拍在线| 91丨九色porny丨蝌蚪| 在线看国产一区二区| 欧美老女人第四色| 欧美va亚洲va国产综合| 国产三级精品视频| 亚洲激情校园春色| 日韩精品一卡二卡三卡四卡无卡| 蜜桃av一区二区三区| 国产乱妇无码大片在线观看| va亚洲va日韩不卡在线观看| 欧美日韩国产综合一区二区| 欧美成人伊人久久综合网| 欧美高清一级片在线观看| 亚洲一区二区三区小说| 久久成人18免费观看| 99精品视频免费在线观看| 欧美日韩色综合| 久久久久久影视| 亚洲综合一区在线| 久久福利视频一区二区| 色综合久久久久| 日韩午夜激情电影| ㊣最新国产の精品bt伙计久久| 日韩制服丝袜av| 国产98色在线|日韩| 欧美精品丝袜久久久中文字幕| 久久色在线视频| 午夜视频在线观看一区二区 | 国产成人精品午夜视频免费| 在线免费视频一区二区| 久久免费午夜影院| 亚洲一级二级三级| 成人av动漫在线| 欧美tickling网站挠脚心| 一区二区三区欧美久久| 高清成人在线观看| 欧美一级日韩不卡播放免费| 亚洲免费观看在线观看| 国产一区二区三区| 91精品麻豆日日躁夜夜躁| 亚洲欧美日韩在线不卡| 国产成人在线观看| 日韩欧美国产精品一区| 性久久久久久久久| 91亚洲精品一区二区乱码| 久久一二三国产| 青青青伊人色综合久久| 欧洲精品一区二区三区在线观看| 日本一区二区三区视频视频| 久久精品国产澳门| 91精品国产综合久久国产大片| 亚洲欧美视频一区| youjizz久久| 久久久av毛片精品| 老司机午夜精品99久久| 欧美老肥妇做.爰bbww| 亚洲精品你懂的| 91免费版在线| 中文字幕在线视频一区| 从欧美一区二区三区| 国产三级欧美三级日产三级99| 久久不见久久见免费视频7| 555夜色666亚洲国产免| 天堂久久一区二区三区| 欧美色综合网站| 亚洲一二三专区| 欧美日韩视频在线观看一区二区三区 | 欧洲日韩一区二区三区| 亚洲一区影音先锋| 在线视频国内自拍亚洲视频| 一区二区三区不卡视频在线观看| 99久久久久久| 最新国产精品久久精品| 91女神在线视频| 亚洲日本在线a| 色国产精品一区在线观看| 亚洲精品日韩综合观看成人91| 一本一道波多野结衣一区二区| 亚洲精品综合在线| 欧美色图在线观看| 亚洲v中文字幕| 91精品国产一区二区人妖| 久久福利资源站| 国产亚洲婷婷免费| 成人黄色在线看| 一区二区三区高清在线| 51精品国自产在线| 国产一区二区三区免费看| 久久先锋资源网| 99热精品国产| 亚洲亚洲精品在线观看| 日韩一区二区三区四区| 国产91精品露脸国语对白| 亚洲欧洲在线观看av| 色综合久久88色综合天天| 婷婷久久综合九色国产成人| 日韩欧美国产wwwww| 大陆成人av片| 亚洲成人免费看| 久久一区二区视频| 色婷婷精品久久二区二区蜜臂av | 精品国产乱码久久久久久蜜臀| 国产福利一区二区三区| 一区二区欧美国产| 欧美精品一区男女天堂|