<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<meta http-equiv="cache-control" content="max-age=0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT">
<meta http-equiv="pragma" content="no-cache">

</head>
<body alink="#FF0000" bgcolor="#FFFFFF" link="#000066" text="#000000" vlink="#333399">

<table align="CENTER" bgcolor="#EEEEEE" border="6" cellpadding="5" width="95%">
<tbody><tr><th colspan="3"><font size="+2">crash extension modules</font></th>
</tr><tr>
<td colspan="3">
<blockquote>
<p></p><p>
The <tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/echo.c">echo.c</a></b></tt> extension module can
be used as a simple template for creating an extension module to implement a new command.
</p><p>
Crash extension modules are required to <tt>#include</tt> the 
<a href="http://people.redhat.com/anderson/crash_sources/defs.h"><tt>defs.h</tt></a>
file from the top-level directory of crash source tree.
There are three suggested manners for building a module:
</p><ol>
<li>
Hand-compile the module's <tt><b>.so</b></tt> shared object file
like this:
<p>
<tt>  $ gcc -shared -rdynamic -o <<i>module>.so</i> <<i>module>.c</i> -fPIC -D<<i>machine-type</i>> $(TARGET_CFLAGS)</tt>
</p><p>
where <<i>machine-type</i>> is <tt>X86, X86_64, IA64, PPC64, ARM, S390 or S390X</tt>,
and where <tt>$(TARGET_CFLAGS)</tt> is <tt>-D_FILE_OFFSET_BITS=64</tt> on 32-bit architectures,
and <tt>-m64</tt> on ppc64.  
</p><p>
If the extension module contains the obsolete <tt>_init()</tt> and 
<tt>_fini()</tt> functions, then the <tt>-nostartfiles</tt> compiler option is also required.  However it
is recommended that constructor and destructor functions be used as recommended
by the <tt>dlopen(3)</tt> man page.  
</p><p>
As a convenience, the crash utility's <i>crash-<version>.src.rpm</i> package builds a <i>crash-devel</i> sub-package,
which installs
<a href="http://people.redhat.com/anderson/crash_sources/defs.h"><tt>defs.h</tt></a>
into <i>/usr/include/crash/defs.h</i>.
</p></li>
<li>
Alternatively, copy the module's <tt><b>.c</b></tt> source file 
to the <i>crash-<version>/extensions</i> subdirectory.
Then, from the top-level <i>crash-<version></i> directory, enter:
<p>
<tt>  $ make extensions</tt><br>
</p><p>
If the default compile line does not suffice, create an accompanying <tt><b>.mk</b></tt> makefile with
the same prefix as the  <tt><b>.c</b></tt> file, 
copy it to the <i>crash-<version>/extensions</i> subdirectory, and enter the same
<tt>make extensions</tt> command as above. 
</p><p>
</p></li>
<li>
Lastly, some extension modules that do have both <i><module>.c</i> and <i><module>.mk</i> files
may be built without the crash source tree if the <a href="http://people.redhat.com/anderson/crash_sources/defs.h"><tt>defs.h</tt></a> file
is located in the current directory or in the <i>/usr/include/crash</i> directory:
<p>
<tt>  $ make -f <i><module>.mk</i></tt><br>
</p><p>
</p></li>
</ol>
To add the module's command(s) to a running crash session, enter:
<p>
<tt>  crash> <a href="http://people.redhat.com/anderson/extensions/help_extend.html">extend</a> <<i>path-to</i>>/<<i>module</i>>.so</tt>
</p><p>
The command(s) registered by the extension module will appear in the
crash <a href="http://people.redhat.com/anderson/extensions/help_help.html"><tt>help</tt></a> menu.  
The module can be installed automatically if the
<tt>extend</tt> command above is entered in either <i>./.crashrc</i> 
or <i>$HOME/.crashrc</i>.
</p><p>
If the <i>crash-<version>.src.rpm</i> file is used to build the crash package, 
a <i>crash-extensions-<version>.rpm</i> subpackage containing a subset of the 
extension modules below is built.  If the subpackage is installed, the extension
modules will be located in <i>/usr/lib/crash/extensions</i> or <i>/usr/lib64/crash/extensions</i>,
whichever is appropriate.
</p><p>
Lastly, there is a  <tt>crash -x</tt> command line option that will load extension modules automatically
from a particular directory.  The search for the extension module directory will be done in 
the following order, and the first one (if any) that exists will be selected as the 
target directory:
</p><ol>
<li>
the directory specified in the <tt>CRASH_EXTENSIONS</tt> shell environment variable
</li>
<li>
<i>/usr/lib64/crash/extensions</i> (64-bit architectures)
</li>
<li>
<i>/usr/lib/crash/extensions</i>
</li>
<li>
<i>./extensions</i>
</li>
</ol>
All extension modules that are found in the target directory will be loaded automatically.
<p></p>
<p>
</p></blockquote>
</td>
</tr>

<tr>
<td align="center"><tt><b><font size="+1">module</font></b></tt></td>
<td align="center"><tt><b><font size="+1">commands</font></b></tt></td>
<td align="left"><tt><b><font size="+1">  comments</font></b></tt></td>
</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/echo.c">echo.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/echo_help_echo.html">echo</a></b></tt>
</td>
<td>
<ul>
<li>
<p>Provided primarily as a template for writing new extension modules.
</p><p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
This module's source file is contained within the <i>crash-<version>.src.rpm</i>
and <i>crash-<version>.tar.gz</i> files, and the compiled module is included in the 
<i>crash-extensions-<version>.rpm</i> subpackage when
<i>crash-<version>.src.rpm</i> is used to build the crash package.
<p>
</p></li>
<li>
Author: Dave Anderson  <anderson@redhat.com>
</li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.c">snap.c</a></b></tt>
<br><tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.mk">snap.mk</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/snap_help_snap.html">snap</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
Takes a snapshot of physical memory and creates an ELF vmcore.
The default vmcore is a kdump-style dumpfile, but a netdump-style may be optionally 
created.  It supports the X86, X86_64, IA64 and PPC64 architectures only.
All caveats regarding the taking of
a "live" memory snapshot apply, such as the constantly-changing state of the kernel's 
slab subsystem or active process set while the dump is taking place.
</p><p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
The module also serves as an example of an extension module 
that can be built in all three manners:
<p>
</p><ol>
<li> 
Copy <tt><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.c">snap.c</a></tt>
to the <i>crash-<version>/extensions</i> subdirectory, 
and from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
</li>
<li>
Copy both <tt><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.c">snap.c</a></tt> and
<tt><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.mk">snap.mk</a></tt>
to the <i>crash-<version>/extensions</i> subdirectory, and
from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
</li>
<li>
Copy <tt><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.c">snap.c</a></tt>,
<tt><a href="http://people.redhat.com/anderson/crash_sources/extensions/snap.mk">snap.mk</a></tt>, and
<a href="http://people.redhat.com/anderson/crash_sources/defs.h"><tt>defs.h</tt></a>
into any directory.  
The <a href="http://people.redhat.com/anderson/crash_sources/defs.h"><tt>defs.h</tt></a> file may also
be located in the <i>/usr/include/crash</i> directory, as would be
the case if the <i>crash-devel</i> sub-package had been installed.
Then enter:
<br>
<tt>  $ make -f snap.mk</tt><br>
<p>
</p></li>

</ol>
</li><li>
This module's source file and makefile are contained within the <i>crash-<version>.src.rpm</i>
and <i>crash-<version>.tar.gz</i> files, and the compiled module is included in the 
<i>crash-extensions-<version>.rpm</i> subpackage when
<i>crash-<version>.src.rpm</i> is used to build the crash package.
<p>
</p></li>
<li>
Author: Dave Anderson  <anderson@redhat.com>
</li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://code.google.com/p/eppic/source/browse/applications/crash/eppic.c">eppic.c</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/eppic.mk">eppic.mk</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_load.html">load</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_unload.html">unload</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_edit.html">edit</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_sclass.html">sclass</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_sdebug.html">sdebug</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/eppic_help_sname.html">sname</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
<a name="EPPIC">This</a> module is a prerequisite for the loading of EPPIC
(Embeddable Pre-Processor and Interpreter for C) scripts.
</p><p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
Upon installing the <tt>eppic.so</tt> object file with <tt><a href="http://people.redhat.com/anderson/extensions/help_extend.html">extend</a></tt>,
any EPPIC scripts located in the <i>/usr/share/eppic/crash</i> or <i>$HOME/.eppic</i> directories
will be loaded automatically.
<p>
</p></li>
<li>
This module's source files are downloaded automatically from
their git tree located at <a href="http://code.google.com/p/eppic">http://code.google.com/p/eppic</a>,
and the compiled extension module is included in the 
<i>crash-extensions-<version>.rpm</i> subpackage when
<i>crash-<version>.src.rpm</i> is used to build the crash package.
<p>
</p></li>
<li>
Author: Luc Chouinard  <lchouinard@s2sys.com>
</li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/dminfo.c">dminfo.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/dminfo_help_dminfo.html">dminfo</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
Device Mapper information.
</p><p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
This module's source file is contained within the <i>crash-<version>.src.rpm</i>
and <i>crash-<version>.tar.gz</i> files, and the compiled module is included in the 
<i>crash-extensions-<version>.rpm</i> subpackage when
<i>crash-<version>.src.rpm</i> is used to build the crash package.
<p>
</p></li>
<li>
Author: NEC Japan
</li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/crash_sources/extensions/trace.c">trace.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/trace_help_trace.html">trace</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
Displays kernel tracing data and traced events that occurred
prior to a panic.
</p><p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
This module's source file is contained within the <i>crash-<version>.src.rpm</i>
and <i>crash-<version>.tar.gz</i> files, and the compiled module is included in the 
<i>crash-extensions-<version>.rpm</i> subpackage when
<i>crash-<version>.src.rpm</i> is used to build the crash package.
<p>
</p></li>
<li>
Author: Lai Jiangshan  <laijs@cn.fujitsu.com>
<p>
</p></li>
<li>
Maintainer: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com>
<a name="GCORE">
</a></li><a name="GCORE">
</a></ul><a name="GCORE">
</a></td>

</tr>


<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/gcore.c">gcore.c</a></b></tt><br>
<br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/crash-gcore-command-1.2.2.tar.gz">crash-gcore-command-1.2.2.tar.gz</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/gcore_help_gcore.html">gcore</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
Create a core dump file of a user-space task that was running in a kernel dumpfile.
The module supports the X86, X86_64 and ARM architectures.
</p><p>
</p></li>
<li>
If <i>/usr/include/crash/defs.h</i> exists, the module may be built like so:
<br>
<tt>  $ tar xzf <a href="http://people.redhat.com/anderson/extensions/crash-gcore-command-1.2.2.tar.gz">crash-gcore-command-1.2.2.tar.gz</a></tt><br>
<tt>  $ cd crash-gcore-command-1.2.2</tt><br>
<tt>  $ make -f gcore.mk</tt><br>
<br>
</li>
<li>
Alternatively, <tt><a href="http://people.redhat.com/anderson/crash_sources/defs.h">defs.h</a></tt> may be copied to the current directory:
<br>
<tt>  $ tar xzf <a href="http://people.redhat.com/anderson/extensions/crash-gcore-command-1.2.2.tar.gz">crash-gcore-command-1.2.2.tar.gz</a></tt><br>
<tt>  $ cd crash-gcore-command-1.2.2</tt><br>
<tt>  $ cp <<i>path-to</i>>/<a href="http://people.redhat.com/anderson/crash_sources/defs.h">defs.h</a> .</tt><br>
<tt>  $ make -f gcore.mk</tt><br>
<br>
</li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ tar xzf <a href="http://people.redhat.com/anderson/extensions/crash-gcore-command-1.2.2.tar.gz">crash-gcore-command-1.2.2.tar.gz</a></tt><br>
<tt>  $ mv crash-gcore-command-1.2.2/* extensions</tt><br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
This module's source files are self-contained in <tt><a href="http://people.redhat.com/anderson/extensions/crash-gcore-command-1.2.2.tar.gz">crash-gcore-command-1.2.2.tar.gz</a></tt>.
<p>
</p></li>
<li>
<a href="http://people.redhat.com/anderson/extensions/gcore.changelog.html">Changelog</a>
<p>
</p></li>
<li>
Author: Daisuke Hatayama  <d.hatayama@jp.fujitsu.com>
</li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/spu.c">spu.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/spu_help_spuctx.html">spuctx</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/spu_help_spus.html">spus</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/spu_help_spurq.html">spurq</a></b></tt>
</td>
<td>
<ul>
<li>
<p>
Commands for viewing Cell/B.E. SPU's data
</p><p>
</p></li>
<li>
Requires kernel version >= 2.6.23-rc1
<p>
</p></li>
<li>
To build it, copy <tt><a href="http://people.redhat.com/anderson/extensions/spu.c">spu.c</a></tt>
to the <i>crash-<version>/extensions</i> subdirectory, 
and from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ make extensions</tt><br>
<p>
</p></li>
<li>
Prior to installing it, it is necessary to load the debuginfo symbols of the <tt>spufs</tt> kernel module:
<br><tt>  crash> mod -s spufs</tt>
<p>
</p></li>
<li>
This module is part of IBM Software Development Kit (SDK) for
Multicore Acceleration since Version 3.0.
<p>
</p></li>
<li>
Author: Lucio Correia  <luciojhc@br.ibm.com>
</li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b>pykdump</b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b>epython</b></tt><br>
<tt><b>crashinfo</b></tt><br>
<tt><b>xportshow</b></tt>
</td>
<td>
<ul>
<li><p>Execute Python scripts in crash environment</p><p></p></li>
<li>Gather basic data<p></p></li>
<li>View networking information<p></p></li>
<li>See <a href="http://sourceforge.net/projects/pykdump">Project page</a> for more details<p></p></li>
<li>Author: Alex Sidorenko  <asid@hp.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/qemu-vtop.c">qemu-vtop.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/qemu-vtop_help.html">qemu-vtop</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Translate a KVM guest physical address into the virtual and physical addresses of its KVM host.</p><p></p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/qemu-vtop.c">qemu-vtop.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<li>
<p>Prior to executing the command, it is necessary to load the debuginfo symbols of the <tt>kvm</tt> kernel module:
<br><tt>  crash> mod -s kvm</tt>
</p><p>
</p></li>
<li>Author: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/ipcs.c">ipcs.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/ipcs_help.html">ipcs</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Provide information about the System V IPCS facilities.</p><p></p></li>
<li>
An updated version of this command was built into crash version 6.0.7.
<p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/ipcs.c">ipcs.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/pstruct.c">pstruct.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/pstruct_help.html">pstruct</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Print structure member data in a single line.</p><p></p></li>
<li>
Requires crash utility version >= 6.0.7.
<p>
</p></li>
<li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/pstruct.c">pstruct.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/lscgroup.c">lscgroup.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/lscgroup_help.html">lscgroup</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Display active cgroups</p><p></p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/lscgroup.c">lscgroup.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Yongming Yu  <yuym.fnst@cn.fujitsu.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/cgget.c">cgget.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/cgget_help.html">cgget</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Display cgroup parameters</p><p></p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/cgget.c">cgget.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Zhang Xiaohe  <zhangxh@cn.fujitsu.com></li>
<a name="PSWAP">
</a></ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/swap_usage.c">swap_usage.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/swap_usage_help.html">pswap</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Display the swap consumption of a user process</p><p></p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/swap_usage.c">swap_usage.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Aaron Tomlin  <atomlin@redhat.com></li>
</ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/memutils.c">memutils.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/memutils_help.html">memutils</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Displays memory information</p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/memutils.c">memutils.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Vinayak Menon  <vinayakm.list@gmail.com></li>
<a name="KSM">
</a></ul></td>

</tr>

<tr>
<td align="CENTER"><tt><b><a href="http://people.redhat.com/anderson/extensions/ksm.c">ksm.c</a></b></tt></td>
<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/ksm_help.html">ksm</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Display kernel samepage merging (KSM) information</p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/ksm.c">ksm.c</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
</li>
<br>
<li>Author: Zhang Yanfei  <zhangyanfei@cn.fujitsu.com></li>
<a name="FP">
</a></ul></td>

</tr>

<tr>
<td align="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/fp.c">fp.c</a></b></tt><br>
<tt><b><a href="http://people.redhat.com/anderson/extensions/fp.mk">fp.mk</a></b></tt></td>


<td align="CENTER" valign="CENTER">
<tt><b><a href="http://people.redhat.com/anderson/extensions/fp_help.html">fp</a></b></tt><br>
</td>
<td>
<ul>
<li><p>Obtain function parameters from stack frames</p></li>
<p>

</p><li>
To build the module from the top-level <i>crash-<version></i> directory, enter:
<br>
<tt>  $ wget https://raw.github.com/hziSot/crash-stack-parser/master/crash-parse-stack-7.0.1-ext.patch</tt><br>
<tt>  $ patch -p1 < crash-parse-stack-7.0.1-ext.patch</tt><br>
<tt>  $ make extensions</tt><br>
</li>
or:
<br>
<tt>  $ cp <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/fp.c">fp.c</a> <i><path-to></i>/<a href="http://people.redhat.com/anderson/extensions/fp.mk">fp.mk</a> extensions</tt><br>
<tt>  $ make extensions</tt><br>
<br>
<li>Author: Alexandr Terekhov  <Alexandr_Terekhov@epam.com></li>
</ul></td>

</tr>


<tr> <th colspan="3"><font size="+1"><a name="EPPIC_scripts"> </a></font></th> </tr>

<tr> <th colspan="3"><font size="+2">crash EPPIC scripts</font></th> </tr>
<tr>
<td colspan="3"><p></p><p>EPPIC scripts require no compilation, but they do require that the <a href="#EPPIC"><tt>eppic.so</tt></a> extension module 
be pre-loaded with <tt><a href="http://people.redhat.com/anderson/extensions/help_extend.html">extend</a></tt>, because <a href="#EPPIC"><tt>eppic.so</tt></a> provides 
the <tt><a href="http://people.redhat.com/anderson/extensions/eppic_help_load.html">load</a></tt> command required to load EPPIC scripts.
To add the module to a running crash session, enter:
</p><p>
<tt>  crash> <a href="http://people.redhat.com/anderson/extensions/help_extend.html">extend</a> <<i>path-to</i>>/eppic.so</tt>
</p><p>
The module can be installed automatically if the
<tt>extend</tt> command above is entered in either <i>./.crashrc</i>
or <i>$HOME/.crashrc</i>.
</p><p>
EPPIC scripts may be located anywhere.  However, upon loading the
<a href="#EPPIC"><tt>eppic.so</tt></a> module, EPPIC scripts located in the <i>/usr/share/eppic/crash</i> or 
<i>$HOME/.eppic</i> directories will be loaded automatically.
The command(s) contained in loaded EPPIC script(s) will appear in the
crash <a href="http://people.redhat.com/anderson/extensions/help_help.html"><tt>help</tt></a> menu.  
</p><p>
The EPPIC <a href="http://code.google.com/p/eppic/wiki/README">README</a> and 
<a href="http://code.google.com/p/eppic/source/browse/applications/crash/README.code">README.code</a> files contain 
information regarding the format of eppic scripts.
</p><p>
The EPPIC sources contain a sample <tt>ipcs2</tt> command, similar in nature to the built-in <tt>ipcs</tt>
command.  The <tt>ipcs2</tt> script files will be located in the <i>extensions/eppic/applications/crash/code</i> directory,
and the directory's contents should be copied to either
<i>/usr/share/eppic/crash</i> or <i>$HOME/.eppic</i>.  For example:
</p><p>
<tt>  $ make extensions<br>
  ...<br>
  $ cp -r extensions/eppic/applications/crash/code/* /usr/share/eppic/crash</tt><br>
</p><p>
Having done the above, upon loading the <a href="#EPPIC"><tt>eppic.so</tt></a> module, the
<tt>ipcs2</tt> EPPIC command will be automatically loaded.
</p><p>
The EPPIC package website is here:
</p><p>
        <a href="http://code.google.com/p/eppic">http://code.google.com/p/eppic</a>
</p><p>
Author: Luc Chouinard  <lchouinard@s2sys.com>
</lchouinard@s2sys.com></p><p>
</p></td>
</tr>

<tr> <th colspan="3"><font size="+1"><a name="CRASHDC"> </a></font></th> </tr>
<tr> <th colspan="3"><font size="+2">crashdc: Crash Dump Data Collector</font></th> </tr>
<tr>
<td colspan="3"><p></p><p>
The crashdc data collector is a script that can be used in conjunction with the crash utility to automatically 
generate a text file containing major information about a newly generated crash dump.  The package website
is here:</p><p>
        <a href="http://crashdc.sourceforge.net/">http://crashdc.sourceforge.net</a>
</p><p>
Author: Louis Bouchard <louis.bouchard@canonical.com>
</p><p>
</p></td>
</tr>

<tr> <th colspan="3"><font size="+1"><a name="PYTHON"> </a></font></th> </tr>
<tr> <th colspan="3"><font size="+2">crash Python scripts</font></th> </tr>
<tr>
<td colspan="3"><p></p><p>Pykdump scripts require no Python installed, but they do require the 
<a href="http://sourceforge.net/projects/pykdump">mpykdump.so</a> extension module 
pre-loaded with <tt><a href="http://people.redhat.com/anderson/extensions/help_extend.html">extend</a></tt>.
 mpykdump.so provides 
built-in Python intepreter and needed pure Python libraries as well as 
Python bindings to crash.  Loading the extension registers 'epython' 
command which can be used to execute Python programs. 
</p><p>To minimize the extension size, only parts of Python standard 
library are included in the extension file. If you need anything extra 
(e.g. XML/RPC) please contact the author.</p>
<p>The mpykdump.so extension file is a shared library with ZIP-archive 
appended at the end of it. You can use standard ZIP command to view the 
contents of it and add your own Python programs. In addition to generic <i>epython</i> command, two useful programs are included in the extension (see Wiki documentation on SF site for more details).
</p><p>
The package website is here:</p><p>
        <a href="http://pykdump.sourceforge.net/">http://pykdump.sourceforge.net</a>
</p><p>
Author: Alex Sidorenko  <asid@hp.com>
</p><p>
</p></td>
</tr>


<tr>
<td align="CENTER"><tt><b>crashinfo</b></tt></td>
<td colspan="2" align="LEFT" valign="CENTER">
<ul>
<li><p>Print a brief summary of the dump running some tests</p><p></p></li>
<li>Using additional options, do other things (Swiss Army Knife approach
 - instead of many separate programs, use one with many options)<p></p></li>
<li>Author: Alex Sidorenko  <asid@hp.com></li>
</ul>
</td>

</tr>

<tr>
<td align="CENTER"><tt><b>xportshow</b></tt></td>
<td colspan="2" align="LEFT" valign="CENTER">
<ul>
<li><p>Print networking connections, routing tables etc. - similar to <i>netstat</i></p><p></p></li>
<li>Author: Alex Sidorenko  <asid@hp.com></li>
</ul>
</td>

</tr>

<tr> <th colspan="3"><font size="+1"><a name="EXTSCRIPT"> </a></font></th> </tr>
<tr> <th colspan="3"><font size="+2">crash-extscript</font></th> </tr>
<tr>
<td colspan="3">
<h><cite><strong>Extension module for crash utility, to talk to external scripts</strong></cite></h>
<p>At times we need to execute a series of crash commands to arrive at a result. i.e. we execute a command, get the output, pick an element from it, use it with the next command and so on. There are cases when this may take several steps. This utility is to automate these steps.Another use can be to execute a series of predefined crash commands, parse it to get relevant info and to generate a bug report.
</p><p>A brief on the components in this package.</p>
<ol>
<li>A crash utility extension called <i><b>extscript</b></i>. This provides a crash command of the same name.</li>
<li>A script. <i><b>perlfc.pl</b></i> is an example script, which can talk to extscript extension. This script can be used as an example to write similar utilities that can talk to extscript extension.</li>
<li>A protocol definition, for communication between 'extscript' and the external script.</li>
</ol>
<p>The external script is run as a server by crash utility, when you invoke the extscript command. The external script serves the crash utility by additonal commands. The script is not executed as is. We invoke the script from crash command line. In other words, we talk to the script from within the crash utility command line.
</p>
<p>A usage example.</p>
<ol>
<li>Copy <i>extscript.c</i> to extensions folder</li>
<li>Run <kbd>"make extensions"</kbd></li>
<li>Copy <i>perlfc.pl</i> to crash directory</li>
</ol>
<p>Now at the crash prompt:</p>
<kbd><b>crash></b> extend extensions/extscript.so</kbd>
<br><kbd><b>crash></b> extscript -f perl -a perl -a ./perlfc.pl</kbd></br>
<kbd><b>crash></b> extscript -b vmallocinfo</kbd>
<p>The first command loads the extscript module and adds the command <i>extscript</i> to crash utility. The second command sets up the environement. This is similar to how we pass arguments to execlp. The last argument is the script path. This command has to be modified depending on the kind of script that we are running. The third command is the bypass command which actually executes the command we have encoded in the script. In this case <i>vmallocinfo</i> is a command that is defined in perlfc.pl. The extscript bypasses this command to the script. The output in this case will be <i>vmallocinfo</i> similar to <i>/proc/vmallocinfo</i>, displayed on crash console. Thus in simple words, we are <i><strong>extending crash with additional commands encoded in a script</strong></i>.
</p>
<p>The <i>help</i> command shows all the commands supported by the script and its usage.</p>
<kbd><b>crash></b> extscript -b help</kbd>
<p>The <i>perlfc.pl</i> script is an example of how to write quick automation scripts to use the extscript extension of crash utility.</p>
<p>More details can be found in the <a href="https://github.com/vinayakmenon/crash-extscript/blob/master/README.md">README</a> of the package</p>
<p>
The package website is here:</p><p>
        <a href="https://github.com/vinayakmenon/crash-extscript">https://github.com/vinayakmenon/crash-extscript</a>
</p><p>
Author: Vinayak Menon  <vinayakm.list@gmail.com>
</p><p>
</p></td>

</tr>

</tbody></table></body></html>