diff options
Diffstat (limited to 'devel/linuxthreads/files/README.FreeBSD')
-rw-r--r-- | devel/linuxthreads/files/README.FreeBSD | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/devel/linuxthreads/files/README.FreeBSD b/devel/linuxthreads/files/README.FreeBSD new file mode 100644 index 000000000000..705e254b43ed --- /dev/null +++ b/devel/linuxthreads/files/README.FreeBSD @@ -0,0 +1,101 @@ +Some brief notes: + +1) Consider updating your FreeBSD source to 3.X after January 27, +1999 or to 4.0-current after January 25, 1999. If you insist on +using older source, be sure it is at least 3.0-current after +January 12, 1999. + +If you are using older source: + +You must have compiled your kernel/world with the option +COMPAT_LINUX_THREADS. Optionally, you can also have compiled +with the option VM_STACK. This package will not run properly +without COMPAT_LINUX_THREADS. If you have not done so, add +-DCOMPAT_LINUX_THREADS to the CFLAGS, and also to COPTFLAGS in +your /etc/make.conf file (optionally add -DVM_STACK also), and +do a "make world" and remake and reinstall the kernel. + +If you are using new source: + +Everything is included by default for i386 systems. + +2) You should consider enabling the posix priority extensions +in your kernel. Adding the following to your kernel config +file before you execute config and before you remake the kernel +should suffice. + +options "P1003_1B" +options "_KPOSIX_PRIORITY_SCHEDULING" +options "_KPOSIX_VERSION=199309L" + +These options are not manditory. + +3) If you plan on having lots of threads, check the sysctl value +of kern.maxproc. Each kernel thread counts against maxproc. You +can increase maxproc by changing the MAXUSERS value in your kernel +config file. maxproc is set at 20 + 16 * MAXUSERS. + +4) This package does not currently work on a normal SMP machine, +since the flags needed for the rfork function are not enabled. +More work needs to be done on the kernel. However, if wish +to try it, take a look at http://www.freebsd.org/~luoqi/pmap.diff . + +5) DO NOT link with the libc_r library (by default you won't). +Don't use the option -pthread when compiling/linking. It pulls +in libc_r. + +6) Compile your applications that use Linux Threads with either of +the following (equivalent) command line options: + + -D_THREAD_SAFE -DLINUXTHREADS -lpthread +or: + -D_THREAD_SAFE -DLINUXTHREADS -kthread + + +7) You should link with the normal FreeBSD libc directory (by +default you will). Be aware of the following issues: + + a) Not all libc calls are thread safe. Many are. + In particular gmtime, localtime, etc are not thread + safe. In general, where the pthreads spec calls for "_r" + functions, these are either not provided, or if provided + are not thread safe (in most cases) and the related + libc calls are not thread safe. This differs somewhat + from the FreeBSD libc_r library, where some, but not + all, of these functions are both thread safe and have + "_r" versions. + + b) None of the libc calls that are supposed to be + cancellation points are implemented as such. There + is a lot of work that needs to be done on libc before + cancellation points will work correctly. Therefore, + while linux threads has the cancel functions implemented, + deferred cancellation will not really do anything, since + the co-operation needed from libc is not there. + +8) There is a call implemented for FreeBSD (see stack.c): + +int _pthread_setstackspacing(size_t spacing, size_t guardsize) + +By default, Linux Threads spaces thread stacks 2MB apart, and +makes each thread stack an "autogrow" stack. If you know that +your maximum stack for any thread can be less than that, you +can decrease the spacing by calling this function. It must +be called before any other pthreads function calls, and it +will only succeed the first time its called. Note that the +pthread TLS and the guardsize will be included in the spacing. +ie. maximum stack size = spacing - TLSpagesize - guardsize. + +The spacing must be a power of 2 times the pagesize (and if its +not, it will be rounded up to the next highest value that is). + +9) If you want to link your ports or other programs that use +GNU configure with pthreads, check the documentation of the +program. If the configure file hasn't been customized too +much for FreeBSD libc_r, and if it explicitly supports posix +threads, then something like the following works in a +number of cases (exact details may vary case to case): + +CFLAGS="-DLINUXTHREADS -D_THREAD_SAFE" ./configure --with-threads=posix + +10) Read file README. |