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

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

?? semmalib.s

?? vxworks的源代碼
?? S
字號:
/* 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--------------------01d,15may02,dee  lock interrupts earlier for semMGive() (SPR 77206).01c,07mar02,bwa  Added check for int context in semMTake (SPR 74204).01b,22jan02,bwa  Implemented VxWorks events support.01a,17mar00,dra  Created from T1.0.1 ColdFire and T2 m68k ports.*//*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 mutex semaphore**STATUS semMGive*    (*    SEM_ID semId		/@ semaphore id to give @/*    )*/semMIntRestrict:	jmp	_semIntRestrict			/* let C do the work */semMRecurse:	movew	a0@(SEM_RECURSE),a1		/* auto sign extend */	subql	#1,a1				/* decrement recurse count */	movew	a1,a0@(SEM_RECURSE)	movew   d1,sr				/* UNLOCK INTERRUPTS */	clrl	d0				/* good return */	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,d0		/* LOCK INTERRUPTS */	movew	d0,sr	movel	#_semClass, d0	cmpl	a0@,d0				/* check validity */#ifdef WV_INSTRUMENTATION        jeq     objOkMGive	/* windview - check the validity of instrumented class */	movel	#_semInstClass,d0		/* check validity */	cmpl	a0@,d0#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:	moveq	#0,d0				/* clear before proceeding */	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,a0				/* KERNEL ENTER */	movel	a0,_kernelState	movew	d1,sr				/* UNLOCK INTERRUPTS */	movel	d0,_semMGiveKernWork		/* setup work for semMGiveKern*/	jmp	_semMGiveKern			/* finish semMGive in C */semMVerifyTaskId:	movel	d2,-(a7)	movel	a0@(SEM_EVENTS_TASKID),d2        cmpil   #0,d2				/* task waiting for events ? */        beq     semMPopD2                       /* no, finish semMGive work */        addql   #0x8,d0                         /* yes, set SEM_M_SEND_EVENTS */semMPopD2:	movel	(a7)+,d2	bra	semMDelSafe /********************************************************************************* semMTake - optimized take of a mutex semaphore**STATUS semMTake*    (*    SEM_ID semId		/@ semaphore id to give @/*    )*/_semMTake:					/* a0 = semId! */	movel	_taskIdCurrent,a1		/* taskIdCurrent into a1 */	tstl	_intCnt	jne	semMIntRestrict	movew	sr,d1				/* old sr into d1 */	movew	_intLockTaskSR,d0		/* LOCK INTERRUPTS */	movew	d0,sr	movel	#_semClass,d0	cmpl	a0@,d0				/* check validity */#ifdef WV_INSTRUMENTATION        jeq     objOkMTake	/* windview - check the validity of instrumented class */	movel	#_semInstClass,d0		/* check validity */	cmpl	a0@,d0#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 */	movew	a0@(SEM_RECURSE),a1		/* auto sign extend */	addql	#1,a1	movew	a1,a0@(SEM_RECURSE)		/* increment recurse count */	movew	d1,sr				/* UNLOCK INTERRUPTS */	clrl	d0				/* return OK */	rtssemMQUnlockPut:	movel	#0x1,d0				/* KERNEL ENTER */	movel	d0,_kernelState	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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美va亚洲va国产综合| 99久久伊人精品| 日韩在线一区二区| 亚洲国产成人精品视频| 亚洲第一激情av| 午夜精品久久一牛影视| 丝袜美腿亚洲综合| 日韩成人精品在线| 久久 天天综合| 国产资源精品在线观看| 高清视频一区二区| 91麻豆福利精品推荐| 91国产福利在线| 欧美一卡在线观看| 国产日韩欧美制服另类| 亚洲国产高清不卡| 亚洲一区二区三区影院| 蜜臀国产一区二区三区在线播放 | 亚洲主播在线观看| 天天综合天天综合色| 六月丁香婷婷久久| 成熟亚洲日本毛茸茸凸凹| av在线一区二区| 7777精品伊人久久久大香线蕉的| 欧美一区二区三区免费在线看| 欧美成人a∨高清免费观看| 国产日产亚洲精品系列| 亚洲精品乱码久久久久| 蜜臀精品一区二区三区在线观看| 国产.欧美.日韩| 制服丝袜一区二区三区| 久久美女艺术照精彩视频福利播放| 综合久久综合久久| 久久精品噜噜噜成人88aⅴ| 成人污视频在线观看| 欧美高清一级片在线| 中文字幕国产一区二区| 日本视频一区二区三区| 99在线热播精品免费| 欧美大肚乱孕交hd孕妇| 亚洲人成精品久久久久久| 欧美a级一区二区| 欧美在线观看一区二区| 精品99999| 一区二区三区国产豹纹内裤在线| 精品无人码麻豆乱码1区2区| 91黄色激情网站| 国产精品国产精品国产专区不蜜| 日韩av电影一区| 欧美在线影院一区二区| 国产欧美一区二区在线观看| 日韩av电影天堂| 欧美亚洲图片小说| 国产精品伦理一区二区| 久久精品国产一区二区| 欧美日韩久久久久久| 中文字幕亚洲精品在线观看| 国模大尺度一区二区三区| 欧美乱妇20p| 亚洲国产综合人成综合网站| 国产精品羞羞答答xxdd| 精品欧美久久久| 日本午夜精品视频在线观看 | 亚洲激情综合网| 91视频观看视频| 欧美国产精品中文字幕| 国产成人鲁色资源国产91色综| 日韩欧美成人午夜| 老司机精品视频导航| 日韩视频一区二区三区| 亚洲国产精品久久一线不卡| 91官网在线观看| 亚洲一区二区综合| 在线看一区二区| 亚洲www啪成人一区二区麻豆| 在线看日本不卡| 爽好久久久欧美精品| 欧美精品乱码久久久久久 | 久久夜色精品国产噜噜av| 麻豆精品久久精品色综合| 欧美日韩黄色影视| 亚洲成人动漫在线免费观看| 欧美人妇做爰xxxⅹ性高电影 | 国产精品一区免费在线观看| 国产人成一区二区三区影院| youjizz国产精品| 亚洲欧美日韩综合aⅴ视频| 9久草视频在线视频精品| 18成人在线视频| 欧美日韩综合在线| 日韩精品免费视频人成| 精品久久久久久久久久久久包黑料 | 国产精品乱码一区二区三区软件 | 一区二区三区四区视频精品免费| 色婷婷精品久久二区二区蜜臂av| 亚洲一区在线观看免费观看电影高清 | 亚洲一区在线电影| 欧美日韩在线综合| 韩国三级在线一区| 国产精品萝li| 欧美图区在线视频| 青青青伊人色综合久久| 国产视频一区二区在线| 一本大道久久a久久综合婷婷| 亚洲国产成人av| 欧美激情一区在线观看| 欧美性高清videossexo| 国产自产高清不卡| 亚洲一区二区三区激情| 337p日本欧洲亚洲大胆精品 | 日韩女优制服丝袜电影| 岛国精品一区二区| 奇米综合一区二区三区精品视频| 国产精品美女久久久久久久久久久| 欧美色图12p| av一区二区不卡| 男人的j进女人的j一区| 1区2区3区国产精品| 日韩欧美在线一区二区三区| 99re免费视频精品全部| 麻豆免费看一区二区三区| 亚洲精品成人悠悠色影视| 国产亚洲一区二区在线观看| 欧美在线观看视频一区二区| 国产成人激情av| 久久精品国产久精国产| 亚洲综合激情小说| 1024国产精品| 久久精品综合网| 精品国精品国产尤物美女| 91精品福利在线| av欧美精品.com| 国产激情一区二区三区桃花岛亚洲| 三级亚洲高清视频| 午夜久久久久久久久久一区二区| 中文字幕在线观看一区| 久久伊人蜜桃av一区二区| 欧美性色综合网| 在线免费观看日本一区| 94色蜜桃网一区二区三区| 国产不卡在线播放| 国产高清一区日本| 久久99国产乱子伦精品免费| 日韩高清一级片| 天天免费综合色| 日韩av在线发布| 捆绑紧缚一区二区三区视频 | 国产在线视频一区二区| 免费在线欧美视频| 免费成人结看片| 天天综合色天天综合色h| 五月婷婷欧美视频| 日本最新不卡在线| 日本女优在线视频一区二区 | 国产91精品一区二区| 丰满岳乱妇一区二区三区| 丁香天五香天堂综合| 国产jizzjizz一区二区| 国产精品456| 99精品欧美一区二区蜜桃免费| 国产精品自拍网站| 91同城在线观看| 欧美日韩一区二区三区四区| 欧美精品亚洲二区| 欧美一区中文字幕| 久久久精品日韩欧美| 国产精品久久久久久亚洲毛片 | 日韩亚洲欧美在线观看| 日韩一区二区视频| 国产丝袜欧美中文另类| 中文字幕在线一区二区三区| 亚洲黄色尤物视频| 日本免费在线视频不卡一不卡二| 韩国女主播成人在线| 成人教育av在线| 欧美二区乱c少妇| 国产视频911| 亚洲福利视频三区| 国产一区二区不卡在线| jlzzjlzz欧美大全| 欧美精品精品一区| 久久久国产精华| 亚洲成人动漫一区| 国产成人久久精品77777最新版本| 91伊人久久大香线蕉| 91精品免费在线| 国产精品国产三级国产普通话蜜臀| 亚洲综合视频在线| 国产精品18久久久久久久久| 在线观看亚洲精品视频| 久久久一区二区三区捆绑**| 一区二区三区产品免费精品久久75| 日韩av不卡在线观看| 91美女在线视频| 久久精品在线观看| 日产国产欧美视频一区精品| 97久久精品人人澡人人爽| 日韩视频在线观看一区二区| 亚洲在线一区二区三区| 成人黄色在线网站|