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

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

?? intarchlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* intArchLib.c - architecture-dependent interrupt library *//* Copyright 1984-2001 Wind River Systems, Inc. *//*modification history--------------------02v,05jun02,wsl  remove reference to SPARC and i96002u,09may02,wsl  fix minor formatting error02t,20nov01,hdn  updated x86 specific sections02s,13nov01,hbh  Updated for simulators.02r,30oct01,zl   corrected table in SH section of intConnect().02q,02oct01,hdn  added intStackEnable() for PENTIUM (spr 69832: int stack)02p,14sep01,hdn  added intHandlerCreateI86()/intVec[SG]et2() doc (spr 30292)02o,19feb01,hk   update intConnect()/intVecBaseSet()/intVecSet() docs for T2/SH.02n,03mar00,zl   merged SH support into T202m,16mar99,elg  add information about conversion macros (SPR 7473).02l,12mar99,elg  delete the SEE ALSO comment in intLevelSet() (SPR 22809).02k,11feb99,wsl  add comment documenting ERRNO value02j,05oct98,jmp  doc: added {...} when necessary.02i,21apr98,jpd  updated ARM-specific documentation.02h,08jul97,dgp  doc: add info about PowerPC to intLock() (SPR 7768)02h,03mar97,jpd  added ARM-specific documentation.02g,09dec96,dgp  doc: fix SPR #7580 (add INCLUDE FILE: intLib.h) and change		      MIPS R3000/R4000 to MIPS02f,14nov96,dgp  doc: specify MIPS and PPC support for specific routines02e,30oct96,dgp  doc: intHandlerCreate() does not exist in PowerPC per 		 SPR 585102d,25nov95,jdi  removed 29k stuff.02c,06feb95,rhp  add AM29K note to intHandlerCreate() man page.            jdi  changed 80960 to i960.02b,26jan95,rhp  doc: included i386/i486 info, R4000 info, and misc doc tweaks02a,12jan95,rhp  propagated no-syscall caveat to intLevelSet doc (SPR#1094);                 added refs to intLock() and taskLock() to SEE ALSO line                  for intLockLevelSet(), and second example to intLock() man page                 (SPR#1304).01d,18apr94,pme  added Am29K specific information to intLevelSet()                 fixed intVecGet() manual for Am29200 and Am29030.01c,07dec93,pme  doc tweaks.		 added Am29K family support.01h,22sep94,rhp  Restore paragraph break accidentally deleted with previous fix.01g,22sep94,rhp  fix SPARC-specific intVecSet() description (SPR#2513).01f,20sep94,rhp  propagate new SPARC info for intVecBaseSet()01e,20sep94,rhp  propagate new SPARC info for intVecSet(); '94 copyright01d,19sep94,rhp  do not mention exceptions in intArchLib man page (SPR#1494).01c,16sep94,rhp  add caveats re avoiding system calls under intLock (SPR#3582).01b,20jan93,jdi  documentation cleanup.01a,23sep92,jdi  written, based on intALib.s and intArchLib.c for		 mc68k, sparc, i960, mips.*//*DESCRIPTIONThis library provides architecture-dependent routines to manipulateand connect to hardware interrupts.  Any C language routine can beconnected to any interrupt by calling intConnect().  Vectors can beaccessed directly by intVecSet() and intVecGet().  The vector (trap)base register (if present) can be accessed by the routinesintVecBaseSet() and intVecBaseGet().Tasks can lock and unlock interrupts by calling intLock() and intUnlock().The lock-out level can be set and reported by intLockLevelSet() andintLockLevelGet() (MC680x0, x86, ARM and SH only).The routine intLevelSet() changes the current interrupt level of theprocessor (MC680x0, ARM, SimSolaris and SH).WARNINGDo not call VxWorks system routines with interrupts locked.Violating this rule may re-enable interrupts unpredictably.INTERRUPT VECTORS AND NUMBERSMost of the routines in this library take an interrupt vector as aparameter, which is generally the byte offset into the vector table.Macros are provided to convert between interrupt vectors and interruptnumbers:.iP IVEC_TO_INUM(intVector) 10converts a vector to a number..iP INUM_TO_IVEC(intNumber)converts a number to a vector..iP TRAPNUM_TO_IVEC(trapNumber)converts a trap number to a vector.EXAMPLETo switch between one of several routines for a particular interrupt,the following code fragment is one alternative:.CS    vector  = INUM_TO_IVEC(some_int_vec_num);    oldfunc = intVecGet (vector);    newfunc = intHandlerCreate (routine, parameter);    intVecSet (vector, newfunc);    ...    intVecSet (vector, oldfunc);    /@ use original routine @/    ...    intVecSet (vector, newfunc);    /@ reconnect new routine @/.CEINCLUDE FILES: iv.h, intLib.hSEE ALSO: intLib*//********************************************************************************* intLevelSet - set the interrupt level (MC680x0, x86, ARM, SimSolaris, SimNT and SH)** This routine changes the interrupt mask in the status register to take on* the value specified by <level>.  Interrupts are locked out at or below* that level.  The value of <level> must be in the following range:** .TS* tab(|);* l l.*     MC680x0:	        | 0 - 7*     SH:	        | 0 - 15*     ARM:	        | BSP-specific*     SimSolaris:	| 0 - 1*     x86:	        | interrupt controller specific* .TE** \"On SPARC systems, traps must be enabled before the call.* On x86 systems, there are no interrupt level in the processor* and the external interrupt controller manages the interrupt level.* Therefore this routine does nothing and returns OK always.** NOTE SIMNT: * This routine does nothing.** WARNING* Do not call VxWorks system routines with interrupts locked.* Violating this rule may re-enable interrupts unpredictably.** RETURNS: The previous interrupt level.*/int intLevelSet    (    int level	/* new interrupt level mask */    )    {    ...    }/********************************************************************************* intLock - lock out interrupts* * This routine disables interrupts.  The intLock() routine returns an* architecture-dependent lock-out key representing the interrupt level* prior to the call; this key can be passed to intUnlock() to* re-enable interrupts.* * For MC680x0, x86, and SH architectures, interrupts* are disabled at the level set by intLockLevelSet().  The default* lock-out level is the highest interrupt level (MC680x0 = 7,* x86 = 1, SH = 15).  * * For SimSolaris architecture, interrupts are masked. Lock-out level returned* is 1 if interrupts were already locked, 0 otherwise.** For SimNT, a windows semaphore is used to lock the interrupts.* Lock-out level returned is 1 if interrupts were already locked, 0 otherwise.** For MIPS processors, interrupts are disabled at the* master lock-out level; this means no interrupt can occur even if* unmasked in the IntMask bits (15-8) of the status register.** For ARM processors, interrupts (IRQs) are disabled by setting the I bit* in the CPSR. This means no IRQs can occur.** For PowerPC processors, there is only one interrupt vector.  The external* interrupt (vector offset 0x500) is disabled when intLock() is called; this* means that the processor cannot be interrupted by any external event.** IMPLEMENTATION* The lock-out key is implemented differently for different architectures:** .TS* tab(|);* l l.*     MC680x0:     | interrupt field mask*     MIPS:        | status register*     x86:         | interrupt enable flag (IF) bit from EFLAGS register*     PowerPC:     | MSR register value*     ARM          | I bit from the CPSR*     SH:          | status register*     SimSolaris:  | 1 or 0 *     SimNT:       | 1 or 0 * .TE* * WARNINGS* Do not call VxWorks system routines with interrupts locked.* Violating this rule may re-enable interrupts unpredictably.** The routine intLock() can be called from either interrupt or task level.* When called from a task context, the interrupt lock level is part of the* task context.  Locking out interrupts does not prevent rescheduling.* Thus, if a task locks out interrupts and invokes kernel services that* cause the task to block (e.g., taskSuspend() or taskDelay()) or that cause a* higher priority task to be ready (e.g., semGive() or taskResume()), then* rescheduling occurs and interrupts are unlocked while other tasks* run.  Rescheduling may be explicitly disabled with taskLock().* Traps must be enabled when calling this routine.* ** EXAMPLES* .CS*     lockKey = intLock ();**      ... (work with interrupts locked out)**     intUnlock (lockKey);* .CE** To lock out interrupts and task scheduling as well (see WARNING above):* .CS*     if (taskLock() == OK)*         {*         lockKey = intLock ();**         ... (critical section)**         intUnlock (lockKey);*         taskUnlock();*         }*      else*         {*         ... (error message or recovery attempt)*         }* .CE** RETURNS* An architecture-dependent lock-out key for the interrupt level* prior to the call.** SEE ALSO: intUnlock(), taskLock(), intLockLevelSet()*/int intLock (void)    {    ...    }/********************************************************************************* intUnlock - cancel interrupt locks** This routine re-enables interrupts that have been disabled by intLock().* The parameter <lockKey> is an architecture-dependent lock-out key* returned by a preceding intLock() call.** RETURNS: N/A** SEE ALSO: intLock()*/void intUnlock    (    int lockKey		/* lock-out key returned by preceding intLock() */    )    {    ...    }/********************************************************************************* intEnable - enable corresponding interrupt bits (MIPS, PowerPC, ARM)* * This routine enables the input interrupt bits on the present status* register of the MIPS and PowerPC processors.** NOTE ARM:* ARM processors generally do not have on-chip interrupt controllers.* Control of interrupts is a BSP-specific matter.  This routine calls a* BSP-specific routine to enable the interrupt.  For each interrupt* level to be used, there must be a call to this routine before it will* be allowed to interrupt.** NOTE MIPS:* For MIPS, it is strongly advised that the level be a combination of* `SR_IBIT1' - `SR_IBIT8'.** RETURNS: OK or ERROR. (MIPS: The previous contents of the status register).* */int intEnable    (    int level	  /* new interrupt bits (0x00 - 0xff00) */    )    {    ...    }/********************************************************************************* intDisable - disable corresponding interrupt bits (MIPS, PowerPC, ARM)* * On MIPS and PowerPC architectures, this routine disables the corresponding* interrupt bits from the present status register.  ** NOTE ARM:* ARM processors generally do not have on-chip interrupt controllers.* Control of interrupts is a BSP-specific matter. This routine calls a* BSP-specific routine to disable a particular interrupt level,* regardless of the current interrupt mask level.** NOTE MIPS:* For MIPS, the macros `SR_IBIT1' - `SR_IBIT8' define bits that may be set.** RETURNS: OK or ERROR. (MIPS: The previous contents of the status register).*/int intDisable    (    int level	  /* new interrupt bits (0x0 - 0xff00) */    )    {    ...    }/********************************************************************************* intCRGet - read the contents of the cause register (MIPS)** This routine reads and returns the contents of the MIPS cause* register.** RETURNS: The contents of the cause register.*/int intCRGet (void)    {    ...    }/********************************************************************************* intCRSet - write the contents of the cause register (MIPS)** This routine writes the contents of the MIPS cause register.** RETURNS: N/A*/void intCRSet    (    int value      /* value to write to cause register */    )    {    ...    }/********************************************************************************* intSRGet - read the contents of the status register (MIPS)** This routine reads and returns the contents of the MIPS status* register.** RETURNS: The previous contents of the status register.*/int intSRGet (void)    {    ...    }/********************************************************************************* intSRSet - update the contents of the status register (MIPS)** This routine updates and returns the previous contents of the MIPS* status register.** RETURNS: The previous contents of the status register.*/int intSRSet    (    int value	  /* value to write to status register */    )    {    ...    }/********************************************************************************* intConnect - connect a C routine to a hardware interrupt** This routine connects a specified C routine to a specified interrupt* vector.  The address of <routine> is generally stored at <vector> so* that <routine> is called with <parameter> when the interrupt occurs.* The routine is invoked in supervisor mode at interrupt level.  A proper* C environment is established, the necessary registers saved, and the* stack set up.** The routine can be any normal C code, except that it must not invoke

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合一区二区| 精品国产1区2区3区| 福利视频网站一区二区三区| 免费高清成人在线| 日本不卡视频在线观看| 五月天亚洲婷婷| 日韩电影免费在线观看网站| 亚瑟在线精品视频| 日韩av一级片| 裸体在线国模精品偷拍| 久久99国产精品麻豆| www.99精品| 欧美色图激情小说| 国产色婷婷亚洲99精品小说| 亚洲国产精品ⅴa在线观看| 欧美国产精品劲爆| 亚洲日本韩国一区| 日韩欧美一二区| 欧美亚洲自拍偷拍| 精品少妇一区二区三区在线播放| 精品国产sm最大网站| 国产精品久久久久aaaa樱花| 亚洲第一福利一区| 国产老肥熟一区二区三区| 色婷婷精品久久二区二区蜜臂av | 99久久精品免费看| 正在播放一区二区| 亚洲欧美日韩一区二区三区在线观看| 亚瑟在线精品视频| 色哟哟一区二区三区| 精品免费国产一区二区三区四区| 国产精品人妖ts系列视频| 午夜伊人狠狠久久| 日本韩国一区二区三区| 精品国产污网站| 日韩高清国产一区在线| 日韩欧美国产1| 亚洲色欲色欲www在线观看| 美女视频网站黄色亚洲| 欧美日韩高清在线| 婷婷中文字幕综合| 欧美一区二区视频在线观看2020| 亚洲精品网站在线观看| 成人免费视频播放| 亚洲少妇30p| 精品视频免费在线| 日本aⅴ精品一区二区三区| 欧美色视频一区| 天天影视色香欲综合网老头| 欧美日韩久久一区二区| 日韩精品色哟哟| 欧美成人三级电影在线| 国产一区二区三区在线观看免费 | 成人午夜激情在线| 亚洲欧洲成人精品av97| 欧美亚洲国产一区二区三区 | 99久久精品免费| 亚洲图片有声小说| 久久亚洲综合色一区二区三区| 国产在线视视频有精品| 中文字幕va一区二区三区| 91黄视频在线| 精品一区二区三区视频在线观看| 国产校园另类小说区| 欧美日韩精品一区二区三区四区 | 91精品国产91久久久久久一区二区 | 欧美一区二区三区思思人| 精品在线免费视频| 亚洲一区二区三区不卡国产欧美| 欧美一区二区三区视频在线 | 久久久午夜精品理论片中文字幕| 国产精品一级片| 无码av中文一区二区三区桃花岛| 日韩精品一区国产麻豆| 一本色道久久综合精品竹菊| 久久国产日韩欧美精品| 无码av中文一区二区三区桃花岛| 国产片一区二区三区| 日韩精品专区在线| 91超碰这里只有精品国产| 丁香六月久久综合狠狠色| 九色综合国产一区二区三区| 香蕉成人伊视频在线观看| 亚洲综合色婷婷| 亚洲精品视频在线观看网站| 久久九九影视网| 国产欧美日韩久久| 国产欧美日本一区视频| 国产精品免费aⅴ片在线观看| 久久综合色鬼综合色| 精品日韩欧美在线| 久久久综合精品| 欧美激情在线免费观看| 亚洲欧洲日产国码二区| 亚洲丝袜美腿综合| 亚洲国产精品久久不卡毛片| 一区二区久久久| 丝袜美腿成人在线| 国产乱码精品一区二区三区忘忧草| 美女国产一区二区| 成人网男人的天堂| 欧美亚洲一区二区在线观看| 欧美三区免费完整视频在线观看| www精品美女久久久tv| www欧美成人18+| 亚洲精品午夜久久久| 久久9热精品视频| av在线播放成人| 欧美日韩精品一区二区在线播放| 日韩视频123| 亚洲国产精品99久久久久久久久| 中文字幕一区二区三区蜜月| 亚洲最大成人网4388xx| 国产在线国偷精品产拍免费yy| 一本大道综合伊人精品热热 | 亚洲一区二区三区精品在线| 久久狠狠亚洲综合| 欧美乱妇23p| 亚洲精品中文字幕乱码三区| 狠狠久久亚洲欧美| 欧美精品免费视频| 亚洲午夜国产一区99re久久| 国产综合色视频| 日韩亚洲国产中文字幕欧美| 国产精品福利av| 成人动漫中文字幕| 国产精品系列在线| 久久国内精品视频| 精品国产网站在线观看| 日本伊人色综合网| 欧美精品国产精品| 午夜精品久久久久| 欧美精品v日韩精品v韩国精品v| 亚洲人成亚洲人成在线观看图片| thepron国产精品| 国产精品区一区二区三区| 成人伦理片在线| 综合av第一页| 色婷婷亚洲综合| 午夜精品久久一牛影视| 制服丝袜一区二区三区| 天使萌一区二区三区免费观看| 欧美日韩久久久一区| 美女任你摸久久| 欧美国产成人精品| 色婷婷久久一区二区三区麻豆| 亚洲色图视频免费播放| 成人深夜视频在线观看| 图片区小说区国产精品视频| 92国产精品观看| 亚洲国产日韩综合久久精品| 欧美在线999| 综合欧美一区二区三区| 成人精品一区二区三区四区| 中文字幕视频一区| 欧美在线免费观看视频| 久久婷婷成人综合色| 国产精品影视在线观看| 亚洲人成影院在线观看| 欧美亚洲图片小说| 久久99久久99小草精品免视看| 久久久高清一区二区三区| 成人动漫中文字幕| 天天综合天天综合色| 五月天亚洲精品| 久久久www成人免费毛片麻豆| 99在线视频精品| 免费成人深夜小野草| 国产亚洲精品超碰| 欧美日韩免费高清一区色橹橹 | 国精产品一区一区三区mba视频| 久久久99久久| 在线不卡免费av| 日韩精品电影在线| 国产精品久久久久久久久搜平片| 欧美巨大另类极品videosbest | 91在线视频播放地址| 久久国产成人午夜av影院| 亚洲自拍与偷拍| 中文字幕制服丝袜一区二区三区 | 国产成人av一区二区| 午夜欧美2019年伦理| 亚洲午夜久久久久久久久电影院| 91精品国产综合久久精品| 91美女蜜桃在线| 91在线无精精品入口| 国产成人一区二区精品非洲| 蜜臀av一区二区在线免费观看| 亚洲一区二区三区在线看| 中文字幕一区二区三区在线播放| 欧美色网站导航| 精品污污网站免费看| 欧美在线视频日韩| 欧美卡1卡2卡| 欧美一区二区视频观看视频| 日韩一区二区在线免费观看| 日韩一级二级三级| 日韩免费成人网| 中文字幕av一区二区三区免费看| 久久九九久久九九|