📄 wdb.html
字号:
As described in the "REPLY ERRORS" section of the WDBman page.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./wdb.html#top">WDB</a></b><hr><a name="WDB_CONTEXT_SUSPEND"></a><p align=right><a href="rtnIndex.html"><i>WDB Protocol : Requests</i></a></p></blockquote><h1>WDB_CONTEXT_SUSPEND</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong>WDB_CONTEXT_SUSPEND</strong> - suspend a context on the target</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>INPUT: WDB_CTXOUTPUT: (</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This routine suspends the target context specified by <b>WDB_CTX</b>:<p><pre>typedef struct wdb_ctx /* a particular context */ { WDB_CTX_TYPE contextType; /* type of context */ UINT32 contextId; /* context ID */ } WDB_CTX;</pre><p>where <b>WDB_CTX_TYPE</b> is one of the following:<p><pre>typedef enum wdb_ctx_type /* type of context on the target */ { WDB_CTX_SYSTEM = 0, /* system mode */ WDB_CTX_GROUP = 1, /* process group (not implemented) */ WDB_CTX_ANY = 2, /* any context (not implemented) */ WDB_CTX_TASK = 3, /* specific task or processes */ WDB_CTX_ANY_TASK = 4, /* any task */ WDB_CTX_ISR = 5, /* specific ISR (not implemented) */ WDB_CTX_ANY_ISR = 6 /* any ISR (not implemented) */ } WDB_CTX_TYPE;</pre><p>If <b>contextType</b> is <b>WDB_CTX_SYSTEM</b>, the "system context" issuspended (in other words, VxWorks is suspended). Otherwisethe task whose ID is <b>contextId</b> is suspended.<p></blockquote><h4>ERRORS</h4><blockquote><p><p><dl><dt><b>WDB_ERR_AGENT_MODE</b><dd>Trying to suspend a task while in system mode<p><dt><b>WDB_ERR_INVALID_CONTEXT</b><dd>The context does not exist.<p><dt><b>WDB_ERR_NO_RT_PROC</b><dd>The agent does not support this service.<p><dt>WDB and RPC errors<dd> As described in the "REPLY ERRORS" section of the WDBman page.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./wdb.html#top">WDB</a></b><hr><a name="WDB_DIRECT_CALL"></a><p align=right><a href="rtnIndex.html"><i>WDB Protocol : Requests</i></a></p></blockquote><h1>WDB_DIRECT_CALL</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong>WDB_DIRECT_CALL</strong> - call a function on the target in the agent's context</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>INPUT: WDB_CTX_CREATE_DESCOUTPUT: UINT32</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This routine calls the specified function in the target agent's context andwaits for the function to return. The function is specifiedby the <b>entry</b> and <b>args[10]</b> members of <b>WDB_CTX_CREATE_DESC</b>. The othermembers are ignored and are set to NULL.<p><pre>typedef struct wdb_ctx_create_desc /* how to create a context */ { WDB_CTX_TYPE contextType; /* task or system context */ /* the following are used for task and system contexts */ TGT_ADDR_T stackBase; /* bottom of stack (NULL = malloc) */ UINT32 stackSize; /* stack size */ TGT_ADDR_T entry; /* context entry point */ TGT_INT_T args[10]; /* arguments */ /* the following are only used for task contexts */ WDB_STRING_T name; /* name */ TGT_INT_T priority; /* priority */ TGT_INT_T options; /* options */ TGT_INT_T redirIn; /* redirect input file (or 0) */ TGT_INT_T redirOut; /* redirect output file (or 0) */ TGT_INT_T redirErr; /* redirect error output file (or 0) */ } WDB_CTX_CREATE_DESC;</pre><p>The output contains the result of the function and is a UINT32.<p></blockquote><h4>ERRORS</h4><blockquote><p><p><dl><dt>WDB and RPC errors<dd> As described in the "REPLY ERRORS" section of theWDB man page.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./wdb.html#top">WDB</a></b><hr><a name="WDB_EVALUATE_GOPHER"></a><p align=right><a href="rtnIndex.html"><i>WDB Protocol : Requests</i></a></p></blockquote><h1>WDB_EVALUATE_GOPHER</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong>WDB_EVALUATE_GOPHER</strong> - execute a Gopher string</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>INPUT: WDB_STRING_TOUTPUT: WDB_MEM_XFER</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>Gopher is a small, interpreted language that allows the traversal ofsimple data structures in target memory.This request sends the specified Gopher program to the target forevaluation and returns the result of the evaluation in a Gopher tape. Thecontents of the target memory specified by the Gopher program are writtento the tape. For more informationon the Gopher language, see the documentation of <b><a href="../wtxpcl/wtx.html#WTX_GOPHER_EVAL" >WTX_GOPHER_EVAL</a></b> in the <i>API Reference Manual: WTX Protocol </i>or the discussion in the<i>API User's Guide: The WTX Protocol. </i>The string to be evaluated is passed in <b>WDB_STRING_T</b>.<p>The result of evaluating the Gopher string is returned in a <b>WDB_MEM_XFER</b>structure:<p><pre>typedef struct wdb_mem_xfer /* transfer a block of memory */ { WDB_OPQ_DATA_T source; /* data to transfer */ TGT_ADDR_T destination; /* requested destination */ TGT_INT_T numBytes; /* number of bytes transferred */ } WDB_MEM_XFER;</pre><p></blockquote><h4>ERRORS</h4><blockquote><p><p><dl><dt><b>WDB_ERR_GOPHER_SYNTAX</b><dd>The Gopher string is malformed.<p><dt><b>WDB_ERR_GOPHER_FAULT</b><dd>A memory fault occurred while executing the string.<p><dt><b>WDB_ERR_GOPHER_TRUNCATED</b><dd>The resulting reply was too large to upload.<p><dt>WDB and RPC errors<dd> As described in the "REPLY ERRORS" section of the WDBman page.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./wdb.html#top">WDB</a></b>, <b><a href="../wtxpcl/wtx.html#WTX_GOPHER_EVAL" >WTX_GOPHER_EVAL</a></b><hr><a name="WDB_EVENTPOINT_ADD"></a><p align=right><a href="rtnIndex.html"><i>WDB Protocol : Requests</i></a></p></blockquote><h1>WDB_EVENTPOINT_ADD</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong>WDB_EVENTPOINT_ADD</strong> - add an asynchronous eventpoint</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>INPUT: WDB_EVTPT_ADD_DESCOUTPUT: UINT32</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This routine adds an asynchronous eventpoint to the target.The type of event to add an eventpoint for is specified by <b>WDB_EVTPT_ADD_DESC</b>:<p><pre>typedef struct wdb_evtpt_add_desc /* how to add an eventpt */ { WDB_EVT_TYPE evtType; /* type of event to detect */ TGT_INT_T numArgs; /* eventType dependent arguments */ UINT32 * args; /* arg list */ WDB_CTX context; /* context in which event must occur */ WDB_ACTION action; /* action to perform */ } WDB_EVTPT_ADD_DESC;</pre><p>where <b>args</b> points to an argument list and <b>context</b> is:<p><pre>typedef struct wdb_ctx /* a particular context */ { WDB_CTX_TYPE contextType; /* type of context */ UINT32 contextId; /* context ID */ } WDB_CTX;</pre><p><b>WDB_ACTION</b> is:<p><pre>typedef struct wdb_action /* a specific action */ { WDB_ACTION_TYPE actionType; UINT32 actionArg; TGT_ADDR_T callRtn; TGT_INT_T callArg; } WDB_ACTION;</pre><p>and <b>WDB_ACTION_TYPE</b> is:<p><pre>typedef enum wdb_action_type /* what to do when an event occurs */ { WDB_ACTION_CALL = 1, /* condition the evtpt via a proc */ WDB_ACTION_NOTIFY = 2, /* notify the host */ WDB_ACTION_STOP = 4 /* stop the context */ } WDB_ACTION_TYPE;</pre><p>Currently, eventpoints can be added for the following event types:<dl><dt><b>WDB_EVT_BP</b><dd>breakpoint<p><dt><b>WDB_EVT_HW_BP</b><dd>hardware breakpoint<p><dt><b>WDB_EVT_CTX_EXIT</b><dd>context exit<p><dt><b>WDB_EVT_CTX_START</b><dd> context creation </dl><p>All possible event types are enumerated by <b>WDB_EVT_TYPE</b>:<p><pre>typedef enum wdb_evt_type /* type of event on the target */ { WDB_EVT_NONE = 0, /* no event */ WDB_EVT_CTX_START = 1, /* context creation */ WDB_EVT_CTX_EXIT = 2, /* context exit */ WDB_EVT_BP = 3, /* breakpoint */ WDB_EVT_HW_BP = 4, /* hardware breakpoint */ WDB_EVT_WP = 5, /* watchpoint */ WDB_EVT_EXC = 6, /* exception */ WDB_EVT_VIO_WRITE = 7, /* virtual I/O write */ WDB_EVT_CALL_RET = 8, /* function call finished */ WDB_EVT_TSFS_OP = 9, /* VIO II operation */ WDB_EVT_USER = 10 /* user event */ } WDB_EVT_TYPE;</pre><p><b>context</b> specifies the context for which theevent should be detected. Currently, <b>contextType</b> canbe <b>WDB_CTX_SYSTEM</b> (for a system mode breakpoint), <b>WDB_CTX_TASK</b>(for a task-specific eventpoint), or <b>WDB_CTX_ANY_TASK</b> fora tasking breakpoint that applies to any task.<p><b>numArgs</b> and <b>args</b> specifyarguments to pass to the eventpoint. For <b>WDB_EVT_CTX_EXIT</b> and <b>WDB_EVT_CTX_START</b> eventpoints, <b>numArgs</b> should be zero. For <b>WDB_EVT_BP</b>,<b>numArgs</b> should be one or two, <b>args[0]</b> should be the breakpoint addressand <b>args[1]</b> (optional) should be the breakpoint count. For <b>WDB_EVT_HW_BP</b>,<b>numArgs</b> should be three, <b>args[0]</b> should be the breakpoint address,<b>args[1]</b> should be the breakpoint count and <b>args[2]</b> should be the hardware breakpoint access type. For more informations on hardwarebreakpoint access type, refer to the <b><a href="../wtxpcl/wtx.html#WTX_EVENTPOINT_ADD_2" >WTX_EVENTPOINT_ADD_2</a></b> documentation.<p><b>action</b> is set to the appropriate action to perform when the breakpointis hit as defined by the structures <b>WDB_ACTION</b> and <b>WDB_ACTION_TYPE</b> in <b>wdb.h</b>.<p>The return value is an eventpoint ID, which is a handle to the eventpoint.<p></blockquote><h4>NOTES</h4><blockquote><p><dl><dt>1.<dd>Context-specific eventpoints are automatically deleted whenthe context exits. Otherwise eventpoints are persistent until<b><a href="./wdb.html#WDB_EVENTPOINT_DELETE">WDB_EVENTPOINT_DELETE</a></b> is called to delete them.<p><dt>2.<dd>Tasking breakpoints are disabled if the agent switches toexternal mode (by way of <b><a href="./wdb.html#WDB_MODE_SET">WDB_MODE_SET</a></b>), but are reenabled if the agentswitches back again to tasking mode. Similarly, external-mode breakpointsare disabled if the agent switches to tasking mode and reenabled ifthe agent switches back again.<p><dt>3.<dd>When the eventpoint is hit, notification occurs as described inthe "ASYNCHRONOUS NOTIFICATION SENT BY THE AGENT" section of the WDBman page. After being notified, the host uploads the event withthe <b><a href="./wdb.html#WDB_EVENT_GET">WDB_EVENT_GET</a></b> procedure.<p><dt>4.<dd> A hardware breakpoints can generate <b>WDB_EVT_BP</b> if it is an instruction hardware breakpoint or <b>WDB_EVT_WP</b> if it is a data access breakpoint.<p></dl></blockquote><h4>ERRORS</h4><blockquote><p><p><dl><dt><b>WDB_ERR_INVALID_EVENT</b><dd>There is no handler for the specified event type.<p><dt>WDB and RPC errors<dd> As described in the "REPLY ERRORS" section of the WDBman page.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./wdb.html#top">WDB</a></b><hr><a name="WDB_EVENTPOINT_DELETE"></a><p align=right><a href="rtnIndex.html"><i>WDB Protocol : Requests</i></a></p></blockquote><h1>WDB_EVENTPOINT_DELETE</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong>WDB_EVENTPOINT_DELETE</strong> - delete an eventpoint</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>INPUT: WDB_EVTPT_DEL_DESCOUTPUT: (</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This routine deletes the eventpoint specified by <b>WDB_EVTPT_DEL_DESC</b>:<p><pre>typedef struct wdb_evtpt_del_desc /* how to delete an eventpoint */ { WDB_EVT_TYPE evtType; /* type of event */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -