diff --git a/Doc/Makefile b/Doc/Makefile
index 12851f0..4881c3f 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -112,7 +112,7 @@
     libcd.tex libfl.tex libfm.tex libgl.tex libimgfile.tex libsun.tex \
     libxdrlib.tex libimghdr.tex \
     librestricted.tex librexec.tex libbastion.tex \
-    libformatter.tex liboperator.tex libsoundex.tex
+    libformatter.tex liboperator.tex libsoundex.tex libresource.tex
 
 # Library document
 lib.dvi: $(LIBFILES)
diff --git a/Doc/lib.tex b/Doc/lib.tex
index c6d203d..db027a9 100644
--- a/Doc/lib.tex
+++ b/Doc/lib.tex
@@ -125,6 +125,7 @@
 \input{libtermios}
 \input{libfcntl}
 \input{libposixfile}
+\input{libresource}
 \input{libsyslog}
 
 \input{libpdb}			% The Python Debugger
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex
index c6d203d..db027a9 100644
--- a/Doc/lib/lib.tex
+++ b/Doc/lib/lib.tex
@@ -125,6 +125,7 @@
 \input{libtermios}
 \input{libfcntl}
 \input{libposixfile}
+\input{libresource}
 \input{libsyslog}
 
 \input{libpdb}			% The Python Debugger
diff --git a/Doc/lib/libresource.tex b/Doc/lib/libresource.tex
new file mode 100644
index 0000000..ff78025
--- /dev/null
+++ b/Doc/lib/libresource.tex
@@ -0,0 +1,131 @@
+\section{Built-in Module \sectcode{resource}}
+
+\bimodindex{resource}
+This module provides basic mechanisms for measuring and controlling
+system resources utilized by a program.
+
+Symbolic constants are used to specify particular system resources and
+to request usage information about either the current process or its
+children. 
+
+Resources usage can be limited using the \code{setrlimit} function
+described below. Each resource is controlled by a pair of limits: a
+soft limit and a hard limit. The soft limit is the current limit, and
+may be lowered or raised by a process over time. The soft limit can
+never exceed the hard limit. The hard limit can be lowered to any
+value greater than the soft limit, but not raised. (Only process with
+the effective UID of the super-user can raise a hard limit).
+
+The specific resources that can be limited are system dependent. They
+are described in the \code{getrlimit} man page. Typical resources
+include:
+
+\begin{description}
+
+\item[RLIMIT_CORE]
+The maximum size (in bytes) of a core file that the current process
+can create.
+
+\item[RLIMIT_CPU]
+The maximum amount of CPU time (in seconds) that a process can use. If
+this limit is exceeded, a \code{SIGXCPU} signal is sent to the
+process. (See the \code{signal} module documentation for information
+about how to catch this signal and do something useful, e.g. flush
+open files to disk.)
+
+\end{description}
+
+\begin{datadesc}{RLIMIT_*}
+  These symbols define resources whose consumption can be controlled
+  using the \code{setrlimit} and \code{getrlimit} functions defined
+  below. The values of these symbols are exactly the constants used
+  by C programs.
+
+  The \UNIX{} man page for \file{getrlimit} lists the available
+  resources. Note that not all systems use the same symbol or same
+  value to denote the same resource.
+\end{datadesc}
+
+\begin{datadesc}{RUSAGE_*}
+  These symbols are passed to the \code{getrusage} function to specify
+  whether usage information is being request for the current process,
+  \code{RUSAGE_SELF} or its child processes \code{RUSAGE_CHILDREN}. On
+  some system, \code{RUSAGE_BOTH} requests information for both.
+\end{datadesc}
+
+\begin{datadesc}{error}
+  The functions described below may raise this error if the underlying
+  system call failures unexpectedly.
+\end{datadesc}
+
+The resource module defines the following functions:
+
+\begin{funcdesc}{getrusage}{who}
+  This function returns a large tuple that describes the resources
+  consumed by either the current process or its children, as specified
+  by the \var{who} parameter. The elements of the return value each
+  describe how a particular system resource has been used, e.g. amount
+  of time spent running is user mode or number of times the process was
+  swapped out of main memory. Some values are dependent on the clock
+  tick internal, e.g. the amount of memory the process is using.
+
+  The first two elements of the return value are floating point values
+  representing the amount of time spent executing in user mode and the
+  amount of time spent executing in system mode, respectively. The
+  remaining values are integers. Consult the \code{getrusage} man page
+  for detailed information about these values. A brief summary is
+  presented here:
+
+\begin{tabular}{rl}
+	\emph{offset} &	\emph{resource} \\
+	0  &	time in user mode (float) \\
+	1  &	time in system mode (float) \\
+	2  &	maximum resident set size \\
+	3  &	shared memory size \\
+	4  &	unshared memory size \\
+	5  &	unshared stack size \\
+	6  &	page faults not requiring I/O \\
+	7  &	page faults requiring I/O \\
+	8  &	number of swap outs \\
+	9  &	block input operations \\
+	10 &	block output operations \\
+	11 &	messages sent \\
+	12 &	messages received \\
+	13 &	signals received \\
+	14 &	voluntary context switches \\
+	15 &	involuntary context switches \\
+\end{tabular}
+
+  This function will raise a ValueError if an invalid \var{who}
+  parameter is specified. It may also raise a \code{resource.error}
+  exception in unusual circumstances.
+\end{funcdesc}
+
+\begin{funcdesc}{getpagesize}{}
+  Returns the number of bytes in a system page. (This need not be the
+  same as the hardware page size.) This function is useful for
+  determining the number of bytes of memory a process is using. The
+  third element of the tuple returned by \code{getrusage} describes
+  memory usage in pages; multiplying by page size produces number of
+  bytes. 
+\end{funcdesc}
+
+\begin{funcdesc}{getrlimit}{resource}
+  Returns a tuple \code{(\var{soft}, \var{hard})} with the current
+  soft and hard limits of \var{resource}. Raises ValueError if
+  an invalid resource is specified, or \code{resource.error} if the
+  underyling system call fails unexpectedly.
+\end{funcdesc}
+
+\begin{funcdesc}{setrlimit}{resource\, limits}
+  Sets new limits of consumption of \var{resource}. The \var{limits}
+  argument must be a tuple \code{(\var{soft}, \var{hard})} of two
+  integers describing the new limits. A value of -1 can be used to
+  specify the maximum possible upper limit.
+
+  Raises ValueError if an invalid resource is specified, if the new
+  soft limit exceeds the hard limit, or if a process tries to raise its
+  hard limit (unless the process has an effective UID of
+  super-user). Can also raise a \code{resource.error} if the
+  underyling system call fails.
+\end{funcdesc}
diff --git a/Doc/libresource.tex b/Doc/libresource.tex
new file mode 100644
index 0000000..ff78025
--- /dev/null
+++ b/Doc/libresource.tex
@@ -0,0 +1,131 @@
+\section{Built-in Module \sectcode{resource}}
+
+\bimodindex{resource}
+This module provides basic mechanisms for measuring and controlling
+system resources utilized by a program.
+
+Symbolic constants are used to specify particular system resources and
+to request usage information about either the current process or its
+children. 
+
+Resources usage can be limited using the \code{setrlimit} function
+described below. Each resource is controlled by a pair of limits: a
+soft limit and a hard limit. The soft limit is the current limit, and
+may be lowered or raised by a process over time. The soft limit can
+never exceed the hard limit. The hard limit can be lowered to any
+value greater than the soft limit, but not raised. (Only process with
+the effective UID of the super-user can raise a hard limit).
+
+The specific resources that can be limited are system dependent. They
+are described in the \code{getrlimit} man page. Typical resources
+include:
+
+\begin{description}
+
+\item[RLIMIT_CORE]
+The maximum size (in bytes) of a core file that the current process
+can create.
+
+\item[RLIMIT_CPU]
+The maximum amount of CPU time (in seconds) that a process can use. If
+this limit is exceeded, a \code{SIGXCPU} signal is sent to the
+process. (See the \code{signal} module documentation for information
+about how to catch this signal and do something useful, e.g. flush
+open files to disk.)
+
+\end{description}
+
+\begin{datadesc}{RLIMIT_*}
+  These symbols define resources whose consumption can be controlled
+  using the \code{setrlimit} and \code{getrlimit} functions defined
+  below. The values of these symbols are exactly the constants used
+  by C programs.
+
+  The \UNIX{} man page for \file{getrlimit} lists the available
+  resources. Note that not all systems use the same symbol or same
+  value to denote the same resource.
+\end{datadesc}
+
+\begin{datadesc}{RUSAGE_*}
+  These symbols are passed to the \code{getrusage} function to specify
+  whether usage information is being request for the current process,
+  \code{RUSAGE_SELF} or its child processes \code{RUSAGE_CHILDREN}. On
+  some system, \code{RUSAGE_BOTH} requests information for both.
+\end{datadesc}
+
+\begin{datadesc}{error}
+  The functions described below may raise this error if the underlying
+  system call failures unexpectedly.
+\end{datadesc}
+
+The resource module defines the following functions:
+
+\begin{funcdesc}{getrusage}{who}
+  This function returns a large tuple that describes the resources
+  consumed by either the current process or its children, as specified
+  by the \var{who} parameter. The elements of the return value each
+  describe how a particular system resource has been used, e.g. amount
+  of time spent running is user mode or number of times the process was
+  swapped out of main memory. Some values are dependent on the clock
+  tick internal, e.g. the amount of memory the process is using.
+
+  The first two elements of the return value are floating point values
+  representing the amount of time spent executing in user mode and the
+  amount of time spent executing in system mode, respectively. The
+  remaining values are integers. Consult the \code{getrusage} man page
+  for detailed information about these values. A brief summary is
+  presented here:
+
+\begin{tabular}{rl}
+	\emph{offset} &	\emph{resource} \\
+	0  &	time in user mode (float) \\
+	1  &	time in system mode (float) \\
+	2  &	maximum resident set size \\
+	3  &	shared memory size \\
+	4  &	unshared memory size \\
+	5  &	unshared stack size \\
+	6  &	page faults not requiring I/O \\
+	7  &	page faults requiring I/O \\
+	8  &	number of swap outs \\
+	9  &	block input operations \\
+	10 &	block output operations \\
+	11 &	messages sent \\
+	12 &	messages received \\
+	13 &	signals received \\
+	14 &	voluntary context switches \\
+	15 &	involuntary context switches \\
+\end{tabular}
+
+  This function will raise a ValueError if an invalid \var{who}
+  parameter is specified. It may also raise a \code{resource.error}
+  exception in unusual circumstances.
+\end{funcdesc}
+
+\begin{funcdesc}{getpagesize}{}
+  Returns the number of bytes in a system page. (This need not be the
+  same as the hardware page size.) This function is useful for
+  determining the number of bytes of memory a process is using. The
+  third element of the tuple returned by \code{getrusage} describes
+  memory usage in pages; multiplying by page size produces number of
+  bytes. 
+\end{funcdesc}
+
+\begin{funcdesc}{getrlimit}{resource}
+  Returns a tuple \code{(\var{soft}, \var{hard})} with the current
+  soft and hard limits of \var{resource}. Raises ValueError if
+  an invalid resource is specified, or \code{resource.error} if the
+  underyling system call fails unexpectedly.
+\end{funcdesc}
+
+\begin{funcdesc}{setrlimit}{resource\, limits}
+  Sets new limits of consumption of \var{resource}. The \var{limits}
+  argument must be a tuple \code{(\var{soft}, \var{hard})} of two
+  integers describing the new limits. A value of -1 can be used to
+  specify the maximum possible upper limit.
+
+  Raises ValueError if an invalid resource is specified, if the new
+  soft limit exceeds the hard limit, or if a process tries to raise its
+  hard limit (unless the process has an effective UID of
+  super-user). Can also raise a \code{resource.error} if the
+  underyling system call fails.
+\end{funcdesc}
