⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usrwdb.c

📁 ppc 8245 可编译bsp 包括 uart
💻 C
📖 第 1 页 / 共 3 页
字号:
/* usrWdb.c - configuration file for the WDB agent *//* Copyright 1984-1999 Wind River Systems, Inc. *//*modification history--------------------03h,19dec00,pai  Included (uncommented) wdbPipePktDrv.h.  This does not                 conflict with recent NPT modifications.  Moreover, it is                 needed for T2 WDB_COMM_PIPE configuration.03g,25aug99,sj  dont include private muxLib header file 03f,30jul99,pul  modifications to support NPT03e,29apr99,pul  Upgraded NPT phase3 code to tor2.0.003d,31mar99,sj  commenting out #include wdbPipePktDrv.h until tor2_0_x merge03c,18mar99,sj  removed INCLUDE_NPT check03b,05mar99,sj  eliminated call to muxTkLibInit. Must set muxMaxBinds03a,15feb99,dbt remove task creation hook only if it has been previously                installed (SPR #24195)02z,08nov98,sj  added NPT support 02y,12aug98,gnn fixed return values from wdbCommIfInit02x,06aug98,pdn make sure that WDB_MTU is less or equal WDB_PIPE_PKT_MTU.02w,03jun98,cym specified type int for local variable in taskCreateHookAdd.02v,02jun98,dbt wdbTgtHasFpp() routine is now LOCAL.02u,20may98,dbt test if wdbPipePktDevInit() returns an error.		completed error checking for other communication links.02t,13may98,dbt reworked HPSIM fix for SLIP communication link.		check if sysBootLine is empty before parsing it.02s,24apr98,dbt test pFpContext before reading task floating point registers                (SPR #9940).02r,19mar98,dbt added support for user events and context start notification.		fixed some problems due to various merges.02q,18mar98,jmb fix ifdef in previous patch 02p,18mar98,jmb merge HPSIM poll for connect code 02o,11mar98,pdn added WDB_COMM_PIPE for VxSims02n,26jan98,gnn remerged from sirocco, was missing wdbSp function.02m,21jan98,dbt added more error checking (SPR #9422, SPR #5651).		vxTaskCreate() returns ERROR instead of NULL when taskCreat()		fails (SPR #9050).		Removed vxTaskLock() and vxTaskUnlock().		Added wdbEvtptLibInit() call.02l,12jan98,dbt modified for new breakpoint scheme.		Replaced wdbBpRemove() with wdbDbgBpRemoveAll(). 		Moved wdbBpSet() to usrBreakpoint.c.02k,03oct97,gnn fixed a warning in the endLoad call02j,25sep97,gnn SENS beta feedback fixes02i,19sep97,vin added WDB_NUM_CL_BLKS and the logic for clBlks.02c,06aug97,cdp gave type to 'initialised' in vxTaskDeleteHookAdd.02h,17apr97,gnn added support for configNet type support for END.02g,07apr97,gnn added new routines for MUX functionality.02f,17mar97,hdn added sysIntLock() and sysIntUnlock() for I80X86.02e,05mar97,ms  fixed IU_REGS_GET bug introduced by 01y checkin.02d,04feb97,ms  Added support for NetROM 500 series.02c,21jan97,gnn added code to load the device if we are booted standalone.02b,17dec96,ms  WDB now uses FP_CONTEXT instead of FPREG_SET (SPR 7654).02a,02oct96,elp changed casts due to TGT_ADDR_T type change.01z,04nov96,gnn added code to handle smaller END MTU.01y,28aug96,gnn	added WDB_COMM_END stuff.01w,09aug96,ms  added "wdbSp" for windsh system mode "sp" (SPR 6254).01x,23jul96,vin added BSD4.4 changes for mbufs. 01v,22jul96,jmb added kab (ease) sanity check to wdbBpSet; HPUX can have tasks 		with "unset" registers, and that gets propogated as addr 0x0.01u,12mar96,ms  redid host pool init. made exteral agent run in kernelState.01t,05mar96,tpr put the wdbHostPool always static for PPC (24bits limitation PB)		+ added VX_FP_TASK flag to WDB_TASK_OPTIONS macro.01s,24oct95,ms	moved wdbBpSet here.01r,16oct95,ms  host mem pool created via static buffer instead of malloc01q,11oct95,ms  turned off character echoing in TTY_TEST to fix SPR 511601p,21sep95,ms  macro shuffle + fix for SPR 4936.01o,31aug95,ms  INCLUDE_WDB_TTY_TEST works if started before kernel (SPR #4808)01n,23aug95,ms  bump intCnt to fake ISR context in extern agents extern hook01m,28jun95,tpr added NETROM_TASK_POLL_DELAY macro.01l,23jun95,ms	changed logMsg to _func_logMsg01k,21jun95,ms	added taskRestart for the agent on exception.01j,20jun95,tpr added wdbMemCoreLibInit().01i,20jun95,ms	moved gopher buffer back to gopherLib.o for DSA01h,19jun95,ms	moved event lib initialization near the begining of wdbConfig		fixed vxTaskDeleteHookAdd to return OK or ERROR		added initialization for INCLUDE_WDB_TTY_TEST01g,15jun95,ms	updated for new serial drivers.01f,07jun95,ms	exit hook no longer uses the spare TCB field		memory size based on sysMemTop() instead of LOCAL_MEM_SIZE		added some scalability		WDB_STACK_SIZE used for both task and system agent.		WDB_COMM_TYCO changed to WDB_COMM_TTY01e,01jun95,ms	added taskLock/unlock.		pass buffer to wdbGopherLibInit().		decreace WDB_MTU when going over serial line.		changed MTU->WDB_MTU, EXC_NOTIFY->WDB_EXC_NOTIFY,			MAX_SERVICES->WDB_MAX_SERVICES,			AGENT_POOL_SIZE->WDB_POOL_SIZE.01d,25may95,ms	added fpp support for the system agent.01c,23may95,ms	added some include files.01b,17jan95,ms  cleaned up.01a,21sep94,ms  written.*//*DESCRIPTIONThis library configures and initializes the WDB agent.The only user callable routine is wdbConfig(). This routineinitializes the agents OS function pointers, the communicationfunction pointers, and then the agent itself.*/#include "vxWorks.h"#include "sysLib.h"#include "stdlib.h"#include "vxLib.h"#include "taskLib.h"#include "taskHookLib.h"#include "fppLib.h"#include "intLib.h"#include "rebootLib.h"#include "bootLib.h"#include "version.h"#include "cacheLib.h"#include "excLib.h"#include "config.h"#include "string.h"#include "bufLib.h"#include "sioLib.h"#include "private/taskLibP.h"#include "private/kernelLibP.h"#include "private/vmLibP.h"#include "private/funcBindP.h"#include "wdb/wdb.h"#include "wdb/wdbLib.h"#include "wdb/wdbLibP.h"#include "wdb/wdbBpLib.h"#include "wdb/wdbSvcLib.h"#include "wdb/wdbUdpLib.h"#include "wdb/wdbUdpSockLib.h"#include "wdb/wdbTyCoDrv.h"#include "wdb/wdbRtIfLib.h"#include "wdb/wdbCommIfLib.h"#include "wdb/wdbMbufLib.h"#include "wdb/wdbRpcLib.h"#include "wdb/wdbRegs.h"#include "wdb/wdbVioLib.h"#include "drv/wdb/wdbVioDrv.h"#include "drv/wdb/wdbSlipPktDrv.h"#include "drv/wdb/wdbUlipPktDrv.h"#include "drv/wdb/wdbNetromPktDrv.h"#include "drv/wdb/wdbEndPktDrv.h"#include "drv/wdb/wdbPipePktDrv.h"#if (CPU==SIMHPPA) && defined(INCLUDE_SLIP) && \			(WDB_COMM_TYPE == WDB_COMM_NETWORK)#include "wdLib.h"#include "drv/sio/unixSio.h"IMPORT void intCatch ();extern int s_asyncio ();LOCAL void usrWdbPollForConnect ();LOCAL WDOG_ID wdSlipConnect;#endif	/* CPU==SIMHPPA && INCLUDE_SLIP */#if (WDB_COMM_TYPE == WDB_COMM_END)#include "end.h"#include "muxLib.h"#include "muxTkLib.h"#include "configNet.h"IMPORT END_TBL_ENTRY endDevTbl[];#endif /* WDB_COMM_TYPE == WDB_COMM_END *//* defines */#define	NUM_MBUFS		5#define WDB_NUM_CL_BLKS		5#define MILLION			1000000#define MAX_LEN			100#define	INCLUDE_VXWORKS_KERNEL		/* don't remove this */#define	WDB_RESTART_TIME	10#define	WDB_MAX_RESTARTS	5#define WDB_BP_MAX		50	/* max # of break points */#define WDB_MAX_SERVICES        50	/* max # of agent services */#define WDB_TASK_PRIORITY       3	/* priority of task agent */#define WDB_TASK_OPTIONS        VX_UNBREAKABLE | VX_FP_TASK  /* agent options */#define WDB_POOL_BASE		((char *)(FREE_RAM_ADRS))/* lower WDB_MTU to SLMTU bytes for serial connection */#if	(WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2) || \	(WDB_COMM_TYPE == WDB_COMM_SERIAL)#if	WDB_MTU > SLMTU#undef	WDB_MTU#define	WDB_MTU	SLMTU#endif	/* WDB_MTU > SLMTU */#endif/* lower WDB_MTU to NETROM_MTU for netrom connections */#if	(WDB_COMM_TYPE == WDB_COMM_NETROM)#if	WDB_NETROM_TYPE == 400#include "wdb/wdbNetromPktDrv.c"#elif	WDB_NETROM_TYPE == 500#include "wdb/amc500/wdbNetromPktDrv.c"#else#error	WDB_NETROM_TYPE unknown#endif#if	WDB_MTU > NETROM_MTU#undef	WDB_MTU#define	WDB_MTU	NETROM_MTU#endif	/* WDB_MTU > NETROM_MTU */#endif/* lower WDB_MTU to ULIP_MTU for ULIP connections */#if	(WDB_COMM_TYPE == WDB_COMM_ULIP)#if	WDB_MTU > ULIP_MTU#undef	WDB_MTU#define	WDB_MTU	ULIP_MTU#endif	/* WDB_MTU > ULIP_MTU */#endif#if	(WDB_COMM_TYPE == WDB_COMM_END)#if	WDB_MTU > WDB_END_PKT_MTU#undef	WDB_MTU#define	WDB_MTU	WDB_END_PKT_MTU#endif	/* WDB_MTU > WDB_END_PKT_MTU */#ifndef MUX_MAX_BINDS#define MUX_MAX_BINDS 16#endif /* MUX_MAX_BINDS */#endif /* (WDB_COMM_TYPE == WDB_COMM_END) */#if	(WDB_COMM_TYPE == WDB_COMM_PIPE)#if	WDB_MTU > WDB_PIPE_PKT_MTU#undef	WDB_MTU#define	WDB_MTU	WDB_PIPE_PKT_MTU#endif	/* WDB_MTU > WDB_PIPE_PKT_MTU */#endif/* change agent mode to task mode for NETWORK or TYCODRV_5_2 connections */#if	(WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2) || (WDB_COMM_TYPE == WDB_COMM_NETWORK)#undef	WDB_MODE#define	WDB_MODE	WDB_MODE_TASK#endif/* globals */uint_t		 wdbCommMtu	= WDB_MTU;int		 wdbNumMemRegions = 0;	/* number of extra memory regions */WDB_MEM_REGION * pWdbMemRegions = NULL;	/* array of regions */#if (CPU==SIMHPPA)extern void sysSerialWDBSetup ();#endif /* (CPU==SIMHPPA) *//* locals */LOCAL BUF_POOL		wdbMbufPool;LOCAL BUF_POOL		wdbClBlkPool;LOCAL char		vxBootFile [MAX_LEN];LOCAL WDB_RT_IF		wdbRtIf;LOCAL BOOL		prevKernelState;LOCAL VOIDFUNCPTR	wdbCreateHook = NULL;	/* WDB task create hook *//* * These are private - but configurable size arrays can't be malloc'ed * in external mode, so we define them here. */#if     (WDB_MODE & WDB_MODE_EXTERN)LOCAL uint_t	wdbExternStackArray [WDB_STACK_SIZE/sizeof(uint_t)];#endifLOCAL WDB_SVC		wdbSvcArray       [WDB_MAX_SERVICES];LOCAL uint_t		wdbSvcArraySize = WDB_MAX_SERVICES;#ifdef INCLUDE_WDB_BPLOCAL struct brkpt wdbBreakPoints [WDB_BP_MAX];#endif/* forward static declarations */LOCAL void	wdbMbufInit ();LOCAL void	wdbRtIfInit ();LOCAL STATUS	wdbCommIfInit ();LOCAL bool_t	wdbTgtHasFpp (void);/******************************************************************************** wdbConfig - configure and initialize the WDB agent.** This routine configures and initializes the WDB agent.** RETURNS :* OK if at least one of the agents (task or system) was correctly* initialized. ERROR otherwise.** NOMANUAL*/STATUS wdbConfig (void)    {    STATUS	status1 = ERROR;    STATUS	status2 = ERROR; #if     (WDB_MODE & WDB_MODE_EXTERN)    caddr_t	pExternStack;#endif	/* WDB_MODE & WDB_MODE_EXTERN */    /* Initialize the agents interface function pointers */    wdbRtIfInit ();			/* run-time interface functions */    if (wdbCommIfInit () == ERROR)	/* communication interface functions */	{	if (_func_printErr != NULL)	    _func_printErr ("wdbConfig: error configuring WDB communication interface\n");	return (ERROR);	}    /* Install some agent services */    wdbSvcLibInit (wdbSvcArray, wdbSvcArraySize);    wdbConnectLibInit ();	/* required agent service */    wdbMemCoreLibInit ();	/* required agent service */#ifdef	INCLUDE_WDB_MEM    wdbMemLibInit ();		/* extra memory services */#endif	/* INCLUDE_WDB_MEM */#ifdef	INCLUDE_WDB_EVENTS    wdbEventLibInit();#endif	/* INCLUDE_WDB_EVENTS */#ifdef	INCLUDE_WDB_EVENTPOINTS    wdbEvtptLibInit();#endif	/* INCLUDE_WDB_EVENTPOINTS */#ifdef  INCLUDE_WDB_DIRECT_CALL    wdbDirectCallLibInit ();#endif  /* INCLUDE_WDB_DIRECT_CALL */#ifdef	INCLUDE_WDB_CTXT    wdbCtxLibInit ();#endif	/* INCLUDE_WDB_CTXT */#ifdef	INCLUDE_WDB_REG    wdbRegsLibInit ();#endif	/* INCLUDE_WDB_REG */#ifdef	INCLUDE_WDB_GOPHER    wdbGopherLibInit();#endif	/* INCLUDE_WDB_GOPHER */#ifdef	INCLUDE_WDB_EXIT_NOTIFY    wdbCtxExitLibInit();#endif	/* INCLUDE_WDB_EXIT_NOTIFY */#ifdef	INCLUDE_WDB_EXC_NOTIFY    wdbExcLibInit();#endif	/* INCLUDE_WDB_EXC_NOTIFY */#ifdef	INCLUDE_WDB_FUNC_CALL    wdbFuncCallLibInit ();#endif	/* INCLUDE_WDB_FUNC_CALL */#ifdef	INCLUDE_WDB_VIO    wdbVioLibInit();    wdbVioDrv("/vio");#endif	/* INCLUDE_WDB_VIO */#ifdef  INCLUDE_WDB_TSFS    wdbTsfsDrv ("/tgtsvr");#endif  /* INCLUDE_WDB_TSFS */#ifdef  INCLUDE_WDB_BP    wdbSysBpLibInit (wdbBreakPoints, WDB_BP_MAX);#if	(WDB_MODE & WDB_MODE_TASK)    wdbTaskBpLibInit ();#endif	/* WDB_MODE & WDB_MODE_TASK */#endif	/* INCLUDE_WDB_BP */#ifdef	INCLUDE_WDB_START_NOTIFY    wdbCtxStartLibInit ();#endif	/* INCLUDE_WDB_START_NOTIFY */#ifdef	INCLUDE_WDB_USER_EVENT    wdbUserEvtLibInit ();#endif	/* INCLUDE_WDB_USER_EVENT */    /* Initialize the agent(s) */#if	(WDB_MODE & WDB_MODE_TASK)    status1 = wdbTaskInit (WDB_TASK_PRIORITY,			WDB_TASK_OPTIONS, NULL, WDB_STACK_SIZE);#endif#if	(WDB_MODE & WDB_MODE_EXTERN)#if	_STACK_DIR == _STACK_GROWS_DOWN    pExternStack = (caddr_t)&wdbExternStackArray				[WDB_STACK_SIZE/sizeof(uint_t)];    pExternStack = (caddr_t)STACK_ROUND_DOWN (pExternStack);#else	/* _STACK_DIR == _STACK_GROWS_UP */    pExternStack = (caddr_t)wdbExternStackArray;    pExternStack = (caddr_t)STACK_ROUND_UP (pExternStack);#endif	/* _STACK_DIR == _STACK_GROWS_DOWN */    status2 = wdbExternInit (pExternStack);#ifdef	INCLUDE_HW_FP    if (wdbTgtHasFpp())	{	WDB_REG_SET_OBJ * pFpRegs;	pFpRegs = wdbFpLibInit();	wdbExternRegSetObjAdd (pFpRegs);	}#endif	/* INCLUDE_HW_FP */#endif	/* WDB_MODE & WDB_MODE_EXTERN */    /* activate one agent only */#if	(WDB_MODE & WDB_MODE_TASK)    wdbModeSet (WDB_MODE_TASK);#else    wdbModeSet (WDB_MODE_EXTERN);#endif    return ((status1 && status2) ? ERROR : OK);    }/******************************************************************************** wdbExternEnterHook - hook to call when external agent is entered.*/void wdbExternEnterHook (void)    {    intCnt++;			/* always fake an interrupt context */    prevKernelState = kernelState;    kernelState = TRUE;		/* always run in kernel state */#if	(CPU_FAMILY==I80X86)    sysIntLock ();#endif	/* CPU_FAMILY==I80X86 */#ifdef	INCLUDE_WDB_BP    wdbDbgBpRemoveAll ();#endif    }/******************************************************************************** wdbExternExitHook - hook to call when the external agent resumes the system.*/void wdbExternExitHook (void)    {    intCnt--;			/* restore original intCnt value */    kernelState = prevKernelState; /* restore original kernelState value */#if	(CPU_FAMILY==I80X86)    intLock ();    sysIntUnlock ();#endif	/* CPU_FAMILY==I80X86 */#ifdef  INCLUDE_WDB_BP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -