public inbox for cygwin-patches@cygwin.com
 help / color / mirror / Atom feed
* [PATCH v2 0/2] proc(5) man page
@ 2020-11-25  6:49 Brian Inglis
  2020-11-25  6:49 ` [PATCH v2 1/2] specialnames.xml: add proc(5) Cygwin " Brian Inglis
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Brian Inglis @ 2020-11-25  6:49 UTC (permalink / raw)
  To: cygwin-patches

Brian Inglis (2):
  specialnames.xml: add proc(5) Cygwin man page
  winsup/doc/Makefile.in: create man5 dir and install generated proc.5

 winsup/doc/Makefile.in      |    4 +
 winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
 2 files changed, 2098 insertions(+)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/2] specialnames.xml: add proc(5) Cygwin man page
  2020-11-25  6:49 [PATCH v2 0/2] proc(5) man page Brian Inglis
@ 2020-11-25  6:49 ` Brian Inglis
  2020-11-25  6:49 ` [PATCH v2 2/2] winsup/doc/Makefile.in: create man5 dir and install proc.5 Brian Inglis
  2020-11-30 10:47 ` [PATCH v2 0/2] proc(5) man page Corinna Vinschen
  2 siblings, 0 replies; 8+ messages in thread
From: Brian Inglis @ 2020-11-25  6:49 UTC (permalink / raw)
  To: cygwin-patches

[-- Attachment #1: Type: text/plain, Size: 113 bytes --]

---
 winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
 1 file changed, 2094 insertions(+)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-specialnames.xml-add-proc-5-Cygwin-man-page.patch --]
[-- Type: text/x-patch; name="0001-specialnames.xml-add-proc-5-Cygwin-man-page.patch", Size: 68991 bytes --]

diff --git a/winsup/doc/specialnames.xml b/winsup/doc/specialnames.xml
index a1f7401e16b9..a1f9d3f5e806 100644
--- a/winsup/doc/specialnames.xml
+++ b/winsup/doc/specialnames.xml
@@ -486,6 +486,2100 @@ one in Linux, but it provides significant capabilities. The
 <systemitem>procps</systemitem> package contains several utilities
 that use it.
 </para>
+  <refentry id="proc">
+    <!-- based on Linux manpages project proc(5)
+    (c) Copyright 2020 Cygwin project
+    (c) Copyright 2002&bsol;-2008,2017 Michael Kerrisk &lt;mtk.manpages@gmail.com&gt;
+    (c) Copyright 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com) -->
+
+    <!-- %%%LICENSE_START(GPLv2+_DOC_FULL)
+    This is free documentation; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of
+    the License, or (at your option) any later version. -->
+
+    <!-- The GNU General Public License's references to "object code"
+    and "executables" are to be interpreted as the output of any
+    document formatting or typesetting system, including
+    intermediate and printed output. -->
+
+    <!-- This manual is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details. -->
+
+    <!-- You should have received a copy of the GNU General Public
+    License along with this manual; if not, see
+    &lt;<ulink url='http://www.gnu.org/licenses/&gt;'>http://www.gnu.org/licenses/&gt;</ulink>.
+    %%%LICENSE_END -->
+
+    <refentryinfo>
+      <date>2020-11-24</date>
+      <author>Cygwin Project</author>
+    </refentryinfo>
+    <refmeta>
+      <refentrytitle>proc</refentrytitle>
+      <manvolnum>5</manvolnum>
+      <refmiscinfo class='date'>2020-11-24</refmiscinfo>
+      <refmiscinfo class='source'>Cygwin</refmiscinfo>
+      <refmiscinfo class='manual'>Cygwin User's Manual</refmiscinfo>
+    </refmeta>
+
+    <refnamediv>
+      <refname>proc</refname>
+      <refpurpose>process and system information pseudo-filesystem</refpurpose>
+    </refnamediv>
+
+    <refsect1 id='proc-desc'>
+      <title>Description</title>
+      <para>The <filename>proc</filename> filesystem is a pseudo-filesystem
+	which provides an interface to Cygwin data structures.
+	It is commonly mounted at <filename>/proc</filename>.
+	Typically, it is mounted automatically by the system.
+      </para>
+
+      <refsect2 id='proc-overview'>
+	<title>Overview</title>
+	<para>Underneath <filename>/proc</filename>, there are the following
+	  general groups of files and subdirectories:
+	</para>
+
+	<variablelist remap='TP'>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename> subdirectories</term>
+	    <listitem>
+	      <para>Each one of these subdirectories contains files and
+		subdirectories exposing information about the process with the
+		corresponding process id.
+	      </para>
+
+	      <para>The <filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename> subdirectories are
+		visible when iterating through <filename>/proc</filename> with
+		<citerefentry>
+		  <refentrytitle>readdir</refentrytitle><manvolnum>2</manvolnum>
+		</citerefentry>
+		(and thus are visible when one uses
+		<citerefentry>
+		  <refentrytitle>ls</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>
+		to view the contents of <filename>/proc</filename>).
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/self</filename></term>
+	    <listitem>
+	      <para>When a process accesses this magic symbolic link, it resolves
+		to the process's own <filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename> directory.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[a-z]*</emphasis></filename></term>
+	    <listitem>
+	      <para>Various other files and subdirectories under
+		<filename>/proc</filename> expose system-wide information.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+
+	<para>All of the above are described in more detail below.
+	</para>
+
+      </refsect2>
+
+      <refsect2 id='proc-files-and-directories'>
+	<title>Files and directories</title>
+	  <para>
+	    The following list provides details of many of the files
+	    and directories under the <filename>/proc</filename> hierarchy.
+	  </para>
+
+	<variablelist remap='TP'>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename></term>
+	    <listitem>
+	      <para>
+	        There is a numerical subdirectory for each running
+	        process; the subdirectory is named by the process id.
+		Each <filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename> subdirectory
+		contains the pseudo-files and directories described below.
+	      </para>
+
+	      <para>The files inside each <filename>/proc/<emphasis remap='I'>[pid]</emphasis></filename>
+	        directory are normally owned by the effective user and
+	        effective group id of the process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/cmdline</filename></term>
+	    <listitem>
+	      <para>This read-only file holds the complete command line for the
+	        process, unless the process is a zombie.
+	        In the latter case, there is nothing in this file: that is, a
+	        read on this file will return 0 characters.
+	        The command-line arguments appear in this file as a set of
+	        strings followed by null bytes (&apos;&bsol;0&apos;).
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/ctty</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file holds the name of the console or control
+	        terminal device for the process, unless the process is detached
+	        from any terminal.
+	        In the latter case, there is only a newline in this file.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/cwd</filename></term>
+	    <listitem>
+	      <para>
+	        This is a symbolic link to the current working directory of the
+	        process.
+	        To find out the current working directory of process 20, for
+	        instance, you can do this:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>cd /proc/20/cwd; /bin/pwd</userinput>
+		</screen>
+	      </para>
+
+	      <para>Note that the <emphasis remap='I'>pwd</emphasis> command
+	        is often a shell built-in, and might not work properly. In
+		<citerefentry>
+		  <refentrytitle>bash</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>,
+		you may use <userinput>pwd&nbsp;-P</userinput>.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/environ</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the current environment that may
+	        have been changed by the currently executing program.
+	        The entries are separated by null bytes (&apos;&bsol;0&apos;),
+	        and there may be a null byte at the end.
+		Thus, to print out the environment of process 1, you would do:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>cat -A /proc/1/environ</userinput>
+		</screen>
+	      </para>
+
+	      <para>If, after an
+		<citerefentry>
+		  <refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum>
+		</citerefentry>,
+		the process modifies its environment (e.g., by calling
+		functions such as
+		<citerefentry>
+		  <refentrytitle>putenv</refentrytitle><manvolnum>3</manvolnum>
+		</citerefentry>
+		or modifying the
+		<citerefentry>
+		  <refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum>
+		</citerefentry>
+		variable directly), this file will reflect those changes.
+		That may not be the case on other systems such as Linux.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/exe</filename></term>
+	    <listitem>
+	      <para>
+	        This file is a symbolic link containing the actual pathname of
+	        the executed command.
+	        This symbolic link can be dereferenced normally; attempting to
+	        open it will open the executable.
+	        You can even type <filename>/proc/<emphasis remap='I'>[pid]</emphasis>/exe</filename>
+	        to run another copy of the same executable that is being run by
+	        process <emphasis remap='I'>[pid]</emphasis>.
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/exe</filename> is a pointer to
+		the binary which was executed, and appears as a symbolic link.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/exename</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the actual pathname of the executed
+	        command.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/fd/</filename></term>
+	    <listitem>
+              <para>
+                This is a subdirectory containing one entry for each
+                file which the process has open, named by its file
+                descriptor, and which is a symbolic link to the actual
+                file.
+                Thus, 0 is standard input, 1 standard output, 2 standard
+                error, and so on.
+              </para>
+
+	      <para>
+		For file descriptors for pipes and sockets, the entries will
+		be symbolic links whose content is the file type with the
+		inode. A
+		<citerefentry>
+		  <refentrytitle>readlink</refentrytitle><manvolnum>2</manvolnum>
+		</citerefentry>
+		call on this file returns a string in the format:
+		<literal>type:<emphasis remap='I'>[inode]</emphasis></literal>
+	      </para>
+
+	      <para>For example, <literal>socket:[2248868]</literal>
+		will be a socket and its inode is 2248868.
+	      </para>
+
+	      <para>
+	        Programs that take a filename as a command-line argument, but
+	        don't take input from standard input if no argument is supplied,
+	        and programs that write to a file named as a command-line
+	        argument, but don't send their output to standard output if no
+	        argument is supplied, can nevertheless be made to use standard
+		input or standard output by using
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/fd</filename> files as command-line
+		arguments.
+		For example, assuming that <option>-i</option> is the flag
+		designating an input file and <option>-o</option> is the flag
+		designating an output file:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...</userinput>
+		</screen>
+
+		and you have a working filter.
+	      </para>
+
+	      <para><filename>/proc/self/fd/N</filename> is approximately
+		the same as <filename>/dev/fd/N</filename> in some Unix
+		and Unix-like systems.
+		Most Linux <command>makedev</command> scripts symbolically
+		link <filename>/dev/fd</filename> to
+		<filename>/proc/self/fd</filename>, in fact.
+	      </para>
+
+	      <para>Most systems provide symbolic links
+	        <filename>/dev/stdin</filename>,
+		<filename>/dev/stdout</filename>, and
+		<filename>/dev/stderr</filename>, which respectively link
+		to the files <literal>0</literal>, <literal>1</literal>,
+		and <literal>2</literal> in <filename>/proc/self/fd</filename>.
+		Thus the example command above could be written as:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>foobar -i /dev/stdin -o /dev/stdout ...</userinput>
+		</screen>
+	      </para>
+
+	      <para>
+	        Note that for file descriptors referring to inodes (pipes and
+	        sockets, see above), those inodes still have permission bits and
+	        ownership information distinct from those of the
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/fd</filename> entry, and that the
+		owner may differ from the user and group ids of the process.
+	        An unprivileged process may lack permissions to open them, as in
+	        this example:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>echo test | sudo -u nobody cat</userinput>
+		  <computeroutput>test</computeroutput>
+		  <prompt>$</prompt> <userinput>echo test | sudo -u nobody cat /proc/self/fd/0</userinput>
+		  <computeroutput>cat: /proc/self/fd/0: Permission denied</computeroutput>
+		</screen>
+	      </para>
+
+	      <para>
+	        File descriptor 0 refers to the pipe created by the shell and
+		owned by that shell's user, which is not
+		<literal>nobody</literal>, so <command>cat</command>
+		does not have permission to create a new file descriptor to
+		read from that inode, even though it can still read from its
+		existing file descriptor 0.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/gid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the primary group id for the
+	        process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/maps</filename></term>
+	    <listitem>
+	      <para>
+	        A file containing the currently mapped memory regions and their
+	        access permissions. See
+		<citerefentry>
+		  <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum>
+		</citerefentry>
+		for some further information about memory mappings.
+	      </para>
+
+	      <para>The format of the file is:
+
+<screen>
+<emphasis remap='I'>address          perms offset   dev       inode               pathname</emphasis>
+<computeroutput>
+00010000-00020000 rw-s 00000000 0000:0000 0                   [win heap 1 default shared]
+...
+00080000-00082000 rw-p 00000000 0000:0000 0                   [win heap 0 default grow]
+00082000-0009A000 ===p 00002000 0000:0000 0                   [win heap 0 default grow]
+000A0000-000A1000 rw-p 00000000 0000:0000 0                   [win heap 2 grow]
+000A1000-000BA000 ===p 00001000 0000:0000 0                   [win heap 2 grow]
+000C0000-000D9000 rw-p 00000000 0000:0000 0                   [win heap 0 default grow]
+000D9000-001C0000 ===p 00019000 0000:0000 0                   [win heap 0 default grow]
+00200000-00377000 ===p 00000000 0000:0000 0
+00377000-00378000 rw-p 00177000 0000:0000 0                   [peb]
+00378000-0037A000 rw-p 00178000 0000:0000 0                   [teb (tid 8844)]
+...
+00400000-005F9000 ===p 00000000 0000:0000 0                   [stack (tid 8884)]
+005F9000-005FC000 rw-g 001F9000 0000:0000 0                   [stack (tid 8884)]
+005FC000-00600000 rw-p 001FC000 0000:0000 0                   [stack (tid 8884)]
+00600000-006C7000 r--s 00000000 EE45:4341 281474976741117     /proc/cygdrive/c/Windows/System32/locale.nls
+...
+100400000-100401000 r--p 00000000 EE45:4341 281474978095037   /usr/bin/sh.exe
+100401000-100413000 r-xp 00001000 EE45:4341 281474978095037   /usr/bin/sh.exe
+100413000-100414000 rw-p 00013000 EE45:4341 281474978095037   /usr/bin/sh.exe
+...
+180010000-180020000 rw-s 00000000 0000:0000 0                 [procinfo]
+180020000-180029000 rw-s 00000000 0000:0000 0                 [cygwin-user-shared]
+180030000-18003C000 rw-s 00000000 0000:0000 0                 [cygwin-shared]
+180040000-180041000 r--p 00000000 EE45:4341 2251799814294868   /usr/bin/cygwin1.dll
+180041000-18022D000 r-xp 00001000 EE45:4341 2251799814294868   /usr/bin/cygwin1.dll
+18022D000-180231000 rwxp 001ED000 EE45:4341 2251799814294868   /usr/bin/cygwin1.dll
+180231000-18026A000 rw-p 001F1000 EE45:4341 2251799814294868   /usr/bin/cygwin1.dll
+...
+800000000-800090000 rw-p 00000000 0000:0000 0                 [heap]
+800090000-820000000 ===p 00090000 0000:0000 0                 [heap]
+7FF4FDEB0000-7FF4FDEB5000 r--s 00000000 0000:0000 0
+7FF4FDEB5000-7FF4FDFB0000 ===s 00005000 0000:0000 0
+7FF4FDFB0000-7FF5FDFD0000 ===p 00000000 0000:0000 0
+...
+7FFBEEAC0000-7FFBEEAC1000 r--p 00000000 EE45:4341 844424934724994   /proc/cygdrive/c/Windows/System32/kernel32.dll
+7FFBEEAC1000-7FFBEEB36000 r-xp 00001000 EE45:4341 844424934724994   /proc/cygdrive/c/Windows/System32/kernel32.dll
+7FFBEEB36000-7FFBEEB68000 r--p 00076000 EE45:4341 844424934724994   /proc/cygdrive/c/Windows/System32/kernel32.dll
+7FFBEEB68000-7FFBEEB6A000 rw-p 000A8000 EE45:4341 844424934724994   /proc/cygdrive/c/Windows/System32/kernel32.dll
+7FFBEEB6A000-7FFBEEB72000 r--p 000AA000 EE45:4341 844424934724994   /proc/cygdrive/c/Windows/System32/kernel32.dll
+...
+</computeroutput>
+</screen>
+	      </para>
+
+	      <para>The <literal>address</literal> field is the address
+		space in the process that the mapping occupies.
+		The <literal>perms</literal> field is a set of permissions:
+
+		<variablelist termlength="4">
+		  <varlistentry>
+		    <term>r</term><listitem><para>read</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>w</term><listitem><para>write</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>x</term><listitem><para>execute</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>===</term><listitem><para>reserved</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>s</term><listitem><para>shared</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>g</term><listitem><para>guard</para></listitem>
+
+		  </varlistentry>
+		  <varlistentry>
+		    <term>p</term><listitem><para>private</para></listitem>
+		  </varlistentry>
+		</variablelist>
+	      </para>
+
+	      <para>The <literal>offset</literal> field is the offset
+		into the file/whatever;
+		<literal>dev</literal> is the device (major:minor);
+		<literal>inode</literal> is the inode on that device.
+		0 indicates that no inode is associated with the memory
+		region, as would be the case with BSS (uninitialized data).
+	      </para>
+
+	      <para>The <literal>pathname</literal> field will usually
+		be the file that is backing the mapping.
+	      </para>
+
+	      <para>There are additional helpful pseudo-paths:
+		<variablelist remap='TP'>
+		  <varlistentry>
+		    <term>[<literal>cygwin-shared</literal>]</term>
+		    <listitem>
+		      <para>Global shared Cygwin process information.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>cygwin-user-shared</literal>]</term>
+		    <listitem>
+		      <para>Global shared Cygwin user information.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>peb</literal>]</term>
+		    <listitem>
+		      <para>Windows Process Environment Block.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>procinfo</literal>]</term>
+		    <listitem>
+		      <para>Cygwin process information.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>shared-user-data</literal>]</term>
+		    <listitem>
+		      <para>Shared user information.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>heap</literal>]</term>
+		    <listitem>
+		      <para>The process's heap.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>stack</literal>]</term>
+		    <listitem>
+		      <para>
+			The initial process's (also known as the main
+			thread's) stack.
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>stack</literal>
+		      (tid <literal>&lt;tid&gt;</literal>)]
+		    </term>
+		    <listitem>
+		      <para>
+			A thread's stack (where the
+			<literal>&lt;tid&gt;</literal> is a thread id).
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>teb</literal>
+		      (tid <literal>&lt;tid&gt;</literal>)]
+		    </term>
+		    <listitem>
+		      <para>
+			Windows Thread Environment Block (where
+			<literal>&lt;tid&gt;</literal> is a thread id).
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>[<literal>win heap &lt;n&gt;
+		      default shared exec grow noserial debug</literal>]
+		    </term>
+		    <listitem>
+		      <para>
+			Windows extended heap (where
+			<literal>&lt;n&gt;</literal> is a heap id)
+			and the rest of the words are heap flags:
+
+			<variablelist termlength="8" remap='TP'>
+			  <varlistentry>
+			    <term><literal>default</literal></term>
+			    <listitem>
+			      <para>default heap flags</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term><literal>shared</literal></term>
+			    <listitem>
+			      <para>shareable and mapped heap flags</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term><literal>exec</literal></term>
+			    <listitem>
+			      <para>executable heap flag</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term><literal>grow</literal></term>
+			    <listitem>
+			      <para>growable heap flag</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term><literal>noserial</literal></term>
+			    <listitem>
+			      <para>do not serialize heap flag</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term><literal>debug</literal></term>
+			    <listitem>
+			      <para>debugged heap flag</para>
+
+			    </listitem>
+			  </varlistentry>
+			</variablelist>
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		</variablelist>
+	      </para>
+
+	      <para>If the <filename>pathname</filename> field is blank,
+	        this is an anonymous mapping as obtained via
+		<citerefentry>
+		  <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum>
+		</citerefentry>.
+		There is no easy way to coordinate this back to a process's
+		source, short of running it through
+		<citerefentry>
+		  <refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>,
+		<citerefentry>
+		  <refentrytitle>strace</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>,
+		or similar.
+	      </para>
+
+	      <para>
+		<filename>pathname</filename> is shown unescaped except
+		for newline characters, which are replaced with an
+		octal escape sequence.
+		As a result, it is not possible to determine whether the
+		original <filename>pathname</filename> contained a newline
+		character or the literal <literal>&bsol;e012</literal>
+		character sequence.
+	      </para>
+
+	      <para>
+		If the mapping is file-backed and the file has been deleted,
+		the string "<literal> (deleted)</literal>"
+		is appended to the <filename>pathname</filename>.
+	        Note that this is ambiguous too.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/mountinfo</filename></term>
+	    <listitem>
+	      <para>
+	        This file contains information about mount points in the
+	        process's mount namespace (see
+	        <citerefentry>
+	          <refentrytitle>mount_namespaces</refentrytitle><manvolnum>7</manvolnum>
+	        </citerefentry>).
+		It supplies various information (e.g., propagation state, root
+		of mount for bind mounts, identifier for each mount and its
+		parent) that is missing from the (older)
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/mounts</filename>
+	        file, and fixes various other problems with that file (e.g.,
+	        nonextensibility, failure to distinguish per-mount versus
+	        per-superblock options).
+	      </para>
+
+	      <para>The file contains lines of the form:</para>
+
+<screen>
+<computeroutput>
+36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
+(1)(2)(3)   (4)   (5)      (6)      (?)   (7) (8)   (9)         (10)
+</computeroutput>
+</screen>
+
+              <para>
+                The numbers in parentheses are labels for the descriptions below:
+
+		<variablelist termlength="4" remap='TP'>
+		  <varlistentry>
+		    <term>(1)</term>
+		    <listitem>
+	              <para>mount id: a unique id for the mount (may be reused after
+	                <citerefentry>
+	                  <refentrytitle>umount</refentrytitle><manvolnum>2</manvolnum>
+	                </citerefentry>).
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(2)</term>
+		    <listitem>
+	              <para>parent id: the id of the parent mount (or of self for
+	                the root of this mount namespace's mount tree).
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(3)</term>
+		    <listitem>
+	              <para><emphasis remap="B">major</emphasis><literal>:</literal><emphasis remap="B">minor</emphasis>:
+			the value of <literal>st_dev</literal>
+			for files on this filesystem (see
+			<citerefentry>
+			  <refentrytitle>stat</refentrytitle><manvolnum>2</manvolnum>
+			</citerefentry>).
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(4)</term>
+		    <listitem>
+	              <para>root: the pathname of the directory in the filesystem
+	                which forms the root of this mount.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(5)</term>
+		    <listitem>
+	              <para>mount point: the pathname of the mount point relative to
+	                the process's root directory.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(6)</term>
+		    <listitem>
+		      <para>mount options: per-mount options (see
+	                <citerefentry>
+	                  <refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum>
+	                </citerefentry>).
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(?)</term>
+		    <listitem>
+	              <para>optional fields: zero or more fields of the form
+			"<emphasis>tag</emphasis><literal>[:</literal><emphasis>value</emphasis><literal>]</literal>";
+			see below.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(7)</term>
+		    <listitem>
+	              <para>separator: the end of the optional fields is marked by a
+	                single hyphen.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(8)</term>
+		    <listitem>
+	              <para>filesystem type: the filesystem type in the form
+			"<emphasis>type</emphasis><literal>[.</literal><emphasis>subtype</emphasis><literal>]</literal>".
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(9)</term>
+		    <listitem>
+	              <para>mount source: filesystem-specific information or
+			"<literal>none</literal>".
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(10)</term>
+		    <listitem>
+		      <para>super options: per-superblock options (see
+	                <citerefentry>
+	                  <refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum>
+	                </citerefentry>).
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		</variablelist>
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/mounts</filename></term>
+	    <listitem>
+	      <para>
+	        This file lists all the filesystems currently mounted in the
+	        process's mount namespace (see
+	        <citerefentry>
+	          <refentrytitle>mount_namespaces</refentrytitle><manvolnum>7</manvolnum>
+	        </citerefentry>).
+		The format of this file is documented in
+		<citerefentry>
+		  <refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum>
+		</citerefentry>.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/pgid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the process group id for the
+	        process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/ppid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the parent process id for the
+	        process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/root</filename></term>
+	    <listitem>
+	      <para>
+	        UNIX and Linux support the idea of a per-process root of the
+	        filesystem, set by the
+	        <citerefentry>
+	          <refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum>
+	        </citerefentry> system call.
+		This file is a symbolic link that points to the process's root
+		directory, and behaves in the same way as
+		<filename>exe</filename>, and
+		<filename>fd/*</filename>.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/sid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the session id for the process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/stat</filename></term>
+	    <listitem>
+	      <para>
+	        Status information about the process.
+	        This is used by some implementations of
+	        <citerefentry>
+	          <refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum>
+	        </citerefentry>.
+	      </para>
+
+	      <para>
+	        The fields, in order, with their proper
+	        <citerefentry>
+	          <refentrytitle>scanf</refentrytitle><manvolnum>3</manvolnum>
+	        </citerefentry> format specifiers, are listed below.
+	      </para>
+
+	      <variablelist remap='TP'>
+		<varlistentry>
+		  <term>(1) <emphasis remap='I'>pid</emphasis>  %d</term>
+		  <listitem>
+	            <para>The process id.</para>
+
+	          </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(2) <emphasis remap='I'>comm</emphasis>  %s</term>
+		  <listitem>
+	            <para>
+	              The filename of the executable, in parentheses.
+	              This is visible whether or not the executable is swapped
+	              out.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(3) <emphasis remap='I'>state</emphasis>  %c</term>
+		  <listitem>
+	            <para>
+	              One of the following characters, indicating process state:
+	            </para>
+
+		    <variablelist termlength="2">
+		      <varlistentry>
+			<term>R</term>
+			<listitem>
+	                  <para>Runnable</para>
+
+			</listitem>
+		      </varlistentry>
+		      <varlistentry>
+			<term>O</term>
+			<listitem>
+	                  <para>Running</para>
+
+			</listitem>
+		      </varlistentry>
+		      <varlistentry>
+			<term>S</term>
+			<listitem>
+	                  <para>Sleeping in an interruptible wait</para>
+
+			</listitem>
+		      </varlistentry>
+		      <varlistentry>
+			<term>D</term>
+			<listitem>
+	                  <para>Waiting in uninterruptible disk sleep</para>
+
+			</listitem>
+		      </varlistentry>
+		      <varlistentry>
+			<term>Z</term>
+			<listitem>
+	                  <para>Zombie</para>
+
+			</listitem>
+		      </varlistentry>
+		      <varlistentry>
+			<term>T</term>
+			<listitem>
+			  <para>Stopped (on a signal) or trace stopped</para>
+
+			</listitem>
+		      </varlistentry>
+		    </variablelist>
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(4) <emphasis remap='I'>ppid</emphasis>  %d</term>
+		  <listitem>
+	            <para>The PID of the parent of this process.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(5) <emphasis remap='I'>pgrp</emphasis>  %d</term>
+		  <listitem>
+	            <para>The process group id of the process.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(6) <emphasis remap='I'>session</emphasis>  %d</term>
+		  <listitem>
+	            <para>The session id of the process.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(7) <emphasis remap='I'>tty_nr</emphasis>  %d</term>
+		  <listitem>
+	            <para>
+	              The controlling terminal of the process.
+	              (The minor device number is contained in the combination
+	              of bits 31 to 20 and 7 to 0; the major device number is in
+	              bits 15 to 8.)
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(8) <emphasis remap='I'>tpgid</emphasis>  %d</term>
+		  <listitem>
+	            <para>
+	              The id of the foreground process group of the controlling
+	              terminal of the process.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(9) <emphasis remap='I'>flags</emphasis>  %u</term>
+		  <listitem>
+	            <para>The kernel flags word of the process.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(10) <emphasis remap='I'>minflt</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              The number of minor faults the process has made which have
+	              not required loading a memory page from disk.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(11) <emphasis remap='I'>cminflt</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              The number of minor faults that the process's waited-for
+	              children have made.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(12) <emphasis remap='I'>majflt</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              The number of major faults the process has made which have
+	              required loading a memory page from disk.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(13) <emphasis remap='I'>cmajflt</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              The number of major faults that the process's waited-for
+	              children have made.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(14) <emphasis remap='I'>utime</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              Amount of time that this process has been scheduled in
+	              user mode, measured in clock ticks (divide by
+	              <literal>sysconf(_SC_CLK_TCK)</literal>).
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(15) <emphasis remap='I'>stime</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              Amount of time that this process has been scheduled in
+	              kernel mode, measured in clock ticks (divide by
+	              <literal>sysconf(_SC_CLK_TCK)</literal>).
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(16) <emphasis remap='I'>cutime</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              Amount of time that this process's waited-for children
+	              have been scheduled in user mode, measured in clock ticks
+	              (divide by <literal>sysconf(_SC_CLK_TCK)</literal>).
+	              (See also
+	              <citerefentry>
+	                <refentrytitle>times</refentrytitle><manvolnum>2</manvolnum>
+	              </citerefentry>).
+		    </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(17) <emphasis remap='I'>cstime</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              Amount of time that this process's waited-for children
+	              have been scheduled in kernel mode, measured in clock
+	              ticks (divide by <literal>sysconf(_SC_CLK_TCK)</literal>).
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(18) <emphasis remap='I'>priority</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              For processes running a real-time scheduling policy
+	              (<emphasis remap='I'>policy</emphasis> below; see
+	              <citerefentry>
+	                <refentrytitle>sched_setscheduler</refentrytitle><manvolnum>2</manvolnum>
+	              </citerefentry>),
+		      this is the negated scheduling priority, minus one; that
+		      is, a number in the range -2 to -100, corresponding to
+		      real-time priorities 1 to 99. For processes running
+		      under a non-real-time scheduling policy, this is the raw
+		      nice value
+		      (<citerefentry>
+			<refentrytitle>setpriority</refentrytitle><manvolnum>2</manvolnum>
+	              </citerefentry>)
+		      as represented in the kernel.
+	              The kernel stores nice values as numbers in the range 0
+	              (high) to 39 (low), corresponding to the user-visible nice
+	              range of -20 to 19.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(19) <emphasis remap='I'>nice</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              The nice value (see
+	              <citerefentry>
+	                <refentrytitle>setpriority</refentrytitle><manvolnum>2</manvolnum>
+		      </citerefentry>), a value in the range 19 (low priority)
+		      to -20 (high priority).
+		    </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(20) <emphasis remap='I'>num_threads</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              Number of threads in this process. Currently shown as 0.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(21) <emphasis remap='I'>itrealvalue</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              The time in jiffies before the next
+		      <literal>SIGALRM</literal>
+	              is sent to the process due to an interval timer.
+	              This field is no longer maintained, and is hard coded as 0.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(22) <emphasis remap='I'>starttime</emphasis>  %llu</term>
+		  <listitem>
+	            <para>
+	              The time the process started after system boot.
+	              The value is expressed in clock ticks (divide by
+	              <literal>sysconf(_SC_CLK_TCK)</literal>).
+	          </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(23) <emphasis remap='I'>vsize</emphasis>  %lu</term>
+		  <listitem>
+	            <para>Virtual memory size in bytes.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(24) <emphasis remap='I'>rss</emphasis>  %ld</term>
+		  <listitem>
+	            <para>
+	              Resident Set Size: number of pages the process has in real
+	              memory.
+	              This is just the pages which count toward text, data, or
+	              stack space.
+	              This does not include pages which have not been
+	              demand-loaded in, or which are swapped out.
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term>(25) <emphasis remap='I'>rsslim</emphasis>  %lu</term>
+		  <listitem>
+	            <para>
+	              Current soft limit in bytes on the rss of the process; see
+	              the description of <literal>RLIMIT_RSS</literal> in
+	              <citerefentry>
+	                <refentrytitle>getrlimit</refentrytitle><manvolnum>2</manvolnum>
+	              </citerefentry>.
+		    </para>
+
+		  </listitem>
+		</varlistentry>
+	      </variablelist>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/statm</filename></term>
+	    <listitem>
+	      <para>
+	        Provides information about memory usage, measured in pages.
+	        The columns are:
+
+		<variablelist termlength="12">
+		  <varlistentry>
+		    <term>(1) size</term>
+		    <listitem>
+		      <para>total program size
+		      (same as VmSize in <filename>/proc/<emphasis remap='I'>[pid]</emphasis>/status</filename>)</para>
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(2) resident</term>
+		    <listitem>
+		      <para>resident set size
+		      (same as VmRSS in <filename>/proc/<emphasis remap='I'>[pid]</emphasis>/status</filename>)</para>
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(3) shared</term>
+		    <listitem>
+		      <para>number of resident shared pages
+		      (i.e., backed by a file) (same as RssFile+RssShmem in
+		      <filename>/proc/<emphasis remap='I'>[pid]</emphasis>/status</filename>)</para>
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(4) text</term>
+		    <listitem><para>text (code)</para></listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(5) lib</term>
+		    <listitem><para>library</para></listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(6) data</term>
+		    <listitem><para>data + stack</para></listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(7) dt</term>
+		    <listitem><para>dirty pages (always 0)</para></listitem>
+		  </varlistentry>
+		</variablelist>
+
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/status</filename></term>
+	    <listitem>
+	      <para>
+		Provides much of the information in
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/stat</filename> and
+		<filename>/proc/<emphasis remap='I'>[pid]</emphasis>/statm</filename>
+		in a format that's easier for humans to parse.
+		Here's an example:
+
+		<screen>
+		  <prompt>$</prompt> <userinput>cat /proc/$$/status</userinput>
+		  <computeroutput>
+		  Name:   bash
+		  Umask:  0022
+		  State:  S (sleeping)
+		  Tgid:   17248
+		  Pid:    17248
+		  PPid:   17200
+		  Uid:    1000    1000    1000    1000
+		  Gid:    100     100     100     100
+		  VmSize:	  131168 kB
+		  VmLck:	       0 kB
+		  VmRSS:	   13484 kB
+		  VmData:	   10332 kB
+		  VmStk:	     136 kB
+		  VmExe:	     992 kB
+		  VmLib:	    2104 kB
+		  SigPnd: 0000000000000000
+		  SigBlk: 0000000000010000
+		  SigIgn: 0000000000384004
+		  </computeroutput>
+		</screen>
+
+	      </para>
+
+	      <para>The fields are as follows:
+		<itemizedlist remap='IP+bullet'>
+		  <listitem>
+	            <para>
+		      <emphasis remap='I'>Name</emphasis>:
+		      Command run by this process.
+	            </para>
+
+		  </listitem>
+		  <listitem>
+	            <para>
+	              <emphasis remap='I'>Umask</emphasis>:
+	              Process umask, expressed in octal with a leading zero; see
+	              <citerefentry>
+	                <refentrytitle>umask</refentrytitle><manvolnum>2</manvolnum>
+	              </citerefentry>.
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>State</emphasis>:
+		      Current state of the process.
+		      One of:
+
+		      <variablelist termlength="2" remap='TP'>
+			<varlistentry>
+			  <term>R</term>
+			  <listitem><para>runnable</para></listitem>
+
+			</varlistentry>
+			<varlistentry>
+			  <term>O</term>
+			  <listitem><para>running</para></listitem>
+
+			</varlistentry>
+			<varlistentry>
+			  <term>S</term>
+			  <listitem><para>sleeping</para></listitem>
+
+			</varlistentry>
+			<varlistentry>
+			  <term>D</term>
+			  <listitem><para>disk sleep</para></listitem>
+
+			</varlistentry>
+			<varlistentry>
+			  <term>T</term>
+			  <listitem><para>stopped or tracing stop</para></listitem>
+
+			</varlistentry>
+			<varlistentry>
+			  <term>Z</term>
+			  <listitem><para>zombie</para></listitem>
+
+			</varlistentry>
+		      </variablelist>
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>Tgid</emphasis>:
+		      Thread group id (i.e., Process id).
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>Pid</emphasis>:
+		      Thread id (see
+		      <citerefentry>
+			<refentrytitle>gettid</refentrytitle><manvolnum>2</manvolnum>
+		      </citerefentry>).
+		  </para>
+
+		  </listitem>
+		  <listitem>
+	            <para>
+	              <emphasis remap='I'>PPid</emphasis>:
+	              PID of parent process.
+	            </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>Uid</emphasis>,
+		      <emphasis remap='I'>Gid</emphasis>:
+		      Real, effective, saved set, and filesystem UIDs (GIDs).
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>VmSize</emphasis>:
+		      Virtual memory size.
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>VmLck</emphasis>:
+		      Locked memory size (see
+		      <citerefentry>
+			<refentrytitle>mlock</refentrytitle><manvolnum>2</manvolnum>
+		      </citerefentry>).
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>VmRSS</emphasis>:
+		      Resident set size.
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>VmData</emphasis>,
+		      <emphasis remap='I'>VmStk</emphasis>,
+		      <emphasis remap='I'>VmExe</emphasis>:
+		      Size of data, stack, and text segments.
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>VmLib</emphasis>:
+		      Shared library code size.
+		    </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>SigPnd</emphasis>:
+		      Number of signals pending for process as a whole (see
+		      <citerefentry>
+			<refentrytitle>pthreads</refentrytitle><manvolnum>7</manvolnum>
+		      </citerefentry> and
+		      <citerefentry>
+			<refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
+		      </para>
+
+		  </listitem>
+		  <listitem>
+		    <para>
+		      <emphasis remap='I'>SigBlk</emphasis>,
+		      <emphasis remap='I'>SigIgn</emphasis>:
+		      Masks indicating signals being blocked and ignored (see
+		      <citerefentry>
+			<refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum>
+		      </citerefentry>).
+		    </para>
+
+		  </listitem>
+		</itemizedlist>
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/uid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the user id for the process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/winexename</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the Windows pathname of the
+	        executed command.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/<emphasis remap='I'>[pid]</emphasis>/winpid</filename></term>
+	    <listitem>
+	      <para>
+	        This read-only file contains the Windows process id for the
+	        process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/cpuinfo</filename></term>
+	    <listitem>
+	      <para>
+	        This is a collection of CPU and system architecture dependent
+	        items, for each supported architecture a different list.
+		Two common entries are <emphasis remap='I'>processor</emphasis>
+		which gives CPU number and
+		<emphasis remap='I'>bogomips</emphasis>, a system constant
+		that is calculated during kernel initialization.
+		SMP machines have information for each CPU.
+		The
+		<citerefentry>
+		  <refentrytitle>lscpu</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>
+		command gathers its information from this file.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/cygdrive</filename></term>
+	    <listitem>
+	      <para>
+		This file is a symbolic link that points to the user's
+		Windows mapped drive mount point, similar to
+		<emphasis remap='I'>root</emphasis>.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/devices</filename></term>
+	    <listitem>
+	      <para>
+		Text listing of major numbers and device groups.
+	        This can be used by <command>makedev</command>
+		scripts for consistency with the system.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/filesystems</filename></term>
+	    <listitem>
+	      <para>
+		A text listing of the filesystems which are supported by Cygwin.
+		(See also
+		<citerefentry>
+		  <refentrytitle>filesystems</refentrytitle><manvolnum>5</manvolnum>
+		</citerefentry>.)
+		If a filesystem is marked with "nodev", this means that it
+		does not require a block device to be mounted (e.g., virtual
+		filesystem, network filesystem).
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/loadavg</filename></term>
+	    <listitem>
+	      <para>
+	        The first three fields in this file are load average figures
+	        giving the number of jobs in the run queue (state R)
+	        averaged over 1, 5, and 15 minutes.
+		They are the same as the load average numbers given by
+		<citerefentry>
+		  <refentrytitle>uptime</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry> and other programs.
+		The fourth field consists of two numbers separated by a slash (/).
+	        The first of these is the number of currently runnable
+	        scheduling entities (processes, threads).
+	        The value after the slash is the number of scheduling entities
+	        that currently exist on the system.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/meminfo</filename></term>
+	    <listitem>
+	      <para>
+	        This file reports statistics about memory usage on the system.
+		It is used by
+		<citerefentry>
+		  <refentrytitle>free</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>
+		to report the amount of free and used memory (both physical
+		and swap) on the system as well as the shared memory and
+		buffers used by the system.
+	        Each line of the file consists of a parameter name, followed by
+	        a colon, the value of the parameter, and an option unit of
+	        measurement (e.g., "kB").
+		The list below describes the parameter names and the format
+		specifier required to read the field value.
+		Some fields are displayed only if the system was configured
+		with various options; those dependencies are noted in the
+		list.
+	      </para>
+
+	      <variablelist remap='TP'>
+		<varlistentry>
+		  <term><emphasis remap='I'>MemTotal</emphasis> %lu</term>
+		  <listitem>
+	            <para>
+	              Total usable RAM (i.e., physical RAM minus a few reserved
+	              bits and the system binary code).
+	            </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>MemFree</emphasis> %lu</term>
+		  <listitem>
+		    <para>
+		      The sum of <emphasis remap='I'>LowFree</emphasis> +
+		      <emphasis remap='I'>HighFree</emphasis>.
+		    </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>HighTotal</emphasis> %lu</term>
+		  <listitem>
+		    <para>Total amount of highmem.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>HighFree</emphasis> %lu</term>
+		  <listitem>
+		    <para>Amount of free highmem.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>LowTotal</emphasis> %lu</term>
+		  <listitem>
+		    <para>
+		      Total amount of lowmem.
+		      Lowmem is memory which can be used for everything that
+		      highmem can be used for, but it is also available for the
+		      system's use for its own data structures.
+		      Bad things happen when you're out of lowmem.
+		    </para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>LowFree</emphasis> %lu</term>
+		  <listitem>
+	            <para>Amount of free lowmem.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>SwapTotal</emphasis> %lu</term>
+		  <listitem>
+		    <para>Total amount of swap space available.</para>
+
+		  </listitem>
+		</varlistentry>
+		<varlistentry>
+		  <term><emphasis remap='I'>SwapFree</emphasis> %lu</term>
+		  <listitem>
+	            <para>Amount of swap space that is currently unused.</para>
+
+		  </listitem>
+		</varlistentry>
+	      </variablelist>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/misc</filename></term>
+	    <listitem>
+	      <para>
+	        Text listing of minor device numbers and names of devices with
+	        major device number of the <literal>misc</literal> device group.
+		This can be used by <command>makedev</command> scripts
+		for consistency with the system.
+	      </para>
+
+	  </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/mounts</filename></term>
+	    <listitem>
+	      <para>
+	        With the introduction of per-process mount namespaces, this file
+	        became a link to
+		<filename>/proc/self/mounts</filename>,
+		which lists the mount points of the process's own mount
+		namespace.
+		The format of this file is documented in
+		<citerefentry>
+		  <refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum>
+		</citerefentry>.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/net</filename></term>
+	    <listitem>
+	      <para>
+	        This directory contains various files and subdirectories
+	        containing information about the networking layer.
+	        The files contain ASCII structures and are, therefore, readable
+	        with
+		<citerefentry>
+		  <refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>.
+		However, the standard
+		<citerefentry>
+		  <refentrytitle>netstat</refentrytitle><manvolnum>8</manvolnum>
+		</citerefentry>
+		suite provides much cleaner access to these files.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/net/if_inet6</filename></term>
+	    <listitem>
+	      <para>
+	        This file contains information about IP V6 interface adapters,
+	        if used.
+	        Each line represents an IP V6 interface adapter.
+	      </para>
+
+<screen>
+<computeroutput>
+fe800000000000002c393d3da6108636 12 40 20 80 {C6B5FBE5-A3AC-4DB0-A308-8EE94E1406A4}
+fe8000000000000039da016f76bd92bc 13 40 20 20 {E06B8972-0918-41FC-851B-090C446C7D1C}
+fe8000000000000050ba9cedf1fe1628 0b 40 20 20 {680ED6FD-DFAC-4398-AA85-FB33E17E38EA}
+fe8000000000000030c5c6a0b30f109d 11 40 20 20 {B9E39F53-1659-4065-BDA5-F41162250E03}
+20021840ac2c12343427e3b9ec6fa585 08 40 00 80 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c12342403e3b2c7a5a32f 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c1234284e8d0ecb4160cb 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c123468cb06ea72f1d678 08 80 00 80 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c12346cb59aca97c36e3b 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c123498af9881de1fb828 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c1234cd62a3d73a498611 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+20021840ac2c1234e410c873be09df93 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+fe800000000000003427e3b9ec6fa585 08 40 20 80 {4083A7F8-99CF-4220-8715-6FDF268B002F}
+00000000000000000000000000000001 01 80 10 80 {2B5345AC-7502-11EA-AC73-806E6F6E6963}
+			   (1)  (2)(3)(4)(5)  (6)
+</computeroutput>
+</screen>
+
+	      <para>The fields in each line are:
+
+		<variablelist termlength="4" remap='TP'>
+		  <varlistentry>
+		    <term>(1)</term>
+		    <listitem>
+		      <para>The IP V6 address of the interface adapter.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(2)</term>
+		    <listitem>
+		      <para>The IP V6 interface adapter index.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(3)</term>
+		    <listitem>
+		      <para>
+			The prefix length of the IP V6 interface address.
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(4)</term>
+		    <listitem>
+		      <para>The scope of the IP V6 interface address.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(5)</term>
+		    <listitem>
+		      <para>The state of the IP V6 interface address.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term>(6)</term>
+		    <listitem>
+	              <para>
+	                The DUID/GUID/UUID of the IP V6 interface adapter.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		</variablelist>
+		<para>
+		  The last number exists only for compatibility reasons and is
+		  always 1.
+		</para>
+
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/partitions</filename></term>
+	    <listitem>
+	      <para>
+	        Contains the major and minor numbers of each partition as well
+	        as the number of 1024-byte blocks and the partition name.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/registry</filename></term>
+	    <listitem>
+	      <para>
+	        Under Cygwin, this directory contains subdirectories for
+	        registry paths, keys, and subkeys, and files named for registry
+	        values which contain registry data, for the current process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/registry32</filename></term>
+	    <listitem>
+	      <para>
+	        Under 64 bit Windows, this directory contains subdirectories for
+	        registry paths, keys, and subkeys, and files named for registry
+	        values which contain registry data, for 32 bit processes.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/registry64</filename></term>
+	    <listitem>
+	      <para>
+	        Under 64 bit Windows, this directory contains subdirectories for
+	        registry paths, keys, and subkeys, and files named for registry
+	        values which contain registry data, for 64 bit processes.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	  <term><filename>/proc/self</filename></term>
+	  <listitem>
+	    <para>
+	      This directory refers to the process accessing the
+	      <filename>/proc</filename> filesystem, and is identical to the
+	      <filename>/proc</filename> directory named by the process id
+	      of the same process.
+	    </para>
+
+	  </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/stat</filename></term>
+	    <listitem>
+	      <para>
+	        system statistics.
+	        Varies with architecture.
+	        Common entries include:
+		<variablelist remap='TP'>
+		  <varlistentry>
+		    <term><emphasis remap='I'>cpu 10132153 0 3084719 46828483</emphasis></term>
+		    <listitem>
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>cpu0 1393280 0 572056 13343292</emphasis></term>
+		    <listitem>
+	              <para>
+	                The amount of time, measured in units of USER_HZ
+	                (1/100ths of a second on most architectures, use
+			<literal>sysconf(_SC_CLK_TCK)</literal>
+			to obtain the right value), that the system ("cpu"
+			line) or the specific CPU
+			("cpu <emphasis remap='I'>N</emphasis>" line)
+			spent in various states:
+
+			<variablelist termlength="10" remap='TP'>
+			  <varlistentry>
+			    <term>(1) <emphasis remap='I'>user</emphasis></term>
+			    <listitem>
+	                      <para>Time spent in user mode.</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term>(2) <emphasis remap='I'>nice</emphasis></term>
+			    <listitem>
+			      <para>
+				Time spent in user mode with low priority
+				(nice).
+			      </para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term>(3) <emphasis remap='I'>system</emphasis></term>
+			    <listitem>
+			      <para>Time spent in system mode.</para>
+
+			    </listitem>
+			  </varlistentry>
+			  <varlistentry>
+			    <term>(4) <emphasis remap='I'>idle</emphasis></term>
+			    <listitem>
+			      <para>Time spent in the idle task.</para>
+
+			    </listitem>
+			  </varlistentry>
+			</variablelist>
+		      </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>page 5741 1808</emphasis></term>
+		    <listitem>
+	              <para>
+	                The number of pages the system paged in and the number
+	                that were paged out (from disk).
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>swap 1 0</emphasis></term>
+		    <listitem>
+	              <para>
+	                The number of swap pages that have been brought in and
+	                out.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>intr 1462898</emphasis></term>
+		    <listitem>
+	              <para>The number of interrupts serviced.</para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>ctxt 115315</emphasis></term>
+		    <listitem>
+	              <para>
+	                The number of context switches that the system
+	                underwent.
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		  <varlistentry>
+		    <term><emphasis remap='I'>btime 769041601</emphasis></term>
+		    <listitem>
+	              <para>
+			boot time, in seconds since the Epoch,
+			1970-01-01 00:00:00 +0000 (UTC).
+	              </para>
+
+		    </listitem>
+		  </varlistentry>
+		</variablelist>
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/swaps</filename></term>
+	    <listitem>
+	      <para>
+	        Swap areas in use.
+	        See also
+	        <citerefentry>
+	          <refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum>
+	        </citerefentry>.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/sys</filename></term>
+	    <listitem>
+	      <para>
+	        This directory contains a number of files and subdirectories
+	        linking to Windows objects, which can be read using these
+	        entries.
+	      </para>
+
+	      <para>
+	        String values may be terminated by either &apos;&bsol;0&apos;
+	        or &apos;&bsol;n&apos;.
+	      </para>
+
+	      <para>
+	        Integer and long values may be either in decimal or in
+	        hexadecimal notation (e.g. 0x3FFF).
+	        Multiple integer or long values may be separated by any of the
+	        following whitespace characters:
+	        &apos;&nbsp;&apos;, &apos;&bsol;t&apos;, or
+	        &apos;&bsol;n&apos;.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/sysvipc</filename></term>
+	    <listitem>
+	      <para>
+	        Subdirectory containing the pseudo-files
+		<filename>msg</filename>, <filename>sem</filename>and
+		<filename>shm</filename>.
+		These files list the System V Interprocess Communication (IPC)
+		objects (respectively: message queues, semaphores, and shared
+		memory) that currently exist on the system, providing similar
+		information to that available via
+		<citerefentry>
+		  <refentrytitle>ipcs</refentrytitle><manvolnum>1</manvolnum>
+		</citerefentry>.
+		These files are only available if the cygserver Cygwin service
+		is running.
+	        These files have headers and are formatted (one IPC object per
+	        line) for easy understanding.
+		<citerefentry>
+		  <refentrytitle>svipc</refentrytitle><manvolnum>7</manvolnum>
+		</citerefentry>
+	        provides further background on the information shown by these
+	        files.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/uptime</filename></term>
+	    <listitem>
+	      <para>
+	        This file contains two numbers (values in seconds): the uptime
+	        of the system (including time spent in suspend) and the amount
+	        of time spent in the idle process.
+	      </para>
+
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><filename>/proc/version</filename></term>
+	    <listitem>
+	      <para>
+	        This string identifies the Cygwin version that is currently
+	        running.
+	        For example:
+
+<screen>
+<computeroutput>
+CYGWIN_NT-10.0-18363 version 3.1.7-340.x86_64 (corinna@calimero) (gcc version 9.3.0 20200312 (Fedora Cygwin 9.3.0-1) (GCC) ) 2020-08-22 17:48 UTC
+</computeroutput>
+</screen>
+
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </refsect2>
+    </refsect1>
+
+    <refsect1 id='proc-notes'><title>Notes</title>
+      <para>
+	Many files contain strings (e.g., the environment and command
+	line) that are in the internal format, with subfields terminated
+	by null bytes (&apos;&bsol;0&apos;).
+	When inspecting such files, you may find that the results are
+	more readable if you use a command of the following form to
+	display them:
+
+	<screen>
+	  <prompt>$</prompt> <userinput>cat -A <emphasis remap='I'>file</emphasis></userinput>
+	</screen>
+      </para>
+
+      <para>
+	This manual page is incomplete, possibly inaccurate, and is the kind
+	of thing that needs to be updated very often.
+      </para>
+    </refsect1>
+
+    <refsect1 id='proc-see_also'><title>See Also</title>
+      <para>
+	<citerefentry>
+	  <refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>find</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>free</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>pstree</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>tr</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>uptime</refentrytitle><manvolnum>1</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>readlink</refentrytitle><manvolnum>2</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>syslog</refentrytitle><manvolnum>2</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>hier</refentrytitle><manvolnum>7</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>arp</refentrytitle><manvolnum>8</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>netstat</refentrytitle><manvolnum>8</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	  <refentrytitle>route</refentrytitle><manvolnum>8</manvolnum>
+	</citerefentry>.
+      </para>
+    </refsect1>
+  </refentry>
 </sect2>
 
 <sect2 id="pathnames-proc-registry"><title>The /proc/registry filesystem</title>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 2/2] winsup/doc/Makefile.in: create man5 dir and install proc.5
  2020-11-25  6:49 [PATCH v2 0/2] proc(5) man page Brian Inglis
  2020-11-25  6:49 ` [PATCH v2 1/2] specialnames.xml: add proc(5) Cygwin " Brian Inglis
@ 2020-11-25  6:49 ` Brian Inglis
  2020-11-30 10:47 ` [PATCH v2 0/2] proc(5) man page Corinna Vinschen
  2 siblings, 0 replies; 8+ messages in thread
From: Brian Inglis @ 2020-11-25  6:49 UTC (permalink / raw)
  To: cygwin-patches

[-- Attachment #1: Type: text/plain, Size: 71 bytes --]

---
 winsup/doc/Makefile.in | 4 ++++
 1 file changed, 4 insertions(+)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0002-winsup-doc-Makefile.in-create-man5-dir-and-install-g.patch --]
[-- Type: text/x-patch; name="0002-winsup-doc-Makefile.in-create-man5-dir-and-install-g.patch", Size: 864 bytes --]

diff --git a/winsup/doc/Makefile.in b/winsup/doc/Makefile.in
index cc4a1bec305b..f2a838a5dcf7 100644
--- a/winsup/doc/Makefile.in
+++ b/winsup/doc/Makefile.in
@@ -17,6 +17,7 @@ htmldir = @htmldir@
 mandir = @mandir@
 man1dir = $(mandir)/man1
 man3dir = $(mandir)/man3
+man5dir = $(mandir)/man5
 infodir:=@infodir@
 sysconfdir:=@sysconfdir@
 
@@ -61,6 +62,7 @@ clean:
 	rm -f api2man.stamp intro2man.stamp utils2man.stamp
 	rm -f *.1
 	rm -f *.3
+	rm -f *.5
 	rm -f *.info* charmap
 
 install: install-all
@@ -86,6 +88,8 @@ install-man: utils2man.stamp api2man.stamp intro2man.stamp
 	$(INSTALL_DATA) *.1 $(DESTDIR)$(man1dir)
 	@$(MKDIRP) $(DESTDIR)$(man3dir)
 	$(INSTALL_DATA) *.3 $(DESTDIR)$(man3dir)
+	@$(MKDIRP) $(DESTDIR)$(man5dir)
+	$(INSTALL_DATA) *.5 $(DESTDIR)$(man5dir)
 
 install-info: cygwin-ug-net.info cygwin-api.info
 	$(MKDIRP) $(DESTDIR)$(infodir)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] proc(5) man page
  2020-11-25  6:49 [PATCH v2 0/2] proc(5) man page Brian Inglis
  2020-11-25  6:49 ` [PATCH v2 1/2] specialnames.xml: add proc(5) Cygwin " Brian Inglis
  2020-11-25  6:49 ` [PATCH v2 2/2] winsup/doc/Makefile.in: create man5 dir and install proc.5 Brian Inglis
@ 2020-11-30 10:47 ` Corinna Vinschen
  2020-12-01  0:57   ` Brian Inglis
  2 siblings, 1 reply; 8+ messages in thread
From: Corinna Vinschen @ 2020-11-30 10:47 UTC (permalink / raw)
  To: cygwin-patches

Hi Brian,

On Nov 24 23:49, Brian Inglis wrote:
> Brian Inglis (2):
>   specialnames.xml: add proc(5) Cygwin man page
>   winsup/doc/Makefile.in: create man5 dir and install generated proc.5
> 
>  winsup/doc/Makefile.in      |    4 +
>  winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
>  2 files changed, 2098 insertions(+)
> 
> -- 
> 2.29.2

It would be helpful if you could outline the changes from v1.


Thanks,
Corinna

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] proc(5) man page
  2020-11-30 10:47 ` [PATCH v2 0/2] proc(5) man page Corinna Vinschen
@ 2020-12-01  0:57   ` Brian Inglis
  2020-12-01  9:55     ` Corinna Vinschen
  0 siblings, 1 reply; 8+ messages in thread
From: Brian Inglis @ 2020-12-01  0:57 UTC (permalink / raw)
  To: cygwin-patches

On 2020-11-30 03:47, Corinna Vinschen wrote:
> On Nov 24 23:49, Brian Inglis wrote:
>> Brian Inglis (2):
>>    specialnames.xml: add proc(5) Cygwin man page
>>    winsup/doc/Makefile.in: create man5 dir and install generated proc.5
>>
>>   winsup/doc/Makefile.in      |    4 +
>>   winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
>>   2 files changed, 2098 insertions(+)

> It would be helpful if you could outline the changes from v1.

Those were fairly minor fixes to content and some processing outlined in the 
(lengthy) responses to Jon's (lengthy) comments under:
https://sourceware.org/pipermail/cygwin-patches/2020q4/010829.html

and I have copied them below, so please clarify if the below is not what you want?

> I'm not sure how you generated this email.  But sending the patch inline 
> (using 'git-send-email'?), rather than as an attachment makes it a lot easier
> to make review comments inline.
It's right from git send-email which creates the MIME sections in the patches:

"
...
  X-Mailer: git-send-email 2.29.2
...
  This is a multi-part message in MIME format.
  --------------2.29.2
  Content-Type: text/plain; charset=UTF-8; format=fixed
  Content-Transfer-Encoding: 8bit

  ---
  winsup/doc/specialnames.xml | 2100 +++++++++++++++++++++++++++++++++++
  1 file changed, 2100 insertions(+)

  --------------2.29.2
  Content-Type: text/x-patch; name="0001-specialnames.xml-add-proc-5-Cygwin-man- 
page.patch"
  Content-Transfer-Encoding: 8bit
  Content-Disposition: attachment; 
filename="0001-specialnames.xml-add-proc-5-Cygwin-man-page.patch"
..."

so it may be down to how your MUA displays those, and we are running the same 
release of TB, which on mine shows the patch "inline" after a filename separator 
like any other text attachment.
Ctrl-U displays email source including headers; search for 'User-Agent:' or 
'Mailer:' in headers.

 > A few lines have trailing whitespace, which should be removed.

Not in the patched lines, which appear in *RED* in git diff, and I just 
rechecked that they are in context lines, so I left them alone for separate 
cleanup, as I have been chastised on previous occasions. ;^>

 >> diff --git a/winsup/doc/specialnames.xml b/winsup/doc/specialnames.xml
 >> index a1f7401e16b9..6b86187f39e9 100644
 >> --- a/winsup/doc/specialnames.xml
 >> +++ b/winsup/doc/specialnames.xml
 >> @@ -486,6 +486,2106 @@ one in Linux, but it provides significant 
capabilities. The
 >>  <systemitem>procps</systemitem> package contains several utilities
 >>  that use it.
 >>  </para>
 >> +  <refentry id="proc">
 >> +    <!-- from Linux manpages project proc(5)
 >
 > Should this say 'based on', to make it clear this isn't a literal copy of that?

K

 >> +
 >> +    <refentryinfo><date>2020-11-11</date></refentryinfo>
 >> +    <refmeta>
 >> +      <refentrytitle>proc</refentrytitle>
 >> +      <manvolnum>5</manvolnum>
 >> +      <refmiscinfo class='date'>2020-11-11</refmiscinfo>
 >> +      <refmiscinfo class='source'>Cygwin</refmiscinfo>
 >> +      <refmiscinfo class='manual'>Cygwin User's Manual</refmiscinfo>
 >> +    </refmeta>
 >
 > I think the <date>s here should be omitted (rather than hoping someone 
remembers to update them when the relevant content is updated), which causes the 
build date to be used.

That's the point - showing how current the information is, not when it was last 
built.

 >> +      <varlistentry>
 >> +        <term><filename>/proc/loadavg</filename></term>
 >> +        <listitem>
 >> +          <para>
 >> +            The first three fields in this file are load average figures
 >> +            giving the number of jobs in the run queue (state R) or waiting
 >> +            for disk I/O (state D) averaged over 1, 5, and 15 minutes.
 >> +        They are the same as the load average numbers given by
 >
 > As mentioned by Corinna previously, we don't know the 'D' state, so the 
loadavg is just computed from the run queue length.

Code dispatches on 'D' state so I thought that statement was mistaken: will remove.

 >> +      <varlistentry>
 >> +        <term><filename>/proc/registry</filename></term>
 >> +        <listitem>
 >> +          <para>
 >> +            Under Windows, this directory contains subdirectories for
 >> +            registry paths, keys, and subkeys, and files named for registry
 >> +            values which contain registry data, for the current process.
 >> +          </para>
 >> +
 >
 > 'Under Windows' seems redundant :)

Will change to 'Cygwin' as the intent is to clarify this is a custom variation, 
not to be expected on Linux or Unix variations.

 >> +      <varlistentry>
 >> +        <term><filename>/proc/version</filename></term>
 >> +        <listitem>
 >> +          <para>
 >> +            This string identifies the kernel version that is currently
 >
 > Kernel?

Missed another edit to 'Cygwin'.

 >> +    <para>
 >> +      Many files contain strings (e.g., the environment and command
 >> +      line) that are in the internal format, with subfields terminated
 >> +      by null bytes (&apos;&bsol;0&apos;).
 >> +      When inspecting such files, you may find that the results are
 >> +      more readable if you use a command of the following form to
 >> +      display them:
 >> +
 >> +      <screen>
 >> +        <prompt>$</prompt> <userinput>cat -A <emphasis 
remap='I'>file</emphasis></userinput>
 >> +      </screen>
 >> +    </para>
 >> +
 >> +    <para>
 >> +      This manual page is incomplete, possibly inaccurate, and is the kind
 >> +      of thing that needs to be updated very often.
 >> +    </para>
 >
 > The above should be in a section 'BUGS' ?

It looks like .SH Notes and Copyright have been docliftered, edited into, or 
generated in the wrong place: I didn't notice that and will check the ins and outs.
In my proc.5 collection, these comments are mainly under .SH Notes except RH 
uses Caveats, not really appropriate for free/libre/open systems, but Bugs might be.

 >> +
 >> +    <refsect1 id='proc-colophon'><title>Colophon</title>
 >> +      <para>
 >> +    This page is part of the <emphasis remap='I'>Cygwin</emphasis> project.
 >
 > I'm guessing these 'remap' attributes are doclifter detritus and can be 
discarded.

I was hoping as they are in Docbook that they were rendering hints that would 
maintain the original format. So can I safely eliminate them?

 >> +    A description of the project, information about reporting bugs, and the
 >> +    latest documentation, can be found on
 >> +    <ulink
 >> +    url="https://cygwin.com/docs.html">the Cygwin project web pages</ulink>.
 >> +      </para>
 >> +    </refsect1>
 >
 > It would be nice to include this colophon on all our manpages, but that 
probably requires more effort.

Perhaps in other patches including trailing space cleanups?

 >> There also seem to be some docbook processing quirks which could bear 
further investigation:
 >
 > A lot that seem to result from the purely declarative syntax of the tags, 
that are not easy to ameliorate: I've dug, delved, tried and backed out changes 
and extra .xsl rules for some renderings.
 >
 >> The copyright section from legal.xml doesn't seem to make it into the proc.5 
manpage, unlike all the others.
 >
 > I only checked specialnames not the utility manpages as the content is so 
different, so I will check there to see how that works.
 >
 >> The proc.5 section appears as a manpage, and in the pdf output, but not in 
the html output.
 >
 > I'll see what differs between the HTML and PDF rendering, and the UG utility 
HTML manpages, but suspect content and paper dependent LaTeX and/or TeX 
intermediates for PDFs may be one difference.
 > [I prefer declarative epub xhtml+xml formats that are not pre-rendered onto 
A4/Letter substrates and that obey my CSS preferences on each of my devices.]

Colophon with embedded <ulink... truncated Copyright section to only the 
heading, and included link endnote appeared as final Notes section, so removed 
Colophon section and Copyright section appears complete.

Have not yet removed remap hints as unsure if they are used or useful.

Attached rendered outputs FYI.

Will regenerate and email patches.

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] proc(5) man page
  2020-12-01  0:57   ` Brian Inglis
@ 2020-12-01  9:55     ` Corinna Vinschen
  2020-12-01 16:49       ` Brian Inglis
  0 siblings, 1 reply; 8+ messages in thread
From: Corinna Vinschen @ 2020-12-01  9:55 UTC (permalink / raw)
  To: cygwin-patches

On Nov 30 17:57, Brian Inglis wrote:
> On 2020-11-30 03:47, Corinna Vinschen wrote:
> > On Nov 24 23:49, Brian Inglis wrote:
> > > Brian Inglis (2):
> > >    specialnames.xml: add proc(5) Cygwin man page
> > >    winsup/doc/Makefile.in: create man5 dir and install generated proc.5
> > > 
> > >   winsup/doc/Makefile.in      |    4 +
> > >   winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
> > >   2 files changed, 2098 insertions(+)
> 
> > It would be helpful if you could outline the changes from v1.
> 
> Those were fairly minor fixes to content and some processing outlined in the
> (lengthy) responses to Jon's (lengthy) comments under:
> https://sourceware.org/pipermail/cygwin-patches/2020q4/010829.html
> 
> and I have copied them below, so please clarify if the below is not what you want?

I was after a short list with bullet points, ratehr than copying
an email I have in my inbox anyway :}

Jon, can you please take another look, too?


Thanks,
Corinna

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] proc(5) man page
  2020-12-01  9:55     ` Corinna Vinschen
@ 2020-12-01 16:49       ` Brian Inglis
  2020-12-04 12:09         ` Corinna Vinschen
  0 siblings, 1 reply; 8+ messages in thread
From: Brian Inglis @ 2020-12-01 16:49 UTC (permalink / raw)
  To: cygwin-patches

On 2020-12-01 02:55, Corinna Vinschen wrote:
> On Nov 30 17:57, Brian Inglis wrote:
>> On 2020-11-30 03:47, Corinna Vinschen wrote:
>>> On Nov 24 23:49, Brian Inglis wrote:
>>>> Brian Inglis (2):
>>>>     specialnames.xml: add proc(5) Cygwin man page
>>>>     winsup/doc/Makefile.in: create man5 dir and install generated proc.5
>>>>
>>>>    winsup/doc/Makefile.in      |    4 +
>>>>    winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
>>>>    2 files changed, 2098 insertions(+)
>>
>>> It would be helpful if you could outline the changes from v1.
>>
>> Those were fairly minor fixes to content and some processing outlined in the
>> (lengthy) responses to Jon's (lengthy) comments under:
>> https://sourceware.org/pipermail/cygwin-patches/2020q4/010829.html
>>
>> and I have copied them below, so please clarify if the below is not what you want?
> 
> I was after a short list with bullet points, ratehr than copying
> an email I have in my inbox anyway :}
> 
> Jon, can you please take another look, too?

* patches are sent directly from git send-email
* trailing whitespace only in Makefile.in context lines so left as is
* comment changed to "based on" Linux manpages project proc(5)
* dates retained to show how current content is, rather than when last built
* /proc/loadavg 'D' state mention removed
* /proc/registry Windows changed to Cygwin to clarify this variation
* /proc/version kernel changed to Cygwin
* Notes subsection missing title and Copyright subsection not included in 
standalone man page due to Colophon subsection messing up man rendering
* removed Colophon subsection and Notes reappears properly and Copyright is 
included; other system show these under Notes except RH uses Caveats
* retain remap attributes as Docbook rendering hints

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] proc(5) man page
  2020-12-01 16:49       ` Brian Inglis
@ 2020-12-04 12:09         ` Corinna Vinschen
  0 siblings, 0 replies; 8+ messages in thread
From: Corinna Vinschen @ 2020-12-04 12:09 UTC (permalink / raw)
  To: cygwin-patches

On Dec  1 09:49, Brian Inglis wrote:
> On 2020-12-01 02:55, Corinna Vinschen wrote:
> > On Nov 30 17:57, Brian Inglis wrote:
> > > On 2020-11-30 03:47, Corinna Vinschen wrote:
> > > > On Nov 24 23:49, Brian Inglis wrote:
> > > > > Brian Inglis (2):
> > > > >     specialnames.xml: add proc(5) Cygwin man page
> > > > >     winsup/doc/Makefile.in: create man5 dir and install generated proc.5
> > > > > 
> > > > >    winsup/doc/Makefile.in      |    4 +
> > > > >    winsup/doc/specialnames.xml | 2094 +++++++++++++++++++++++++++++++++++
> > > > >    2 files changed, 2098 insertions(+)
> > > 
> > > > It would be helpful if you could outline the changes from v1.
> > > 
> > > Those were fairly minor fixes to content and some processing outlined in the
> > > (lengthy) responses to Jon's (lengthy) comments under:
> > > https://sourceware.org/pipermail/cygwin-patches/2020q4/010829.html
> > > 
> > > and I have copied them below, so please clarify if the below is not what you want?
> > 
> > I was after a short list with bullet points, ratehr than copying
> > an email I have in my inbox anyway :}
> > 
> > Jon, can you please take another look, too?
> 
> * patches are sent directly from git send-email
> * trailing whitespace only in Makefile.in context lines so left as is
> * comment changed to "based on" Linux manpages project proc(5)
> * dates retained to show how current content is, rather than when last built
> * /proc/loadavg 'D' state mention removed
> * /proc/registry Windows changed to Cygwin to clarify this variation
> * /proc/version kernel changed to Cygwin
> * Notes subsection missing title and Copyright subsection not included in
> standalone man page due to Colophon subsection messing up man rendering
> * removed Colophon subsection and Notes reappears properly and Copyright is
> included; other system show these under Notes except RH uses Caveats
> * retain remap attributes as Docbook rendering hints
> 
> -- 
> Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
> 
> This email may be disturbing to some readers as it contains
> too much technical detail. Reader discretion is advised.
> [Data in binary units and prefixes, physical quantities in SI.]

Thanks, pushed.


Corinna

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-12-04 12:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-25  6:49 [PATCH v2 0/2] proc(5) man page Brian Inglis
2020-11-25  6:49 ` [PATCH v2 1/2] specialnames.xml: add proc(5) Cygwin " Brian Inglis
2020-11-25  6:49 ` [PATCH v2 2/2] winsup/doc/Makefile.in: create man5 dir and install proc.5 Brian Inglis
2020-11-30 10:47 ` [PATCH v2 0/2] proc(5) man page Corinna Vinschen
2020-12-01  0:57   ` Brian Inglis
2020-12-01  9:55     ` Corinna Vinschen
2020-12-01 16:49       ` Brian Inglis
2020-12-04 12:09         ` Corinna Vinschen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).