Index of /pulse/code
Name Last modified Size Description
Parent Directory -
Makefile 28-Apr-2005 19:42 280
README 28-Apr-2005 19:42 1.8K
detect_deadlock.c 28-Apr-2005 19:42 812
glibc-2.3.2-dd.patch 28-Apr-2005 19:42 9.2K
glibc_2.3.2.ds1-16.d..> 28-Apr-2005 19:42 1.7M
glibc_2.3.2.ds1-16.dsc 28-Apr-2005 19:42 1.6K
glibc_2.3.2.ds1.orig..> 28-Apr-2005 19:42 13M
linux-2.6.8.1-dd.patch 28-Apr-2005 19:42 63K
pulse.c 28-Apr-2005 19:42 510
This directory contains the code for Pulse, a dynamic deadlock detection
mechanism for Linux kernel v2.6.8.1. In our implementation, we modified
Linux kernel 2.6.8.1 and the NPTL library in glibc-2.3.2.
linux-2.6.8.1-dd.patch: A patch for Linux 2.6.8.1 that implements Pulse.
To install it, you need to download the original 2.6.8.1 kernel source
from kernel.org, and then apply this patch by doing:
patch -p0 < linux-2.6.8.1-dd.patch
glibc_2.3.2.ds1-16.dsc, glibc_2.3.2.ds1.orig.tar.gz, and
glibc_2.3.2.ds1-16.diff.gz: These three files constitute the Debian
glibc_2.3.2.ds1-16 source package, which can be downloaded from the web.
To unpack and install, do the following.
gunzip glibc_2.3.2.ds1-16.diff.gz
tar xvfz glibc_2.3.2.ds1.orig.tar.gz
patch -p0 <glibc_2.3.2.ds1-16.diff
cd glibc_2.3.2.ds1
chmod +x debian/rules
debian/rules unpack patch
Now, cd build-tree and you'll see glibc-2.3.2, which contains the glibc
source. You can apply the glibc-2.3.2 deadlock detection patch as follows:
patch -p0 < glibc-2.3.2-dd.patch
Finally, to compile the modified glibc's NPTL library, first create a
build directory:
mkdir glibc-build
cd glibc-build
configure --prefix=/usr --with-headers=<path_to_the_patched_linux_source_dir>/include --enable-add-ons=nptl --with-tls
make
Note that make will compile every component of glibc, so it's going to
take a long time (you can actually stop the compilation as soon as nptl
has been compiled). Later on, if you modify NPTL and want to re-compile it,
you can simple do "make subdirs=nptl".
After the compilation, nptl/libpthread.so is the new version of the NPTL
library. Copy it to /lib/tls/ (and thus overwrite the original
libpthread.so there). Remember to chmod o+rx libpthread.so.0 if you encounter
the __errno GLIBC_2.0 symbol problem when using the library.