diff options
author | Pedro Alves <palves@redhat.com> | 2009-11-11 15:08:50 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2009-11-11 15:08:50 +0000 |
commit | a5832c8fbd24da54ac7f53ed7a3aeed4569922fb (patch) | |
tree | d56b3cf99b33d7204d5e45930e8bc69add5b90c4 /gdb/doc/agentexpr.texi | |
parent | c1e268973158feac8245fd0db4bbe09d9dc543f1 (diff) | |
download | gdb-a5832c8fbd24da54ac7f53ed7a3aeed4569922fb.zip gdb-a5832c8fbd24da54ac7f53ed7a3aeed4569922fb.tar.gz gdb-a5832c8fbd24da54ac7f53ed7a3aeed4569922fb.tar.bz2 |
* agentexpr.texi (Tracing On Symmetrix): Delete section.
(Using Agent Expressions): Delete cross reference.
Diffstat (limited to 'gdb/doc/agentexpr.texi')
-rw-r--r-- | gdb/doc/agentexpr.texi | 142 |
1 files changed, 1 insertions, 141 deletions
diff --git a/gdb/doc/agentexpr.texi b/gdb/doc/agentexpr.texi index 3066319..e3d171d 100644 --- a/gdb/doc/agentexpr.texi +++ b/gdb/doc/agentexpr.texi @@ -58,8 +58,6 @@ debugging agent in real-time applications. * Bytecode Descriptions:: What each one does. * Using Agent Expressions:: How agent expressions fit into the big picture. * Varying Target Capabilities:: How to discover what the target can do. -* Tracing on Symmetrix:: Special info for implementation on EMC's - boxes. * Rationale:: Why we did it this way. @end menu @@ -503,9 +501,7 @@ GDB transmits the tracepoints and their associated expressions to the GDB agent, running on the debugging target. @item -The agent arranges to be notified when a trace point is hit. Note that, -on some systems, the target operating system is completely responsible -for collecting the data; see @ref{Tracing on Symmetrix}. +The agent arranges to be notified when a trace point is hit. @item When execution on the target reaches a trace point, the agent evaluates @@ -559,142 +555,6 @@ whether the target supports disabled tracepoints @end itemize - - -@node Tracing on Symmetrix -@section Tracing on Symmetrix - -This section documents the API used by the GDB agent to collect data on -Symmetrix systems. - -Cygnus originally implemented these tracing features to help EMC -Corporation debug their Symmetrix high-availability disk drives. The -Symmetrix application code already includes substantial tracing -facilities; the GDB agent for the Symmetrix system uses those facilities -for its own data collection, via the API described here. - -@deftypefn Function DTC_RESPONSE adbg_find_memory_in_frame (FRAME_DEF *@var{frame}, char *@var{address}, char **@var{buffer}, unsigned int *@var{size}) -Search the trace frame @var{frame} for memory saved from @var{address}. -If the memory is available, provide the address of the buffer holding -it; otherwise, provide the address of the next saved area. - -@itemize @bullet - -@item -If the memory at @var{address} was saved in @var{frame}, set -@code{*@var{buffer}} to point to the buffer in which that memory was -saved, set @code{*@var{size}} to the number of bytes from @var{address} -that are saved at @code{*@var{buffer}}, and return -@code{OK_TARGET_RESPONSE}. (Clearly, in this case, the function will -always set @code{*@var{size}} to a value greater than zero.) - -@item -If @var{frame} does not record any memory at @var{address}, set -@code{*@var{size}} to the distance from @var{address} to the start of -the saved region with the lowest address higher than @var{address}. If -there is no memory saved from any higher address, set @code{*@var{size}} -to zero. Return @code{NOT_FOUND_TARGET_RESPONSE}. -@end itemize - -These two possibilities allow the caller to either retrieve the data, or -walk the address space to the next saved area. -@end deftypefn - -This function allows the GDB agent to map the regions of memory saved in -a particular frame, and retrieve their contents efficiently. - -This function also provides a clean interface between the GDB agent and -the Symmetrix tracing structures, making it easier to adapt the GDB -agent to future versions of the Symmetrix system, and vice versa. This -function searches all data saved in @var{frame}, whether the data is -there at the request of a bytecode expression, or because it falls in -one of the format's memory ranges, or because it was saved from the top -of the stack. EMC can arbitrarily change and enhance the tracing -mechanism, but as long as this function works properly, all collected -memory is visible to GDB. - -The function itself is straightforward to implement. A single pass over -the trace frame's stack area, memory ranges, and expression blocks can -yield the address of the buffer (if the requested address was saved), -and also note the address of the next higher range of memory, to be -returned when the search fails. - -As an example, suppose the trace frame @code{f} has saved sixteen bytes -from address @code{0x8000} in a buffer at @code{0x1000}, and thirty-two -bytes from address @code{0xc000} in a buffer at @code{0x1010}. Here are -some sample calls, and the effect each would have: - -@table @code - -@item adbg_find_memory_in_frame (f, (char*) 0x8000, &buffer, &size) -This would set @code{buffer} to @code{0x1000}, set @code{size} to -sixteen, and return @code{OK_TARGET_RESPONSE}, since @code{f} saves -sixteen bytes from @code{0x8000} at @code{0x1000}. - -@item adbg_find_memory_in_frame (f, (char *) 0x8004, &buffer, &size) -This would set @code{buffer} to @code{0x1004}, set @code{size} to -twelve, and return @code{OK_TARGET_RESPONSE}, since @file{f} saves the -twelve bytes from @code{0x8004} starting four bytes into the buffer at -@code{0x1000}. This shows that request addresses may fall in the middle -of saved areas; the function should return the address and size of the -remainder of the buffer. - -@item adbg_find_memory_in_frame (f, (char *) 0x8100, &buffer, &size) -This would set @code{size} to @code{0x3f00} and return -@code{NOT_FOUND_TARGET_RESPONSE}, since there is no memory saved in -@code{f} from the address @code{0x8100}, and the next memory available -is at @code{0x8100 + 0x3f00}, or @code{0xc000}. This shows that request -addresses may fall outside of all saved memory ranges; the function -should indicate the next saved area, if any. - -@item adbg_find_memory_in_frame (f, (char *) 0x7000, &buffer, &size) -This would set @code{size} to @code{0x1000} and return -@code{NOT_FOUND_TARGET_RESPONSE}, since the next saved memory is at -@code{0x7000 + 0x1000}, or @code{0x8000}. - -@item adbg_find_memory_in_frame (f, (char *) 0xf000, &buffer, &size) -This would set @code{size} to zero, and return -@code{NOT_FOUND_TARGET_RESPONSE}. This shows how the function tells the -caller that no further memory ranges have been saved. - -@end table - -As another example, here is a function which will print out the -addresses of all memory saved in the trace frame @code{frame} on the -Symmetrix INLINES console: -@example -void -print_frame_addresses (FRAME_DEF *frame) -@{ - char *addr; - char *buffer; - unsigned long size; - - addr = 0; - for (;;) - @{ - /* Either find out how much memory we have here, or discover - where the next saved region is. */ - if (adbg_find_memory_in_frame (frame, addr, &buffer, &size) - == OK_TARGET_RESPONSE) - printp ("saved %x to %x\n", addr, addr + size); - if (size == 0) - break; - addr += size; - @} -@} -@end example - -Note that there is not necessarily any connection between the order in -which the data is saved in the trace frame, and the order in which -@code{adbg_find_memory_in_frame} will return those memory ranges. The -code above will always print the saved memory regions in order of -increasing address, while the underlying frame structure might store the -data in a random order. - -[[This section should cover the rest of the Symmetrix functions the stub -relies upon, too.]] - @node Rationale @section Rationale |