<?Pub UDT _bookmark _target?><chapter id="chp-sysinfo"><?Pub Tag atict:info tracking="off" ref="0"?><?Pub Tag
atict:user user="palecur" fullname="Paul Echeverri"?><title><literal>sysinfo</literal> Provider</title><highlights><para>The <literal>sysinfo</literal> provider makes available probes that
correspond to kernel statistics classified by the name <literal>sys</literal>.
Because these statistics provide the input for system monitoring utilities
like <olink targetdoc="refman1m" targetptr="mpstat-1m" remap="external"><citerefentry><refentrytitle>mpstat</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>,
the <literal>sysinfo</literal> provider enables quick exploration of observed
aberrant behavior.</para>
</highlights><sect1 id="chp-sysinfo-1"><title>Probes</title><para>The <literal>sysinfo</literal> provider makes available probes that
correspond to the fields in the <literal>sys</literal> named kernel statistic:
a probe provided by <literal>sysinfo</literal> fires immediately before the
corresponding <literal>sys</literal> value is incremented. The following example
shows how to display both the names and the current values of the <literal>sys</literal> named
kernel statistic using the <olink targetdoc="refman1m" targetptr="kstat-1m" remap="external"><citerefentry><refentrytitle>kstat</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> command.</para><screen><userinput>$ kstat -n sys</userinput>
module: cpu                             instance: 0
name:   sys                             class:    misc
	bawrite                         123
	bread                           2899
	bwrite                          17995
...</screen><para>The <literal>sysinfo</literal> probes are described in <olink targetptr="tbl-sysinfo" remap="internal">Table&nbsp;23&ndash;1</olink>.</para><table frame="topbot" id="tbl-sysinfo"><title><literal>sysinfo</literal> Probes</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="1.15in"/><colspec colname="colspec1" colwidth="4.00in"/><tbody><row><entry colname="colspec0"><para><literal>bawrite</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a buffer is about to be asynchronously written
out to a device.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>bread</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a buffer is physically read from a device. <literal>bread</literal> fires <emphasis>after</emphasis> the buffer has been requested
from the device, but <emphasis>before</emphasis> blocking pending its completion.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>bwrite</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a buffer is about to be written out to a device,
whether synchronously <emphasis>or</emphasis> asynchronously.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>idlethread</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a CPU enters the idle loop.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>intrblk</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an interrupt thread blocks.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>inv_swtch</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a running thread is forced to involuntarily
give up the CPU.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>lread</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a buffer is logically read from a device.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>lwrite</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a buffer is logically written to a device</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>modload</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a kernel module is loaded.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>modunload</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a kernel module is unloaded.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>msg</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="msgsnd-2" remap="external"><citerefentry><refentrytitle>msgsnd</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> or <olink targetdoc="refman2" targetptr="msgrcv-2" remap="external"><citerefentry><refentrytitle>msgrcv</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system call is made, but before
the message queue operations have been performed.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>mutex_adenters</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an attempt is made to acquire an owned adaptive
lock. If this probe fires, one of the <literal>lockstat</literal> provider's <literal>adaptive-block</literal> or <literal>adaptive-spin</literal> probes will also
fire. See <olink targetptr="chp-lockstat" remap="internal">Chapter&nbsp;18, lockstat Provider</olink> for
details.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>namei</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a name lookup is attempted in the filesystem.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>nthreads</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a thread is created.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>phread</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a raw I/O read is about to be performed.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>phwrite</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a raw I/O write is about to be performed.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>procovf</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a new process cannot be created because the
system is out of process table entries.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>pswitch</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a CPU switches from executing one thread to
executing another.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>readch</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires after each successful read, but before control is returned
to the thread performing the read. A read may occur through the <olink targetdoc="refman2" targetptr="read-2" remap="external"><citerefentry><refentrytitle>read</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, <olink targetdoc="refman2" targetptr="readv-2" remap="external"><citerefentry><refentrytitle>readv</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> or <olink targetdoc="refman2" targetptr="pread-2" remap="external"><citerefentry><refentrytitle>pread</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system calls. <literal>arg0</literal> contains
the number of bytes that were successfully read.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>rw_rdfails</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an attempt is made to read-lock a readers/writer
when the lock is either held by a writer, or desired by a writer. If this
probe fires, the <literal>lockstat</literal> provider's <literal>rw-block</literal> probe
will also fire. See <olink targetptr="chp-lockstat" remap="internal">Chapter&nbsp;18, lockstat
Provider</olink> for details.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>rw_wrfails</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an attempt is made to write-lock a readers/writer
lock when the lock is held either by some number of readers or by another
writer. If this probe fires, the <literal>lockstat</literal> provider's <literal>rw-block</literal> probe will also fire. See <olink targetptr="chp-lockstat" remap="internal">Chapter&nbsp;18,
lockstat Provider</olink> for details.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>sema</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="semop-2" remap="external"><citerefentry><refentrytitle>semop</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system
call is made, but before any semaphore operations have been performed.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>sysexec</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an <olink targetdoc="refman2" targetptr="exec-2" remap="external"><citerefentry><refentrytitle>exec</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system
call is made.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>sysfork</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="fork-2" remap="external"><citerefentry><refentrytitle>fork</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system
call is made.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>sysread</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="read-2" remap="external"><citerefentry><refentrytitle>read</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, <olink targetdoc="refman2" targetptr="readv-2" remap="external"><citerefentry><refentrytitle>readv</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, or <olink targetdoc="refman2" targetptr="pread-2" remap="external"><citerefentry><refentrytitle>pread</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system call is made.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>sysvfork</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="vfork-2" remap="external"><citerefentry><refentrytitle>vfork</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system
call is made.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>syswrite</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a <olink targetdoc="refman2" targetptr="write-2" remap="external"><citerefentry><refentrytitle>write</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, <olink targetdoc="refman2" targetptr="writev-2" remap="external"><citerefentry><refentrytitle>writev</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, or <olink targetdoc="refman2" targetptr="pwrite-2" remap="external"><citerefentry><refentrytitle>pwrite</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system call is made.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>trap</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a processor trap occurs. Note that some processors,
in particular UltraSPARC variants, handle some light-weight traps through
a mechanism that does not cause this probe to fire.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>ufsdirblk</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a directory block is read from the UFS file
system. See <olink targetdoc="refman7" targetptr="ufs-7fs" remap="external"><citerefentry><refentrytitle>ufs</refentrytitle><manvolnum>7FS</manvolnum></citerefentry></olink> for
details on UFS.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>ufsiget</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever an inode is retrieved. See <olink targetdoc="refman7" targetptr="ufs-7fs" remap="external"><citerefentry><refentrytitle>ufs</refentrytitle><manvolnum>7FS</manvolnum></citerefentry></olink> for details on UFS.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>ufsinopage</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires after an in-core inode <emphasis>without</emphasis> any
associated data pages has been made available for reuse. See <olink targetdoc="refman7" targetptr="ufs-7fs" remap="external"><citerefentry><refentrytitle>ufs</refentrytitle><manvolnum>7FS</manvolnum></citerefentry></olink> for details on UFS.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>ufsipage</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires after an in-core inode <emphasis>with</emphasis> associated
data pages has been made available for reuse. This probe fires after the associated
data pages have been flushed to disk. See <olink targetdoc="refman7" targetptr="ufs-7fs" remap="external"><citerefentry><refentrytitle>ufs</refentrytitle><manvolnum>7FS</manvolnum></citerefentry></olink> for details on UFS.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>writech</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires after each successful write, but before control is
returned to the thread performing the write. A write may occur through the <olink targetdoc="refman2" targetptr="write-2" remap="external"><citerefentry><refentrytitle>write</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>, <olink targetdoc="refman2" targetptr="writev-2" remap="external"><citerefentry><refentrytitle>writev</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> or <olink targetdoc="refman2" targetptr="pwrite-2" remap="external"><citerefentry><refentrytitle>pwrite</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system calls. <literal>arg0</literal> contains
the number of bytes that were successfully written.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>xcalls</literal></para>
</entry><entry colname="colspec1"><para>Probe that fires whenever a cross-call is about to be made. A cross-call
is the operating system's mechanism for one CPU to request immediate work
of another CPU.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="chp-sysinfo-args"><title>Arguments</title><para>The arguments to <literal>sysinfo</literal> probes are as follows:</para><informaltable frame="topbot"><tgroup cols="2" colsep="0" rowsep="0"><?PubTbl tgroup dispwid="6.02in"?><colspec colname="colspec0" colwidth="1.00in"/><colspec colname="colspec1" colwidth="4.00in"/><tbody><row><entry><para><literal>arg0</literal></para>
</entry><entry><para>The value by which the statistic is to be incremented. For most probes,
this argument is always 1, but for some probes this argument may take other
values.</para>
</entry>
</row><row><entry><para><literal>arg1</literal></para>
</entry><entry><para>A pointer to the current value of the statistic to be incremented. This
value is a 64&ndash;bit quantity that will be incremented by the value in <literal>arg0</literal>. Dereferencing this pointer enables consumers to determine
the current count of the statistic corresponding to the probe.</para>
</entry>
</row><row><entry colname="colspec0"><para><literal>arg2</literal></para>
</entry><entry colname="colspec1"><para>A pointer to the <literal>cpu_t</literal> structure that corresponds
to the CPU on which the statistic is to be incremented. This structure is
defined in <literal>&lt;sys/cpuvar.h&gt;</literal>, but it is part of the kernel
implementation and should be considered Private.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><para>The value of <literal>arg0</literal> is 1 for most <literal>sysinfo</literal> probes.
However, the <literal>readch</literal> and <literal>writech</literal> probes
set <literal>arg0</literal> to the number of bytes read or written, respectively.
This features permits you to determine the size of reads by executable name,
as shown in the following example:</para><screen><userinput># dtrace -n readch'{@[execname] = quantize(arg0)}'</userinput>
dtrace: description 'readch' matched 4 probes
<userinput>^C</userinput>
  xclock                                            
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
              64 |                                         0        

  acroread                                          
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3        
              64 |                                         0        

  FvwmAuto                                          
           value  ------------- Distribution ------------- count    
               2 |                                         0        
               4 |@@@@@@@@@@@@@                            13       
               8 |@@@@@@@@@@@@@@@@@@@@@                    21       
              16 |@@@@@                                    5        
              32 |                                         0        

  xterm                                             
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@                 19       
              64 |@@@@@@@@@                                7        
             128 |@@@@@@                                   5        
             256 |                                         0        

  fvwm2                                             
           value  ------------- Distribution ------------- count    
              -1 |                                         0        
               0 |@@@@@@@@@                                186      
               1 |                                         0        
               2 |                                         0        
               4 |@@                                       51       
               8 |                                         17       
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@               503      
              64 |                                         9        
             128 |                                         0        

  Xsun                                              
           value  ------------- Distribution ------------- count    
              -1 |                                         0        
               0 |@@@@@@@@@@@                              269      
               1 |                                         0        
               2 |                                         0        
               4 |                                         2        
               8 |@                                        31       
              16 |@@@@@                                    128      
              32 |@@@@@@@                                  171      
              64 |@                                        33       
             128 |@@@                                      85       
             256 |@                                        24       
             512 |                                         8        
            1024 |                                         21       
            2048 |@                                        26       
            4096 |                                         21       
            8192 |@@@@                                     94       
           16384 |                                         0</screen><para>The <literal>sysinfo</literal> provider sets <literal>arg2</literal> to
be a pointer to a <literal>cpu_t</literal>, a structure internal to the kernel
implementation. The <literal>sysinfo</literal> probes fire on the CPU on which
the statistic is being incremented. Use the <literal>cpu_id</literal> member
of the <literal>cpu_t</literal> structure to determine the CPU of interest.</para>
</sect1><sect1 id="chp-sysinfo-6"><title>Example</title><para>Examine the following output from <olink targetdoc="refman1m" targetptr="mpstat-1m" remap="external"><citerefentry><refentrytitle>mpstat</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>:</para><screen>CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
 12   90  22 5760   422  299  435   26   71  116   11  1372    5  19  17  60
 13   46  18 4585   193  162  431   25   69  117   12  1039    3  17  14  66
 14   33  13 3186   405  381  397   21   58  105   10   770    2  17  11  70
 15   34  19 4769   109   78  417   23   57  115   13   962    3  14  14  69
 16   74  16 4421   437  406  448   29   77  111    8  1020    4  23  14  59
 17   51  15 4493   139  110  378   23   62  109    9   928    4  18  14  65
 18   41  14 4204   494  468  360   23   56  102    9   849    4  17  12  68
 19   37  14 4229   115   87  363   22   50  106   10   845    3  15  14  67
 20   78  17 5170   200  169  456   26   69  108    9  1119    5  21  25  49
 21   53  16 4817    78   51  394   22   56  106    9   978    4  17  22  57
 22   32  13 3474   486  463  347   22   48  106    9   769    3  17  17  63
 23   43  15 4572    59   34  361   21   46  102   10   947    4  15  22  59</screen><para>From the above output, you might conclude that the <literal>xcal</literal> field
seems too high, especially given the relative idleness of the system. <literal>mpstat</literal> determines the value in the <literal>xcal</literal> field by examining
the <literal>xcalls</literal> field of the <literal>sys</literal> kernel statistic.
This aberration can therefore be explored easily by enabling the <literal>xcalls</literal> <literal>sysinfo</literal> probe, as shown in the following example:</para><screen><userinput># dtrace -n xcalls'{@[execname] = count()}'</userinput>
dtrace: description 'xcalls' matched 4 probes
<userinput>^C</userinput>
  dtterm                                                            1
  nsrd                                                              1
  in.mpathd                                                         2
  top                                                               3
  lockd                                                             4
  java_vm                                                          10
  ksh                                                              19
  iCald.pl6+RPATH                                                  28
  nwadmin                                                          30
  fsflush                                                          34
  nsrindexd                                                        45
  in.rlogind                                                       56
  in.routed                                                       100
  dtrace                                                          153
  rpc.rstatd                                                      246
  imapd                                                           377
  sched                                                           431
  nfsd                                                           1227
  find                                                           3767</screen><para>The output shows where to look for the source of the cross-calls. Some
number of <olink targetdoc="refman1" targetptr="find-1" remap="external"><citerefentry><refentrytitle>find</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> processes
are causing the majority of the cross-calls. The following D script can be
used to understand the problem in further detail:</para><programlisting>syscall:::entry
/execname == "find"/
{
	self-&gt;syscall = probefunc;
	self-&gt;insys = 1;
}

sysinfo:::xcalls
/execname == "find"/
{
	@[self-&gt;insys ? self-&gt;syscall : "&lt;none&gt;"] = count();
}

syscall:::return
/self-&gt;insys/
{
	self-&gt;insys = 0;
	self-&gt;syscall = NULL;
}</programlisting><para>This script uses the <literal>syscall</literal> provider to attribute
cross-calls from <literal>find</literal> to a particular system call. Some
cross-calls, such as those resulting from page faults, might not emanate from
system calls. The script prints &ldquo;<literal>&lt;none&gt;</literal>&rdquo;
in these cases. Running the script results in output similar to the following
example:</para><screen><userinput># dtrace -s ./find.d</userinput>
 dtrace: script './find.d' matched 444 probes
<userinput>^C</userinput>
  &lt;none&gt;                                                            2
  lstat64                                                        2433
  getdents64                                                    14873</screen><para>This output indicates that the majority of cross-calls induced by <literal>find</literal> are in turn induced by <olink targetdoc="refman2" targetptr="getdents-2" remap="external"><citerefentry><refentrytitle>getdents</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink> system calls. Further exploration
would depend on the direction you want to explore. If you want to understand
why <literal>find</literal> processes are making calls to <literal>getdents</literal>,
you could write a D script to aggregate on <function>ustack</function> when <literal>find</literal> induces a cross-call. If you want to understand why calls to <literal>getdents</literal> are inducing cross-calls, you could write a D script to
aggregate on <function>stack</function> when <literal>find</literal> induces
a cross-call. Whatever your next step, the presence of the <literal>xcalls</literal> probe
has enabled you to quickly discover the root cause of the unusual monitoring
output.</para>
</sect1><sect1 id="chp-sysinfo-stability"><title>Stability</title><para>The <literal>sysinfo</literal> provider uses DTrace's stability mechanism
to describe its stabilities, as shown in the following table. For more information
about the stability mechanism, see <olink targetptr="chp-stab" remap="internal">Chapter&nbsp;39,
Stability</olink>.</para><informaltable frame="topbot"><tgroup cols="4" colsep="0" rowsep="0"><colspec colwidth="25*"/><colspec colwidth="25*"/><colspec colwidth="25*"/><colspec colwidth="25*"/><thead><row rowsep="1"><entry colsep="1"><para>Element</para>
</entry><entry><para>Name stability</para>
</entry><entry><para>Data stability</para>
</entry><entry><para>Dependency class</para>
</entry>
</row>
</thead><tbody><row><entry colsep="1"><para>Provider</para>
</entry><entry><para>Evolving</para>
</entry><entry><para>Evolving</para>
</entry><entry><para><acronym>ISA</acronym></para>
</entry>
</row><row><entry colsep="1"><para>Module</para>
</entry><entry><para>Private</para>
</entry><entry><para>Private</para>
</entry><entry><para>Unknown</para>
</entry>
</row><row><entry colsep="1"><para>Function</para>
</entry><entry><para>Private</para>
</entry><entry><para>Private</para>
</entry><entry><para>Unknown</para>
</entry>
</row><row><entry colsep="1"><para>Name</para>
</entry><entry><para>Evolving</para>
</entry><entry><para>Evolving</para>
</entry><entry><para><acronym>ISA</acronym></para>
</entry>
</row><row><entry colsep="1"><para>Arguments</para>
</entry><entry><para>Private</para>
</entry><entry><para>Private</para>
</entry><entry><para><acronym>ISA</acronym></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
</chapter><?Pub *0000027803 0?>