I have already noticed this issue and have emailed Volkerding about it, but he hasn't replied to me (sometimes he does not reply but _does_ read the email and solves the issue; it means nothing).
Previous posts already summarized the situation well more or less. In previous versions of glibc, LinuxThreads was included. That means libraries, include files _and_ manpages explaining the different threading functions with comments about the specifics of LinuxThreads, which had a good amount of POSIX nonconformances. With the new glibc, every bit of LinuxThreads was removed, including the manpages. The new implementation, NPTL, is much more POSIX conformant. According to "man 7 pthreads", the only nonconformance with POSIX if you use a recent kernel is that "Threads [in the same process, I suppose] do not share a common nice value." As for the rest, you can asssume POSIX behaviour.
This means that the POSIX manpages (manual sections ending with 'p') are a good reference for the pthread functions, but where are the POSIX manpages? They are present in the man-pages source tarball, but they are removed from the resulting package by the SlackBuild script. Every *p section is removed, and the POSIX pthread manpages are located in section 3p. Just download the source tarball and install them yourself.
http://www.kernel.org/pub/linux/docs/manpages/
I used a the following posix-man-pages.slackbuild script to create a posix-man-pages package when I downloaded man-pages-2.63.tar.bz2:
Code:
#!/usr/bin/env bash
# Exit on errors
set -e
# Set sane umask
umask 022
# Set language (this helps sometimes)
export LANG=C
# Set a basic PATH
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Initial variables
NAME=man-pages # Program name
PNAME=posix-man-pages # Package name
VERSION=2.63 # Program version
PVERSION=$VERSION # Package version (remove dashes if present)
ARCH=${ARCH:-noarch} # Package architecture
BUILD=${BUILD:-1rg} # Build number plus packager initials
SRCDIR=$NAME-$VERSION # Source directory name (usually $NAME-$VERSION)
SRCTAR=$NAME-$VERSION.tar.bz2 # Source tarball name
# Check everything is properly set before starting
if [ -z "$NAME" -o -z "$PNAME" -o -z "$VERSION" -o -z "$PVERSION" -o -z "$SRCDIR" -o -z "$SRCTAR" ]; then
echo "Missing initial parameters" 1>&2
exit 1
fi
CWD=`pwd`
TMP=${TMP:-/tmp} # Location to compile the source
PKG=$TMP/package-$NAME # Location to build the package (use "package-$NAME" to avoid poss. conflicts)
# Clear sandbox directory
rm -rf $PKG
mkdir -p $PKG
# Extract tarball
cd $TMP
case $SRCTAR in
*.tar.gz | *.tgz ) TAROPTS="xvzf" ;;
*.tar.bz2 | *.tbz2 ) TAROPTS="xvjf" ;;
* ) echo "Unknown tarball format" 1>&2 ; exit 1 ;;
esac
tar $TAROPTS $CWD/$SRCTAR
cd $SRCDIR
# Correct general permissions/ownership
chown -R 0:0 .
find . -print0 | xargs -0r chmod a+Xr,go-w,u+w
# Apply patches if present
if ls $CWD/patches/*.patch &>/dev/null; then
for patch in $CWD/patches/*.patch; do
patch -p1 <$patch
done
fi
# Build and installation steps, usually ./configure, make, make install
mkdir -p $PKG/usr/man
cp -a man*p $PKG/usr/man
# Compress man pages
find $PKG -type f -path '*/man/*' -print0 | xargs -0r gzip --best
find $PKG -type l -path '*/man/*' -print0 | while read -d '' symlink; do
ln -s "$( readlink "$symlink" ).gz" "${symlink}.gz"
rm "$symlink"
done
# Create package docs
mkdir -p $PKG/usr/doc/$PNAME-$PVERSION
cat $CWD/$PNAME.slackbuild >$PKG/usr/doc/$PNAME-$PVERSION/$PNAME.slackbuild
cp -a Changes* [A-Z][A-Z][A-Z]* $PKG/usr/doc/$PNAME-$PVERSION
#
# FIX ANY POSSIBLE PROBLEM HERE, BEFORE CREATING THE PACKAGE
#
# Add package description
if [ -e $CWD/slack-desc ]; then
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
fi
# Add install script (usually it does not exist)
if [ -e $CWD/doinst.sh ]; then
cat $CWD/doinst.sh >> $PKG/install/doinst.sh
fi
# Create package
cd $PKG
makepkg -l y -c n $CWD/$PNAME-$PVERSION-$ARCH-$BUILD.tgz
# Clean up the compilation and package directories
rm -rf $PKG
cd $TMP
rm -rf $SRCDIR
And the following slack-desc file:
Code:
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
posix-man-pages: posix-man-pages (POSIX online manual pages)
posix-man-pages:
posix-man-pages: These are the manpages from sections 0p, 1p and 3p, which describe
posix-man-pages: POSIX headers, commands and APIs. These are not included in the
posix-man-pages: man-pages package.
posix-man-pages:
posix-man-pages:
posix-man-pages:
posix-man-pages:
posix-man-pages:
posix-man-pages: