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

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

?? intarchlib.c

?? vxwork源代碼
?? 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一区二区三区免费野_久草精品视频
国产日韩三级在线| 丰满放荡岳乱妇91ww| 国产一区二区三区在线观看精品| 亚洲一区二区三区小说| 免费视频最近日韩| 成人美女视频在线看| 欧美少妇xxx| 久久综合国产精品| 亚洲欧洲精品一区二区精品久久久 | 欧美亚洲一区三区| 国产午夜精品在线观看| 亚洲福利一二三区| 成人丝袜视频网| 日韩美女视频在线| 亚洲国产日韩在线一区模特| 成人性生交大合| 精品国产区一区| 亚洲va欧美va国产va天堂影院| www.欧美色图| 久久精品亚洲国产奇米99| 性欧美大战久久久久久久久| 91九色最新地址| 国产精品美女www爽爽爽| 国产尤物一区二区| 日韩欧美的一区| 久久精品国产**网站演员| 欧美经典一区二区三区| 99精品黄色片免费大全| 免费久久99精品国产| 亚洲欧美另类小说视频| 欧美激情一区二区三区全黄| 91超碰这里只有精品国产| 成av人片一区二区| 欧美精品粉嫩高潮一区二区| 亚洲激情中文1区| 欧美丝袜丝交足nylons图片| 亚洲欧美日韩在线不卡| 日本韩国欧美一区| 亚洲综合在线视频| 日本道精品一区二区三区| 亚洲永久精品国产| 欧美性大战久久久久久久| 亚洲丶国产丶欧美一区二区三区| 欧美色图天堂网| 亚洲狠狠爱一区二区三区| 欧美午夜一区二区三区免费大片| 亚洲国产一区二区三区| 欧美色窝79yyyycom| 日韩成人一级大片| 日韩午夜电影在线观看| 韩国毛片一区二区三区| 国产欧美日韩精品在线| 99久久精品费精品国产一区二区| 中文字幕在线播放不卡一区| 在线亚洲免费视频| 三级精品在线观看| 久久婷婷综合激情| jlzzjlzz欧美大全| 一区二区免费视频| 欧美电影免费观看高清完整版在线观看| 麻豆91在线观看| 亚洲国产高清aⅴ视频| 日本高清免费不卡视频| 麻豆国产精品一区二区三区| 国产精品欧美经典| 欧美日韩国产综合一区二区三区| 久久se精品一区精品二区| 中文字幕亚洲视频| 日韩欧美一区二区视频| 国产不卡免费视频| 一区二区三区久久久| 精品国产一区二区三区av性色| 成人一区二区在线观看| 亚洲综合丁香婷婷六月香| 日韩欧美www| 日本韩国欧美在线| 久久99久久99| 亚洲欧洲日韩女同| 日韩欧美电影一二三| 色婷婷av一区二区三区之一色屋| 日本在线播放一区二区三区| 国产精品不卡在线观看| 亚洲成av人在线观看| 欧美丰满少妇xxxxx高潮对白| 久久99深爱久久99精品| 亚洲人成影院在线观看| 欧美成va人片在线观看| 99re成人在线| 经典三级在线一区| 亚洲123区在线观看| 中文字幕欧美三区| 日韩欧美国产精品一区| 在线观看亚洲一区| 丁香另类激情小说| 麻豆freexxxx性91精品| 一区二区三区高清在线| 中文天堂在线一区| 日韩欧美国产不卡| 欧美伊人精品成人久久综合97| 粉嫩嫩av羞羞动漫久久久| 奇米色777欧美一区二区| 国产精品高潮久久久久无| www日韩大片| 日韩欧美一区在线| 这里是久久伊人| 欧美日韩日日骚| 在线观看视频一区| 99在线精品视频| eeuss鲁片一区二区三区 | 亚洲欧洲精品一区二区三区| 久久婷婷色综合| 日韩一区二区三区四区| 91麻豆精品91久久久久久清纯| 欧洲国产伦久久久久久久| 99久久夜色精品国产网站| 成人毛片在线观看| 成人免费的视频| av一二三不卡影片| 成人精品视频.| 成人影视亚洲图片在线| 不卡大黄网站免费看| 风间由美一区二区三区在线观看| 成人影视亚洲图片在线| 成人福利在线看| jizz一区二区| 色呦呦国产精品| 色哦色哦哦色天天综合| 欧洲精品中文字幕| 欧美日韩高清一区二区不卡| 欧美片在线播放| 精品剧情在线观看| 国产无遮挡一区二区三区毛片日本| 国产亚洲精品久| 中文字幕制服丝袜一区二区三区| 综合久久综合久久| 一区二区国产视频| 香蕉久久一区二区不卡无毒影院| 久久99蜜桃精品| 国产成人免费在线观看不卡| 99久久精品国产一区| 91啪在线观看| 555夜色666亚洲国产免| 久久综合九色综合欧美98| 国产精品无人区| 亚洲午夜激情网站| 另类调教123区| 99久久精品免费精品国产| 一本久久综合亚洲鲁鲁五月天| 欧美日韩成人在线| 精品国产乱码久久久久久影片| 综合在线观看色| 三级久久三级久久久| 国产成人精品www牛牛影视| 在线视频中文字幕一区二区| 日韩一级完整毛片| 国产精品国产三级国产| 日日夜夜精品视频天天综合网| 国产精品一区二区视频| 欧美性生活一区| 久久久久久电影| 亚洲国产另类av| 国产成人啪午夜精品网站男同| 欧美性三三影院| 欧美激情自拍偷拍| 同产精品九九九| 成人av在线播放网站| 日韩一区二区三区免费看| 国产精品久久久久久久久图文区| 日韩国产在线一| 91性感美女视频| 国产亚洲精品bt天堂精选| 亚洲成人免费观看| 99久久精品免费看国产| 精品对白一区国产伦| 亚洲国产视频a| 99精品一区二区| 久久精品一区二区三区四区| 午夜视频一区二区| www.日韩精品| 中文字幕第一页久久| 久久精品国产**网站演员| 欧美性三三影院| 亚洲人成网站色在线观看| 国产乱对白刺激视频不卡| 欧美老年两性高潮| 一二三四社区欧美黄| 成人免费毛片app| 久久精品在线免费观看| 狠狠色伊人亚洲综合成人| 欧美久久高跟鞋激| 亚洲乱码国产乱码精品精的特点| 国产精品一区二区久久精品爱涩 | 日本不卡一区二区| 91偷拍与自偷拍精品| 欧美激情中文不卡| 国产成人综合亚洲网站| 国产亚洲精品bt天堂精选| 国产老肥熟一区二区三区| 欧美成人在线直播| 精品在线播放免费|