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

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

?? exclib.c

?? vxworks的完整的源代碼
?? C
字號:
/* excLib.c - generic exception handling facilities *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01s,13nov01,yvp  Included private/excLibP.h01r,13sep01,pcm  moved excShowInit() from excInit() to usrConfig.c (SPR 7333)01q,04sep98,cdp  apply 01o for all ARM CPUs with ARM_THUMB==TRUE.01p,25feb98,jgn  make logMsg calls indirect for scalability (SPR #20625)01o,03dec97,cdp  force excTask to call func in Thumb state (ARM7TDMI_T).01n,09oct06,dgp  doc: correct excHookAdd() reference to ESF0 per SPR 701301m,19jun96,dgp  doc: change excHookAdd() description (SPR #6684)01l,06oct95,jdi  removed .pG "Debugging".01k,21jan93,jdi  documentation cleanup for 5.1.01j,23aug92,jcf  added _func_excJobAdd for scalability.01i,02aug92,jcf  moved printExc() to fioLib.c.01h,30jul92,rrr  backed out 01g (now back to 01f)01g,30jul92,kdl  backed out 01f changes pending rest of exc handling.01f,29jul92,rrr  removed excDeliverHook and excDeliverSignal now in signals                 added hooks for exc<Arch>Lib01e,28jul92,rdc  made printExc write enable sysExcMsg memory.01d,27jul92,rrr  added excDeliverHook for signal delivery01c,04jul92,jcf  scalable/ANSI/cleanup effort.01b,26may92,rrr  the tree shuffle01a,09jan92,yao  written from 960/excLib.c version 03f.  fixed document,		 spr#1148.*//*This library provides generic initialization facilities for handlingexceptions.  It safely traps and reports exceptions caused by programerrors in VxWorks tasks, and it reports occurrences of interrupts that areexplicitly connected to other handlers.  For information aboutarchitecture-dependent exception handling facilities, see the manual entryfor excArchLib.INITIALIZATIONInitialization of excLib facilities occurs in two steps.  First, the routineexcVecInit() is called to set all vectors to the default handlers for anarchitecture provided by the corresponding architecture exception handlinglibrary.  Since this does not involve VxWorks' kernel facilities, it isusually done early in the system start-up routine usrInit() in the libraryusrConfig.c with interrupts disabled.The rest of this package is initialized by calling excInit(), which spawnsthe exception support task, excTask(), and creates the message queues used tocommunicate with it.Exceptions or uninitialized interrupts that occur after the vectorshave been initialized by excVecInit(), but before excInit() is called,cause a trap to the ROM monitor.NORMAL EXCEPTION HANDLINGWhen a program error generates an exception (such as divide by zero, or abus or address error), the task that was executing when the error occurredis suspended, and a description of the exception is displayed on standardoutput.  The VxWorks kernel and other system tasks continue uninterrupted.The suspended task can be examined with the usual VxWorks routines,including ti() for task information and tt() for a stack trace.  It maybe possible to fix the task and resume execution with tr().  However, tasksaborted in this way are often unsalvageable and can be deleted with td().When an interrupt that is not connected to a handler occurs, the defaulthandler provided by the architecture-specific module displays adescription of the interrupt on standard output.ADDITIONAL EXCEPTION HANDLING ROUTINEThe excHookAdd() routine adds a routine that will be called when a hardwareexception occurs.  This routine is called at the end of normal exceptionhandling.TASK-LEVEL SUPPORTThe excInit() routine spawns excTask(), which performs special exceptionhandling functions that need to be done at task level.  Do not suspend,delete, or change the priority of this task.DBGLIBThe facilities of excLib, including excTask(), are used by dbgLib to supportbreakpoints, single-stepping, and additional exception handling functions.SIGLIBA higher-level, UNIX-compatible interface for hardware and softwareexceptions is provided by sigLib.  If sigvec() is used to initializethe appropriate hardware exception/interrupt (e.g., BUS ERROR == SIGSEGV),excLib will use the signal mechanism instead.INCLUDE FILES: excLib.hSEE ALSO: dbgLib, sigLib, intLib*//* LINTLIBRARY */#include "vxWorks.h"#include "esf.h"#include "iv.h"#include "intLib.h"#include "msgQLib.h"#include "signal.h"#include "taskLib.h"#include "errno.h"#include "stdarg.h"#include "logLib.h"#include "stdio.h"#include "private/excLibP.h"#include "private/funcBindP.h"/* global variables */FUNCPTR excExcepHook;	/* add'l rtn to call when exceptions occur */MSG_Q_ID excMsgQId;	/* ID of msgQ to excTask *//* excTask parameters */int excTaskId;int excTaskPriority	= 0;int excTaskOptions	= VX_SUPERVISOR_MODE | VX_UNBREAKABLE;int excTaskStackSize	= 8000;#define EXC_MAX_ARGS	6		/* max args to task level call */#define EXC_MAX_MSGS	10		/* max number of exception msgs */typedef struct				/* EXC_MSG */    {    VOIDFUNCPTR	func;			/* pointer to function to invoke */    int		arg [EXC_MAX_ARGS];	/* args for function */    } EXC_MSG;/* local variables */LOCAL int excMsgsLost;			/* count of messages to excTask lost *//********************************************************************************* excInit - initialize the exception handling package** This routine installs the exception handling facilities and spawns excTask(),* which performs special exception handling functions that need to be done at* task level.  It also creates the message queue used to communicate with* excTask().** NOTE:* The exception handling facilities should be installed as early as* possible during system initialization in the root task, usrRoot(), in* usrConfig.c.** RETURNS:* OK, or ERROR if a message queue cannot be created or excTask() cannot be* spawned.** SEE ALSO: excTask()*/STATUS excInit ()    {    _func_excJobAdd = (FUNCPTR) excJobAdd;    excMsgQId = msgQCreate (EXC_MAX_MSGS, sizeof (EXC_MSG), MSG_Q_FIFO);    if (excMsgQId == NULL)	return (ERROR);    excTaskId = taskSpawn ("tExcTask", excTaskPriority,			   excTaskOptions, excTaskStackSize,			   (FUNCPTR) excTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);    return (excTaskId == ERROR ? ERROR : OK);    }/********************************************************************************* excHookAdd - specify a routine to be called with exceptions** This routine specifies a routine that will be called when hardware* exceptions occur.  The specified routine is called after normal exception* handling, which includes displaying information about the error.  Upon return* from the specified routine, the task that incurred the error is suspended.** The exception handling routine should be declared as:* .tS*     void myHandler*         (*         int      task,    /@ ID of offending task             @/*         int      vecNum,  /@ exception vector number          @/*         <ESFxx>  *pEsf    /@ pointer to exception stack frame @/*         )* .tE* where <task> is the ID of the task that was running when the exception* occurred. <ESFxx> is architecture-specific and can be found by examining* `/target/h/arch/<arch>/esf<arch>.h'; for example, the PowerPC uses ESFPPC.** This facility is normally used by dbgLib() to activate its exception* handling mechanism.  If an application provides its own exception handler,* it will supersede the dbgLib mechanism.** RETURNS: N/A** SEE ALSO: excTask()*/void excHookAdd    (    FUNCPTR excepHook	/* routine to call when exceptions occur */    )    {    excExcepHook = excepHook;    }/********************************************************************************* excJobAdd - request a task-level function call from interrupt level** This routine allows interrupt level code to request a function call* to be made by excTask at task-level.** NOMANUAL*/STATUS excJobAdd (func, arg1, arg2, arg3, arg4, arg5, arg6)    VOIDFUNCPTR func;    int arg1;    int arg2;    int arg3;    int arg4;    int arg5;    int arg6;    {    EXC_MSG msg;    msg.func = func;    msg.arg[0] = arg1;    msg.arg[1] = arg2;    msg.arg[2] = arg3;    msg.arg[3] = arg4;    msg.arg[4] = arg5;    msg.arg[5] = arg6;    if (msgQSend (excMsgQId, (char *) &msg, sizeof (msg),		  INT_CONTEXT() ? NO_WAIT : WAIT_FOREVER, MSG_PRI_NORMAL) != OK)        {        ++excMsgsLost;        return (ERROR);        }    return (OK);    }/********************************************************************************* excTask - handle task-level exceptions** This routine is spawned as a task by excInit() to perform functions* that cannot be performed at interrupt or trap level.  It has a priority of 0.* Do not suspend, delete, or change the priority of this task.** RETURNS: N/A** SEE ALSO: excInit()*/void excTask ()    {    static int oldMsgsLost = 0;    int newMsgsLost;    EXC_MSG msg;    FOREVER	{	if (msgQReceive (excMsgQId, (char *) &msg, sizeof (msg),			 WAIT_FOREVER) != sizeof (msg))            {            if (_func_logMsg != NULL)		_func_logMsg ("excTask: error receiving msg, status = %#x.\n",		              errno, 0, 0, 0, 0, 0);            }        else#if	((CPU_FAMILY == ARM) && ARM_THUMB)	    /* force call in Thumb state */	    (* (VOIDFUNCPTR)((UINT32)(msg.func) | 1)) (msg.arg[0], msg.arg[1],						       msg.arg[2], msg.arg[3],						       msg.arg[4], msg.arg[5]);#else            (* msg.func) (msg.arg[0], msg.arg[1], msg.arg[2],			  msg.arg[3], msg.arg[4], msg.arg[5]);#endif	/* CPU_FAMILY == ARM */	/* check to see if interrupt level lost any more calls */	if ((newMsgsLost = excMsgsLost) != oldMsgsLost)	    {	    if (_func_logMsg != NULL)		_func_logMsg ("%d messages from interrupt level lost.\n",		              newMsgsLost - oldMsgsLost, 0, 0, 0, 0, 0);	    oldMsgsLost = newMsgsLost;	    }	}    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线在亚洲| 国产精品久久久久久妇女6080| 午夜精品一区二区三区免费视频| 色婷婷av一区二区| 亚洲一区欧美一区| 欧美日本一区二区| 看片网站欧美日韩| 国产欧美视频在线观看| 99re热这里只有精品免费视频| 亚洲色欲色欲www在线观看| 日本高清视频一区二区| 91成人在线观看喷潮| 亚洲国产综合人成综合网站| 日韩视频免费直播| 懂色av中文字幕一区二区三区| 国产精品毛片大码女人| 欧美日韩国产一级| 韩国精品在线观看| 亚洲色图在线看| 91精品国产综合久久久久久| 黄色资源网久久资源365| 国产精品天天看| 欧美日韩综合不卡| 国产一区视频导航| 亚洲精品亚洲人成人网| 91精品国产欧美一区二区| 国产高清视频一区| 亚洲图片欧美色图| 国产欧美日韩在线观看| 欧美视频一区二区三区| 国产精品亚洲视频| 视频一区二区三区在线| 欧美激情中文不卡| 欧美日韩成人综合天天影院| 国产成人免费在线观看不卡| 婷婷综合久久一区二区三区| 久久精品视频免费观看| 欧美精品亚洲二区| 95精品视频在线| 狠狠色综合日日| 亚洲超碰精品一区二区| 中文字幕一区二区三区蜜月| 日韩欧美电影在线| 欧美在线小视频| 国产69精品一区二区亚洲孕妇| 天天亚洲美女在线视频| 亚洲欧洲日韩综合一区二区| 欧美sm美女调教| 欧美性三三影院| heyzo一本久久综合| 精品一区二区三区免费观看 | 91高清在线观看| 精品一二线国产| 午夜av一区二区三区| 国产精品无遮挡| 久久久久久久综合日本| 91精品国产欧美一区二区| 91免费国产视频网站| 国产成人在线免费观看| 激情综合五月天| 日韩国产精品久久久久久亚洲| 亚洲欧美另类图片小说| 国产精品美女久久福利网站| 国产片一区二区| 欧美mv日韩mv| 日韩午夜av一区| 欧美精选一区二区| 欧美日韩国产在线观看| 欧美在线视频全部完| 欧美影视一区在线| 色成年激情久久综合| 色88888久久久久久影院野外| av高清久久久| 91玉足脚交白嫩脚丫在线播放| 国产成人免费9x9x人网站视频| 国产麻豆成人精品| 国产不卡一区视频| 波多野结衣亚洲| 91小视频在线| 在线日韩av片| 日本高清不卡在线观看| 欧美午夜不卡在线观看免费| 精品污污网站免费看| 欧美日韩国产天堂| 91精品国产免费| 日韩欧美亚洲国产另类| 精品99一区二区三区| 久久久精品蜜桃| 国产精品动漫网站| 亚洲一区二区三区视频在线| 91美女片黄在线观看| 99久久精品免费精品国产| 99久久精品一区| 欧美性欧美巨大黑白大战| 欧美久久久久久蜜桃| 精品国产电影一区二区| 欧美国产日韩亚洲一区| 亚洲精品视频在线观看免费| 亚洲成av人**亚洲成av**| 乱中年女人伦av一区二区| 国产乱码精品一区二区三区五月婷| 丁香婷婷深情五月亚洲| 日本道精品一区二区三区| 欧美一区二区在线看| 国产欧美日韩麻豆91| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲1区2区3区4区| 国产精品1024| 在线观看国产精品网站| 日韩欧美一级特黄在线播放| 国产精品三级电影| 午夜一区二区三区在线观看| 韩国三级在线一区| 91小视频在线免费看| 日韩精品一区二区三区四区| 亚洲欧洲无码一区二区三区| 日韩av电影天堂| 不卡av在线免费观看| 欧美一级艳片视频免费观看| 国产亚洲精品精华液| 亚洲香蕉伊在人在线观| 国产二区国产一区在线观看| 欧美视频日韩视频| 国产欧美一区二区精品婷婷 | 91.成人天堂一区| 狠狠色丁香久久婷婷综| 一本久久精品一区二区| 久久在线免费观看| 亚洲一区二区在线视频| 国产精品资源在线观看| 欧美日本在线观看| 一区免费观看视频| 韩国精品一区二区| 欧美伦理电影网| 亚洲男同性视频| 国产mv日韩mv欧美| 日韩欧美精品三级| 五月激情综合网| 色婷婷亚洲一区二区三区| 国产色综合久久| 日本午夜精品视频在线观看 | 欧美日本一区二区在线观看| 国产精品对白交换视频| 国产精品一区不卡| 91精品国产入口在线| 亚洲图片欧美一区| 91麻豆免费在线观看| 国产女主播一区| 国产美女视频一区| 日韩精品一区二区三区在线观看 | 日本网站在线观看一区二区三区| 99精品偷自拍| 国产精品久久久久久一区二区三区 | 91视频91自| 日韩毛片在线免费观看| 成人深夜福利app| 国产女主播在线一区二区| 国产在线播精品第三| 精品国产一区二区国模嫣然| 奇米888四色在线精品| 欧美色偷偷大香| 亚洲高清免费观看| 欧美日本在线播放| 午夜电影一区二区三区| 欧美日韩黄视频| 五月天激情小说综合| 欧美精品自拍偷拍动漫精品| 五月天精品一区二区三区| 欧美日韩国产系列| 视频一区二区欧美| 欧美视频在线播放| 日本美女视频一区二区| 欧美一级xxx| 首页综合国产亚洲丝袜| 91精品国产一区二区三区蜜臀 | 国精产品一区一区三区mba桃花| 91精品国产福利| 精一区二区三区| 久久久99久久| av亚洲精华国产精华| 亚洲欧美综合色| 色综合天天综合给合国产| 亚洲美女屁股眼交| 欧美视频在线播放| 男男视频亚洲欧美| 久久免费午夜影院| 不卡欧美aaaaa| 又紧又大又爽精品一区二区| 欧美日韩免费视频| 美女免费视频一区二区| 国产日韩欧美一区二区三区综合| 成人一级视频在线观看| 亚洲色图欧美在线| 欧美日韩国产综合一区二区三区| 久久99精品久久久久久动态图| 久久久精品国产免费观看同学| 99久久99久久精品国产片果冻 | 国产精品乱码人人做人人爱| 99久久免费视频.com| 香蕉久久一区二区不卡无毒影院|