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

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

?? workqalib.s

?? vxwork源代碼
?? S
字號:
/* workQALib.s - i80x86 internal VxWorks kernel work queue assembly library *//* Copyright 1984-2002 Wind River Systems, Inc. *//*modification history--------------------01i,20mar02,hdn  preserved previous state of the int enable bit (spr 74016)01h,23aug01,hdn  added FUNC/FUNC_LABEL, replaced .align w .balign01g,25feb99,nps  remove obsolete scrPad reference.01f,17feb98,pr   deleted Windview code (no more needed).01e,29jul96,sbs  Made windview conditionally compile.01d,08aug94,hdn  added support for WindView.01c,17nov93,hdn  fixed a bug: changed movb to movzbl.01b,13oct92,hdn  debugged.01a,07apr92,hdn  written based on TRON version.*//*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/workQLibP.h"#include "private/eventP.h"	.data	.globl	FUNC(copyright_wind_river)	.long	FUNC(copyright_wind_river)#ifndef PORTABLE	/* externals */	.globl	FUNC(workQPanic)	.globl	VAR(workQReadIx)	.globl	VAR(workQWriteIx)	.globl	VAR(workQIsEmpty)	/* internals */	.globl	GTEXT(workQAdd0)	/* add function to workQ */	.globl	GTEXT(workQAdd1)	/* add function and 1 arg to workQ */	.globl	GTEXT(workQAdd2)	/* add function and 2 args to workQ */	.globl	GTEXT(workQDoWork)	/* do all queued work in a workQ */	.text	.balign 16/********************************************************************************* workQOverflow - work queue has overflowed so call workQPanic ()** NOMANUAL*/  workQOverflow:					/* leave interrupts locked */	call	FUNC(workQPanic)		/* panic and never return *//********************************************************************************* workQAdd0 - add a function with no argument to the work queue** NOMANUAL* void workQAdd0 (func)*     FUNCPTR func;	/@ function to invoke @/*/  	.balign 16,0x90FUNC_LABEL(workQAdd0)	pushfl					/* save IF in EFLAGS */	cli					/* LOCK INTERRUPTS */	movzbl	FUNC(workQWriteIx),%eax		/* get write index into %eax */	movl	%eax,%ecx	addb	$4,%al				/* advance write index */	cmpb	FUNC(workQReadIx),%al		/* overflow? */	je	workQOverflow			/* panic if overflowed */	movb	%al,FUNC(workQWriteIx)		/* update write index */	popfl					/* UNLOCK INTERRUPTS */	movl	$0,FUNC(workQIsEmpty)		/* work queue isn't empty */	leal	FUNC(pJobPool)(,%ecx,4),%edx	/* get a start of an entry */	movl	SP_ARG1(%esp),%eax		/* move it to pool */	movl	%eax,JOB_FUNCPTR(%edx)	ret					/* we're done *//********************************************************************************* workQAdd1 - add a function with one argument to the work queue** NOMANUAL* void workQAdd1 (func, arg1)*     FUNCPTR func;	/@ function to invoke 		@/*     int arg1;		/@ parameter one to function	@/*/  	.balign 16,0x90FUNC_LABEL(workQAdd1)	pushfl					/* save IF in EFLAGS */	cli					/* LOCK INTERRUPTS */	movzbl	FUNC(workQWriteIx),%eax		/* get write index into %eax */	movl	%eax,%ecx	addb	$4,%al				/* advance write index */	cmpb	FUNC(workQReadIx),%al		/* overflow? */	je	workQOverflow			/* panic if overflowed */	movb	%al,FUNC(workQWriteIx)		/* update write index */	popfl					/* UNLOCK INTERRUPTS */	movl	$0,FUNC(workQIsEmpty)		/* work queue isn't empty */	leal	FUNC(pJobPool)(,%ecx,4),%edx	/* get the start of an entry */	movl	SP_ARG1(%esp),%eax		/* move the function to pool */	movl	%eax,JOB_FUNCPTR(%edx)	movl	SP_ARG2(%esp),%eax		/* move the argument to pool */	movl	%eax,JOB_ARG1(%edx)	ret					/* we're done *//********************************************************************************* workQAdd2 - add a function with two arguments to the work queue** NOMANUAL* void workQAdd2 (func, arg1, arg2)*     FUNCPTR func;	/@ function to invoke 		@/*     int arg1;		/@ parameter one to function	@/*     int arg2;		/@ parameter two to function	@/*/  	.balign 16,0x90FUNC_LABEL(workQAdd2)	pushfl					/* save IF in EFLAGS */	cli					/* LOCK INTERRUPTS */	movzbl	FUNC(workQWriteIx),%eax		/* get write index into %eax */	movl	%eax,%ecx	addb	$4,%al				/* advance write index */	cmpb	FUNC(workQReadIx),%al		/* overflow? */	je	workQOverflow			/* panic if overflowed */	movb	%al,FUNC(workQWriteIx)		/* update write index */	popfl					/* UNLOCK INTERRUPTS */	movl	$0,FUNC(workQIsEmpty)		/* work queue isn't empty */	leal	FUNC(pJobPool)(,%ecx,4),%edx	/* get the start of an entry */	movl	SP_ARG1(%esp),%eax		/* move the function to pool */	movl	%eax,JOB_FUNCPTR(%edx)	movl	SP_ARG2(%esp),%eax		/* move 1st argument to pool */	movl	%eax,JOB_ARG1(%edx)	movl	SP_ARG3(%esp),%eax		/* move 2nd argument to pool */	movl	%eax,JOB_ARG2(%edx)	ret					/* we're done */    /********************************************************************************* workQDoWork - perform all the work queued in the kernel work queue** This routine empties all the deferred work in the work queue.  The global* variable errno is saved restored, so the work will not clobber it.* The work routines may be C code, and thus clobber the volatile registers* %e[adc]x.  This routine avoids using these registers.** NOMANUAL* void workQDoWork ()*/	.balign 16,0x90FUNC_LABEL(workQDoWork)	pushl	FUNC(errno)			/* push _errno */	movzbl	FUNC(workQReadIx),%eax		/* load read index */	cmpb	FUNC(workQWriteIx),%al		/* if readIndex != writeIndex */	je	workQNoMoreWork			/* more work to be done */workQMoreWork:	sall	$2,%eax	leal	FUNC(pJobPool)(%eax),%edx	addb	$4,FUNC(workQReadIx)		/* increment readIndex */	pushl	JOB_ARG2(%edx)			/* push arg2 */	pushl	JOB_ARG1(%edx)			/* push arg1 */	movl	FUNC(pJobPool)(%eax),%eax	call	*%eax				/* %eax the work routine */	addl	$8,%esp				/* clean up stack */	movl	$1,FUNC(workQIsEmpty)		/* set boolean before test! */	movzbl	FUNC(workQReadIx),%eax		/* load the new read index */	cmpb	FUNC(workQWriteIx),%al		/* if readIndex != writeIndex */	jne	workQMoreWork			/* more work to be done */workQNoMoreWork:	pop	FUNC(errno)			/* pop _errno */	ret					/* return to caller */#endif /* !PORTABLE */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久五月婷婷丁香社区| www.成人在线| 日韩你懂的在线观看| 五月激情丁香一区二区三区| 欧美福利电影网| 美美哒免费高清在线观看视频一区二区 | 国产精品一区二区三区网站| 久久综合99re88久久爱| 成人一区二区视频| 亚洲视频图片小说| 欧美猛男男办公室激情| 久久精品99国产精品日本| 国产亚洲欧美在线| 色婷婷久久一区二区三区麻豆| 亚洲最新在线观看| 日韩三区在线观看| 国产福利精品一区二区| 亚洲三级免费观看| 777午夜精品视频在线播放| 国产精品一区2区| 久久精品亚洲精品国产欧美kt∨| 99久精品国产| 日本vs亚洲vs韩国一区三区二区 | 国产精品的网站| 精品视频一区三区九区| 久久国产婷婷国产香蕉| 国产精品电影一区二区| 制服丝袜成人动漫| 成人av免费在线播放| 天天综合色天天综合| 中文字幕国产一区| 欧美日韩一区在线| 成人小视频在线| 性久久久久久久久久久久| 26uuu久久天堂性欧美| 91亚洲男人天堂| 免费视频一区二区| 亚洲欧洲中文日韩久久av乱码| 91精品国产91久久综合桃花| 成人黄色a**站在线观看| 日韩成人免费在线| 亚洲精品国产a| 国产欧美日韩精品一区| 91精品国产色综合久久ai换脸| 99久久精品免费看国产免费软件| 久久99九九99精品| 亚洲成人av一区二区三区| 国产精品乱人伦| 日韩一区二区免费视频| 一本高清dvd不卡在线观看| 国产一区二区免费在线| 日韩高清不卡一区二区三区| 一区二区三区国产精品| 国产精品欧美一级免费| 久久久久99精品一区| 日韩精品一区二区三区在线 | 久久97超碰色| 亚洲va欧美va天堂v国产综合| 国产精品国产自产拍高清av王其| 精品国产一区二区三区久久久蜜月| 欧美视频中文字幕| 99久久免费国产| 国产乱妇无码大片在线观看| 天天色综合成人网| 亚洲福利视频一区二区| 亚洲综合网站在线观看| 一区二区三区美女| 亚洲精品视频在线观看免费| 日韩一区中文字幕| 中文字幕一区二区三区不卡在线| 中文在线免费一区三区高中清不卡| 欧美大片国产精品| 日韩免费观看高清完整版 | 欧美亚一区二区| 91蝌蚪国产九色| 99视频精品在线| 99r精品视频| 色哟哟一区二区| 在线观看国产日韩| 欧美综合久久久| 欧美日本一道本在线视频| 欧美区视频在线观看| 欧美日韩国产另类一区| 91精品国产一区二区三区蜜臀 | 亚洲超丰满肉感bbw| 亚洲国产精品久久不卡毛片 | 亚洲激情综合网| 亚洲精品福利视频网站| 一区二区三区在线免费观看| 一区二区三区中文免费| 五月开心婷婷久久| 日本美女一区二区| 国产一区久久久| zzijzzij亚洲日本少妇熟睡| 色欲综合视频天天天| 欧美日韩免费观看一区二区三区| 欧美精品乱码久久久久久按摩| 日韩一级成人av| 国产日韩成人精品| 一区二区三区四区亚洲| 日韩制服丝袜先锋影音| 久久国产人妖系列| 波多野结衣在线一区| 欧美亚洲一区二区在线观看| 日韩精品一区二区三区老鸭窝| 欧美激情在线一区二区三区| 亚洲美女在线一区| 免费观看在线综合| 国产成人丝袜美腿| 欧美性做爰猛烈叫床潮| 精品久久久久久久久久久久久久久久久| 26uuu国产日韩综合| 中文字幕一区二区三区在线播放| 亚洲成人精品一区二区| 国产精品自在在线| 91美女片黄在线观看| 欧美一级艳片视频免费观看| 日本一区二区免费在线| 亚洲成人在线网站| 国产一区二区网址| 欧美午夜免费电影| 久久免费国产精品| 亚洲一区二区中文在线| 国产在线日韩欧美| 欧美天堂一区二区三区| 久久久精品中文字幕麻豆发布| 一区二区三区四区精品在线视频| 老色鬼精品视频在线观看播放| 91免费看视频| 久久日一线二线三线suv| 亚洲一二三四在线| 成人av电影在线| 欧美r级在线观看| 午夜私人影院久久久久| 成人avav在线| 久久久久久久性| 日本亚洲一区二区| 色狠狠综合天天综合综合| 久久你懂得1024| 日日夜夜免费精品视频| 91片在线免费观看| 欧美激情中文字幕| 国内不卡的二区三区中文字幕| 欧美日韩国产精品成人| 国产精品三级电影| 精品一区二区在线看| 欧美喷水一区二区| 亚洲国产精品久久人人爱| 色综合中文字幕国产 | 日本中文一区二区三区| 日本韩国欧美三级| 亚洲视频 欧洲视频| 国产成人午夜精品影院观看视频 | 国产亲近乱来精品视频 | 日本亚洲三级在线| 欧美三级日韩三级国产三级| 亚洲欧美在线视频| av在线一区二区三区| 亚洲国产精华液网站w| 国产寡妇亲子伦一区二区| 精品国产乱码久久久久久久久| 丝袜美腿亚洲色图| 欧美日韩mp4| 日韩成人一区二区三区在线观看| 欧美视频一区二区三区| 亚洲成人久久影院| 7777精品伊人久久久大香线蕉| 午夜在线电影亚洲一区| 欧美高清你懂得| 蜜桃91丨九色丨蝌蚪91桃色| 欧美狂野另类xxxxoooo| 日韩精品电影一区亚洲| 欧美日韩www| 国产·精品毛片| 久久久综合网站| 成人午夜在线免费| 国产精品情趣视频| 色先锋资源久久综合| 一区二区三区四区不卡视频| 欧美性色黄大片| 日韩电影在线一区二区三区| 日韩一级片在线播放| 国产精品资源在线观看| 国产精品三级视频| 色偷偷久久一区二区三区| 亚洲成精国产精品女| 日韩欧美一级二级三级久久久| 韩国成人福利片在线播放| 中文无字幕一区二区三区| 91小宝寻花一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 日韩午夜电影av| 国产**成人网毛片九色 | 日本成人在线看| 久久婷婷国产综合精品青草| 99国产精品99久久久久久| 日韩成人精品视频| 久久精品一区二区三区av| 91亚洲精品久久久蜜桃| 日韩激情中文字幕|