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

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

?? semalib.s

?? vxworks的源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* semALib.s - internal VxWorks binary semaphore assembler library *//* Copyright 1984-2002 Wind River Systems, Inc. */	.data	.globl	_copyright_wind_river	.long	_copyright_wind_river/*modification history--------------------02b,29mar02,bwa  Used an unconditional jump to semIntRestrict.02a,05mar02,bwa  Added check for int context in semBTake() (SPR 73060)01z,17dec01,bwa  Changed the locking of interrupts to a read-modify-write in                 semBGive (SPR #72240).01y,10oct01,bwa  Added VxWorks events support.01x,16feb99,cpd  Fix SPR25112: Added test before jeq in semQPut and semQGet01w,24apr98,nps  bug fixes01v,30mar98,nps  port to WV2.0.01u,08jul96,sbs  made windview instrumentation conditionally compiled01t,11apr94,smb  corrected semaphore recurse logging01s,24mar94,smb  added instrumentation modifications and optimisations.01r,10dec93,smb  added instrumentation 01q,23aug92,jcf  changed bxxx to jxx. changed addw a7 to addl a7.01p,30jul92,rrr  changed _sig_timeout_recalc to _func_sigTimeoutRecalc01o,19jul92,pme  added shared memory semaphores support.01n,04jul92,jcf  split into sem[CM]ALib.s to increase modularity.01m,26may92,rrr  the tree shuffle01l,30apr92,rrr  added signal restart01k,04oct91,rrr  passed through the ansification filter		  -fixed #else and #endif		  -changed ASMLANGUAGE to _ASMLANGUAGE		  -changed copyright notice01j,17may91,elr   made portable code portable for Motorola SVR401i,22jan91,jcf   made portable to the 68000/68010.01h,16oct90,jcf   fixed race of priority inversion in semMGive.01g,01oct90,dab   changed conditional compilation identifier from		    HOST_SUN to AS_WORKS_WELL.01f,12sep90,dab   changed complex addressing mode instructions to .word's           +lpf     to make non-SUN hosts happy.01e,27jun90,jcf   optimized version once again.01d,26jun90,jcf   made PORTABLE for the nonce.01c,10may90,jcf   added semClear optimization.01b,23apr90,jcf   changed name and moved to src/68k.01a,02jan90,jcf   written.*//*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 "eventLib.h"#include "private/eventLibP.h"#include "private/taskLibP.h"#include "private/semLibP.h"#include "private/eventP.h"#include "private/evtLogLibP.h"#ifndef PORTABLE	/* globals */	.globl	_semGive		/* optimized semGive demultiplexer */	.globl	_semTake		/* optimized semTake demultiplexer */	.globl	_semBGive		/* optimized binary semaphore give */	.globl	_semBTake		/* optimized binary semaphore take */	.globl	_semQGet		/* semaphore queue get routine */	.globl	_semQPut		/* semaphore queue put routine */	.globl	_semOTake		/* optimized old semaphore take */	.globl	_semClear		/* optimized old semaphore semClear */	.text	.even/********************************************************************************* semGiveKern - add give routine to work queue**/semGiveKern:	jmp	_semGiveDefer		/* let C rtn defer work and rts *//********************************************************************************* semGive - give a semaphore**STATUS semGive*    (*    SEM_ID semId		/@ semaphore id to give @/*    )*/_semGive:	movel	a7@(0x4),a0		/* semId goes into a0 */	btst    #0,a7@(0x7)		/* is it a global semId */	jne 	semGiveGlobal		/* if semId lsb = 1 its a global sem */#ifdef WV_INSTRUMENTATION	/* windview instrumentation - BEGIN	 * semGive level 1 (object status event )	 */        tstl    _evtAction        jeq     noSemGiveEvt        cmpl    #_semClass,a0@          /* check validity */        jeq     objOkGive        cmpl    #_semInstClass,a0@      /* check validity */        jne     noSemGiveEvt		/* invalid semaphore */objOkGive:	moveml	d0-d3/a0-a2,a7@-	/* save regs */	movel	a0, a2			/* save semId in a2 for later */	/* is this semaphore object instrumented? */	movel	a0@, a1			/* a1 - semId objCore */	tstl	a1@(SEM_INST_RTN)	/* event routine attached? */	jeq	semGiveCheckTrg        /* Check if we need to log this event */        movel   _wvEvtClass,d2          /* Load event class */        andl    #WV_CLASS_3_ON,d2       /* Examine these bits */        cmpl    #WV_CLASS_3_ON,d2        jne     semGiveCheckTrg           /* Jump if not set */        /* Log event */	/* log event for this object */	movel   #0,a7@-		movel   #0,a7@-		movel   #0,d0	movew	a0@(SEM_RECURSE),d0	/* recursively called */	movel	d0,a7@-		movel	a0@(SEM_STATE),a7@-	/* state/count/owner */	movel   a0,a7@-			/* semId */	movel	#3,a7@-			/* nParam */	movel   #EVENT_SEMGIVE,a7@-     /* EVENT_SEMGIVE, event id */	movel	a1@(SEM_INST_RTN),a0	/* get logging routine */	jsr	a0@			/* call routine */	addl    #28,a7			/* restore stack pointer */        movel   a2,a0			/* restore semId from a2 */semGiveCheckTrg:        /* Check if we need to evaluate triggers for this event */        movel   _trgEvtClass,d2          /* Load event class */        andl    #TRG_CLASS_3_ON,d2            /* Examine these bits */        cmpl    #TRG_CLASS_3_ON,d2        jne     semGiveInstDone             /* Jump if not set */        /* Evaluate triggers */        clrl    a7@-                     /* arg5 = NULL */        clrl    a7@-                     /* arg4 = NULL */        movew	a0@(SEM_RECURSE),d0	movel	d0,a7@-			 /* arg3 = recurse */        movel	a0@(SEM_STATE),a7@-      /* arg2 = state */	movel	a0,a7@-			 /* arg1 = semId  */        movel   a0,a7@-                  /* obj = semId */        movel   #TRG_CLASS3_INDEX,a7@-        movel   #EVENT_SEMGIVE,a7@-      /* push event ID onto int stack */        movel   __func_trgCheck,a0       /* Call log fn */        jsr     a0@        addl    #32,a7                   /* Pop params */semGiveInstDone:	moveml  a7@+,d0-d3/a0-a2         /* restore regs */noSemGiveEvt:	/* windview instrumentation - END */#endif	movel	_kernelState,d0		/* are we in kernel state? */	jne 	semGiveKern		/* d0 = 0 if we are not */	moveb	a0@(SEM_TYPE),d1	/* put the sem class into d1 */	jne 	semGiveNotBinary	/* optimization for BINARY if d1 == 0 */		/* BINARY SEMAPHORE OPTIMIZATION */_semBGive:					/* a0 = semId! d0 = 0! */		movew	sr,d1			/* old sr into d1 */		movew	d1,d0		orw	#0x0700,d0		/* set interrupt mask in SR */		movew	d0,sr			/* LOCK INTERRUPTS */		moveq	#0,d0		cmpl    #_semClass,a0@          /* check validity */#ifdef WV_INSTRUMENTATION        	jeq     objOkBGive		/* windview - check the validity of instrumented class */        	cmpl    #_semInstClass,a0@      /* instrumented class check */#endif        	jne     semIsInvalidUnlock      /* semaphore id error */objOkBGive:		movel	d2,-(a7)		/* save d2 */		movel	a0@(SEM_STATE),d2	/* save old semOwner */		movel	a0@(SEM_Q_HEAD),a0@(SEM_STATE)		beq	semBNoPendingTask	/* nothing on pend Q */		movel	(a7)+,d2		/* restore d2 */		jmp	_semQGet		/* if not empty, get from q */semBNoPendingTask:		cmpil	#0,a0@(SEM_EVENTS_TASKID)/* does a task want events? */		bne	semBCompareStatus	/* if (taskId != NULL), yes */semBDontSendEvents:		movew	d1,sr			/* UNLOCK INTERRUPTS */		movel	(a7)+,d2		/* restore d2 */		rts				/* d0 = retStatus */semBCompareStatus:		cmpil	#0,d2			/* check for change of state */		beq	semBDontSendEvents	/* no change,don't send events*/		/* we want to call eventSend() */semBSendEvents:		movel	#OK,-(a7)		/* retStatus = OK */		movel	_errno,-(a7)		/* save old errno */		movel	#TRUE,_kernelState	/* kernelState = TRUE */		movew	d1,sr			/* UNLOCK INTERRUPTS */		movel	a0,-(a7)		/* save a0 */		movel	a0@(SEM_EVENTS_REGISTERED),-(a7) /* args on stack */		movel	a0@(SEM_EVENTS_TASKID),-(a7)		jsr	_eventRsrcSend		/* call fcn,return value in d0*/		addal	#8,a7			/* cleanup eventSend args */		moveal	(a7)+,a0		/* restore a0 */		cmpil	#0,d0			/* eventSend failed ? */		bne	semBEventSendFailed	/* if so, set errno ? */		btst	#0,a0@(SEM_EVENTS_OPTIONS) /* if not,send events once?*/		beq	semBGiveWindExit	/* if not, kernel exit */semBGiveTaskIdClear:				/* if so, clear taskId */		clrl	a0@(SEM_EVENTS_TASKID)	/* semId->events.taskId = NULL*/semBGiveWindExit:		jsr	_windExit		/* KERNEL EXIT */		movel	(a7)+,_errno		/* put wanted value in errno */		movel	(a7)+,d0		/* and wanted error code in d0*/		movel	(a7)+,d2		/* restore d2 */		rts				/* d0 = retStatus */semBEventSendFailed:		btst	#4,a0@(SEM_OPTIONS)	/* want to return error ? */		beq	semBGiveTaskIdClear	/* no, clear taskId */		movel	#-1,a7@(4)		/* yes, save ERROR on stack */		movel	#((134<<16)+0x4),a7@	/* and save errno on stack */		bra	semBGiveTaskIdClear	/* then clear taskId *//* end of semBGive */semGiveNotBinary:        /* call semGive indirectly via semGiveTbl.  Note that the index could	 * equal zero after it is masked.  semBGive is the zeroeth element	 * of the table, but for it to function correctly in the optimized	 * version above, we must be certain not to clobber a0.  Note, also	 * that old semaphores will also call semBGive above.	 */	andl	#7,d1			/* mask d1 to MAX_SEM_TYPE value */	lea	_semGiveTbl,a1		/* get table address into a1 */	lsll	#2,d1			/* scale d1 by sizeof (FUNCPTR) */	movel	a1@(0,d1:l),a1		/* get right give rtn for this class */	jmp	a1@			/* invoke give rtn, it will do rts */semGiveGlobal:	addl    _smObjPoolMinusOne,a0	/* convert id to local adress */	movel   a0@(4),d1		/* get semaphore type in d1 */	andl    #7,d1			/* mask d1 to MAX_SEM_TYPE value */	lea     _semGiveTbl,a1		/* a1 = semaphore give table */	lsll	#2,d1			/* scale d1 by sizeof (FUNCPTR) */	movel   a1@(0,d1:l),a1		/* a1 = appropriate give function */	movel   a0,a7@-			/* push converted semId */	jsr     a1@			/* call appropriate give function */	addql   #4,a7			/* clean up */	rts/********************************************************************************* semIsInvalid - unlock interupts and call semInvalid ().*/semIsInvalidUnlock:	movew	d1,sr			/* UNLOCK INTERRUPTS */semIsInvalid:	jmp	_semInvalid		/* let C rtn do work and rts *//********************************************************************************* semTake - take a semaphore**STATUS semTake*    (*    SEM_ID semId,		/@ semaphore id to take @/*    ULONG  timeout		/@ timeout in ticks @/*    )*/semBIntRestrict:	jmp	_semIntRestrict_semTake:	movel	a7@(0x4),a0		/* semId goes into a0 */	btst    #0,a7@(0x7)		/* is it a global semId */	jne 	semTakeGlobal		/* if semId lsb = 1 its a global sem */#ifdef WV_INSTRUMENTATION        /* windview instrumentation - BEGIN         * semTake level 1 (object status event )         */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频第二页| 欧美日韩在线播放三区| 免费看欧美美女黄的网站| 亚洲影视在线观看| 亚洲一区二区综合| 亚洲一卡二卡三卡四卡无卡久久| 一区二区免费看| 亚洲一区二区精品久久av| 一区二区三区中文字幕| 亚洲精品福利视频网站| 玉足女爽爽91| 日av在线不卡| 国产精品亚洲а∨天堂免在线| 国产成人高清在线| 99久久亚洲一区二区三区青草| 91福利视频久久久久| 777色狠狠一区二区三区| 欧美大片免费久久精品三p| 欧美va亚洲va香蕉在线| 欧美精品一区男女天堂| 国产精品国产三级国产有无不卡| 亚洲欧美激情插| 日韩电影在线免费观看| 激情国产一区二区| 91视频在线看| 在线不卡免费av| 国产午夜精品久久久久久久| 亚洲男人的天堂在线观看| 偷窥少妇高潮呻吟av久久免费| 久久精品免费观看| 成人激情av网| 欧美日本在线视频| 亚洲国产精品高清| 香蕉影视欧美成人| 成人免费三级在线| 91精品欧美一区二区三区综合在| 欧美精品一区二区高清在线观看 | 欧美亚洲动漫精品| 欧美日韩精品综合在线| 精品国精品自拍自在线| 亚洲靠逼com| 久久99精品久久久| 色狠狠色狠狠综合| 久久久国产精华| 青青草国产精品97视觉盛宴| 成人听书哪个软件好| 日韩午夜在线观看视频| 亚洲天堂成人网| 国产精品一区二区视频| 精品视频资源站| 久久久99精品免费观看不卡| 日韩黄色片在线观看| 一本一道波多野结衣一区二区| 精品国产一区二区国模嫣然| 亚洲国产成人av网| 一本到三区不卡视频| 中文字幕av在线一区二区三区| 日韩av午夜在线观看| 欧美最猛性xxxxx直播| 日韩毛片视频在线看| 国产成人免费网站| 久久亚洲精品国产精品紫薇| 美女视频网站久久| 欧美精品色一区二区三区| ㊣最新国产の精品bt伙计久久| 国产精品一二三四五| 久久久久久久久久久久电影 | 欧美日韩dvd在线观看| 亚洲一区二区免费视频| 在线精品视频一区二区三四 | 欧美狂野另类xxxxoooo| 亚洲国产美女搞黄色| 日本黄色一区二区| 亚洲国产精品嫩草影院| 在线观看免费成人| 亚洲精品一二三| 欧美在线一区二区| 一区二区国产视频| 精品视频1区2区| 日日夜夜一区二区| 欧美亚洲国产一区在线观看网站| 一区av在线播放| 欧美二区三区91| 免费成人美女在线观看| 日韩免费电影网站| 久久精品国产成人一区二区三区| 欧美一区二区三区啪啪| 久久99国产精品麻豆| 久久精品亚洲精品国产欧美| 成人性生交大片免费看中文| 国产精品国产自产拍高清av王其| 99国内精品久久| 五月天一区二区| 日韩一级精品视频在线观看| 久久国产精品99精品国产| 国产人成亚洲第一网站在线播放| 成人激情动漫在线观看| 亚洲午夜久久久久久久久电影院 | 国产最新精品免费| 中文字幕中文字幕中文字幕亚洲无线| 97成人超碰视| 日韩精品色哟哟| 欧美国产精品v| 日本伦理一区二区| 久久99国产精品麻豆| 亚洲欧洲美洲综合色网| 欧美一区二区福利视频| 国产精品亚洲专一区二区三区| 亚洲欧美成aⅴ人在线观看| 欧美高清你懂得| 懂色av一区二区三区免费看| 亚洲成va人在线观看| 国产视频在线观看一区二区三区 | 九色|91porny| 亚洲最大色网站| 欧美精品一区二区三区久久久 | 亚洲第一电影网| 亚洲国产精品精华液2区45| 欧美视频一二三区| 国产激情视频一区二区在线观看| 亚洲国产成人91porn| 欧美韩国一区二区| 日韩欧美黄色影院| 欧洲日韩一区二区三区| 国产成人无遮挡在线视频| 蜜乳av一区二区| 亚洲午夜三级在线| 国产精品久久久久一区| 欧美精品一区二区三区蜜臀| 欧美老年两性高潮| 99视频一区二区| 国产精品888| 国产一区不卡在线| 日本不卡视频在线| 亚洲福利电影网| 亚洲一二三专区| 亚洲欧美日韩中文字幕一区二区三区| 精品国产一区二区三区av性色| 欧美丰满美乳xxx高潮www| 色哟哟一区二区| 91丝袜美女网| aa级大片欧美| 99视频精品在线| 成人黄色免费短视频| 国产成人在线色| 国产精品996| 国产黄色成人av| 国产精品自在在线| 国产精品一区三区| 国产大陆亚洲精品国产| 国产成人精品亚洲777人妖 | 国产精品福利影院| 综合久久国产九一剧情麻豆| 亚洲欧洲成人精品av97| 综合久久给合久久狠狠狠97色| 久久精品一区二区三区不卡 | 亚洲视频一区二区在线观看| 亚洲蜜桃精久久久久久久| 亚洲色欲色欲www| 一区二区国产视频| 天天综合色天天综合| 日本强好片久久久久久aaa| 三级在线观看一区二区| 美女诱惑一区二区| 国产激情视频一区二区三区欧美 | 91官网在线观看| 欧美一区二区三区在线看| 日韩午夜激情av| 日本一区二区三区四区| 中文字幕永久在线不卡| 亚洲最大成人综合| 秋霞av亚洲一区二区三| 久久99久久精品| 99久久婷婷国产综合精品| 91福利在线导航| 精品va天堂亚洲国产| 国产精品久久一级| 石原莉奈在线亚洲二区| 国产在线一区二区综合免费视频| 国产成人av电影在线| 日本道色综合久久| 日韩欧美你懂的| 国产精品久久三| 美女视频一区二区三区| 成人福利电影精品一区二区在线观看| 日本精品视频一区二区三区| 欧美一区二区三区四区视频| 国产亚洲精品bt天堂精选| 一区二区三区免费看视频| 九色综合狠狠综合久久| 色香色香欲天天天影视综合网| 91精品国产综合久久精品性色| 亚洲国产精品黑人久久久| 日韩成人一级大片| 91麻豆自制传媒国产之光| 精品久久久久久久久久久久包黑料 | 欧美性猛交xxxx乱大交退制版| 精品91自产拍在线观看一区| 亚洲网友自拍偷拍| 成人黄色一级视频|