Check-in Number:
|
57 | |
Date: |
2000-Jun-24 18:09:44 (local)
2000-Jun-24 16:09:44 (UTC) |
User: | rse |
Branch: | |
Comment: |
*** empty log message *** |
Tickets: |
|
Inspections: |
|
Files: |
|
ossp-pkg/pth/PORTING -> 1.174
*** /dev/null Sat Nov 23 01:53:59 2024
--- - Sat Nov 23 01:54:06 2024
***************
*** 0 ****
--- 1,190 ----
+ ____ _ _
+ | _ \| |_| |__ ``A good magician never reveals
+ | |_) | __| '_ \ his secret; the unbelievable trick
+ | __/| |_| | | | becomes simple and obvious once it is
+ |_| \__|_| |_| explained. So too with UNIX.''
+
+ GNU Pth - The GNU Portable Threads
+
+ PORTING
+ =======
+
+ SUCCESSFULLY TESTED PLATFORMS
+
+ The Pth package was successfully tested on the following platforms
+ (and should automatically adjust to other platforms, of course):
+
+ __PLATFORM_ID_______________________ __MACHINE_CONTEXT__ __STACK__ __VERSION__
+ i686-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.3.0 [DEV]
+ i586-pc-freebsd3.1 | sjlj/ssjlj/sas | down | 1.3.3
+ i686-pc-freebsd3.1 | sjlj/ssjlj/sas | down | 1.3.0
+ i586-pc-freebsd3.2 | sjlj/ssjlj/sas | down | 1.2.0
+ i686-pc-freebsd3.2 | sjlj/ssjlj/sas | down | 1.3.5
+ i386-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.1
+ i486-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.1
+ i586-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.3a5
+ i686-pc-freebsd3.3 | sjlj/ssjlj/sas | down | 1.2.0
+ i386-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.3a2
+ i586-pc-freebsd3.4 | sjlj/ssjlj/sas | down | 1.2.2
+ i686-pc-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3.0
+ i586-pc-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3b2
+ i586-pc-freebsd5.0 | sjlj/ssjlj/sas | down | 1.3.4
+ i686-pc-freebsd2.2.8 | sjlj/ssjlj/sas | down | 1.2.0
+ alpha-unknown-freebsd4.0 | sjlj/ssjlj/sas | down | 1.3.0
+ alpha-unknown-freebsd5.0 | sjlj/ssjlj/sas | down | 1.3.5
+ powerpc-unknown-netbsd | sjlj/ssjlj/sas | down | 1.3.2
+ i386-unknown-netbsd1.4 | sjlj/ssjlj/sas | down | 1.3.0
+ i386-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3.0
+ sparc-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2b8
+ alpha-unknown-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3.2
+ mipsel-unknown-netbsd1.4.2 | sjlj/ssjlj/sas | down | 1.3.5
+ m68k-cbm-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.3a5
+ m68k-apple-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2b5
+ i386-unknown-netbsd1.4T | sjlj/ssjlj/sas | down | 1.3.5
+ powerpc-apple-netbsd1.4.2 | sjlj/ssjlj/sas | down | 1.3.5
+ alpha-unknown-netbsd1.3.3 | sjlj/ssjlj/sas | down | 1.1.4
+ i386-unknown-netbsd1.3.3 | sjlj/ssjlj/sas | down | 1.1.5
+ i386-unknown-openbsd2.5 | sjlj/ssjlj/sas | down | 1.2b5
+ sparc-unknown-openbsd2.6 | sjlj/ssjlj/sas | down | 1.2.0
+ i386-unknown-openbsd2.6 | sjlj/ssjlj/sas | down | 1.2.1
+ i386-pc-bsdi4.0 | sjlj/ssjlj/sas | down | 1.3.3
+ armv4l-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2b8
+ i586-redhat-linux-gnu2.0glibc2.0 | sjlj/sjljlx/none | down | 1.3.0
+ i586-redhat-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3a2
+ i686-redhat-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3a1
+ i686-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3b2
+ i586-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.1
+ i686-redhat-linux-gnu2.3glibc2.0 | sjlj/sjljlx/none | down | 1.3a4
+ i586-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.1
+ i686-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
+ i486-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ i686-suse-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.1
+ i586-suse-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.2
+ i686-suse-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.2
+ i686-suse-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.2
+ i586-gnu-linux-gnu2.0glibc1 | sjlj/sjljlx/none | down | 1.3.1
+ i586-gnu-linux-gnu2.2glibc1 | sjlj/sjljlx/none | down | 1.3.1
+ i686-gnu-linux-gnu2.2glibc1 | sjlj/sjljlx/none | down | 1.3.5
+ i586-gnu-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.0
+ i686-gnu-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ i686-gnu-linux-gnu2.0glibc1 | sjlj/sjljlx/none | down | 1.3.5
+ i586-gnu-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.3
+ i586-debian-linux-gnu2.2glibc2.0 | sjlj/sjljlx/none | down | 1.3.0
+ i686-debian-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ i586-debian-linux-gnu2.3glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
+ i686-va-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ i686-slackware-linux-gnu | sjlj/ssjlj/sas | down | 1.3.0
+ i586-turbolinux-linux-gnu2.2glibc2.0| sjlj/sjljlx/none | down | 1.3.3
+ i686-va-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
+ i486-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.1
+ i586-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.1
+ i686-pc-linux-gnu | sjlj/sjljlx/none | down | 1.2.0
+ i386-redhat-linux-gnu | sjlj/sjljlx/none | down | 1.3a1
+ i486-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.1
+ i586-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.0
+ i686-pc-linux-gnulibc1 | sjlj/sjljlx/none | down | 1.2.0
+ alpha-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ sparc64-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ sparc-redhat-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.3
+ sparc-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.3
+ alphaev56-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.0
+ alphaev6-unknown-linux-gnu | sjlj/ssjlj/sas | down | 1.2.0
+ powerpc-unknown-linux-gnu | sjls/ssjlj/sas | down | 1.2.0
+ powerpc-debian-linux-gnu2.2glibc2.1 | sjlj/ssjlj/sas | down | 1.3.5
+ sparc-sun-solaris2.8 | mcsc/sc/mc | down | 1.4a2
+ sparc-sun-solaris2.7 | mcsc/sc/mc | down | 1.2.0
+ sparc-sun-solaris2.6 | mcsc/sc/mc | down | 1.3.0
+ sparc-sun-solaris2.5 | mcsc/sc/mc | down | 1.1.4
+ sparc-sun-solaris2.5.1 | mcsc/sc/mc | down | 1.2.0
+ sparc-sun-sunos4.1.3_U1 | sjlj/ssjlj/ss | down | 1.1.4
+ sparc-sun-sunos4.1.4 | sjlj/ssjlj/ss | down | 1.1.6
+ i386-pc-sysv5uw7 | mcsc/sc/mc | down | 1.3.0
+ i386-pc-sysv5uw7.1.0 | mcsc/sc/mc | down | 1.3.5
+ i386-pc-sysv5uw7.1.1 | mcsc/sc/mc | down | 1.3.3
+ i386-pc-sysv4.2uw2.1.3 | mcsc/sc/mc | down | 1.3.0
+ i386-pc-sysv4.2uw2.1 | mcsc/sc/mc | down | 1.1.6
+ i586-pc-sco3.2v5.0.2 | sjlj/ssjlj/sas | down | 1.3.2
+ i586-pc-sco3.2v5.0.4 | sjlj/ssjlj/sas | down | 1.2.0
+ i686-pc-sco3.2v5.0.4 | sjlj/ssjlj/sas | down | 1.3.5
+ i386-pc-sco3.2v5.0.5 | sjlj/ssjlj/sas | down | 1.2.1
+ i686-pc-sco3.2v5.0.5 | sjlj/ssjlj/sas | down | 1.2.1
+ i386-pc-sco3.2v5.0.5 | sjlj/ssjlj/sas | down | 1.2.2
+ rs6000-ibm-aix4.3.2.0 | mcsc/sc/mc | down | 1.1.5
+ rs6000-ibm-aix4.2.1.0 | mcsc/sc/mc | down | 1.1.5
+ powerpc-ibm-aix4.1.4.0 | mcsc/sc/mc | down | 1.1.6
+ powerpc-ibm-aix4.1.5.0 | mcsc/sc/mc | down | 1.1.5
+ rs6000-ibm-aix4.1.5.0 | sjlj/ssjlj/ss | down | 1.3.5
+ powerpc-ibm-aix4.2.1.0 | mcsc/sc/mc | down | 1.1.6
+ powerpc-ibm-aix4.3.2.0 | mcsc/sc/mc | down | 1.2.1
+ rs6000-ibm-aix4.3.3.0 | mcsc/sc/mc | down | 1.3.5
+ powerpc-ibm-aix4.3.3.0 | mcsc/sc/mc | down | 1.3.5
+ m68k-hp-hpux9.10 | sjlj/ssjlj/ss | down | 1.2.0
+ hppa1.1-hp-hpux10.01 | sjlj/ssjlj/ss | up | 1.3.3
+ hppa1.1-hp-hpux10.20 | sjlj/ssjlj/sas | up | 1.3.0
+ hppa2.0-hp-hpux10.20 | sjlj/ssjlj/sas | up | 1.3.0
+ hppa1.1-hp-hpux11.00 | mcsc/sc/mc | up | 1.2.3
+ hppa2.0n-hp-hpux11.00 | mcsc/sc/mc | up | 1.2.1
+ hppa2.0w-hp-hpux11.00 | mcsc/sc/mc | up | 1.4a1
+ mips-sgi-irix5.3 | sjlj/ssjlj/sas | down | 1.2.2
+ mips-sgi-irix6.5 | mcsc/sc/mc | down | 1.2b1
+ mips-sgi-irix6.2 | mcsc/sc/mc | down | 1.3.0
+ i386-pc-isc4.0 | sjlj/sjljisc/none | down | 1.2b2
+ powerpc-apple-rhapsody5.5 | sjlj/ssjlj/sas | down | 1.2b3
+ powerpc-apple-netbsd1.4.1 | sjlj/ssjlj/sas | down | 1.2.1
+ alpha-dec-osf4.0e | mcsc/sc/mc | down | 1.3.3
+ alpha-dec-osf4.0f | mcsc/sc/mc | down | 1.2.1
+ alphaev56-dec-osf4.0d | mcsc/sc/mc | down | 1.2b6
+ alphaev56-dec-osf4.0e | mcsc/sc/mc | down | 1.3.4
+ alphaev56-dec-osf4.0f | mcsc/sc/mc | down | 1.2.0
+ alphaev6-dec-osf4.0f | mcsc/sc/mc | down | 1.3.5
+ alphaev6-dec-osf5.0 | mcsc/sc/mc | down | 1.2.0
+ alpha-dec-osf5.0 | mcsc/sc/mc | down | 1.2.1
+ m68k-unknown-amigaos | sjlj/ssjlj/ss | down | 1.2.1
+ m68k-cbm-amigaos | sjlj/ssjlj/ss | down | 1.3.5
+ i586-ncr-sysv4.3.03 | mcsc/sc/mc | down | 1.2.1
+ mips-sni-sysv4 | mcsc/sc/mc | down | 1.2.3
+ hppa1.1-stratus-sysv4 | mcsc/sc/mc | up | 1.3.1
+ powerpc-apple-macosX | sjlj/ssjlj/sas | down | 1.3.2
+ i686-pc-cygwin | sjlj/sjljw32/none | down | 1.3.5
+ i386-pc-interix | sjlj/sjljisc/none | down | 1.3.5
+
+ HINTS FOR PORTING TO NEW PLATFORMS
+
+ In case you're not able to use Pth on a new and esoteric platform,
+ here are a few hints.
+
+ Pth has only one part which perhaps has to be ported to new platforms: the
+ machine context initialization, i.e. the function pth_mctx_set() in
+ pth_mctx.c. The exercise is to write a pth_mctx_set() function which
+ initializes a `jmp_buf' (see setjmp(3)) with a given function and stack, so
+ when the next longjmp(3) is done on this `jmp_buf', the function starts
+ executing on the given stack.
+
+ By default, Pth uses a very tricky sigstack/sigaltstack() based approach for
+ establishing this `jmp_buf' which is mostly portable to all major Unix
+ platforms which support the involved POSIX functions (see rse-pmt.ps for a
+ detailed description of the trick). So the chance is very high that this
+ approach also works for forthcoming platforms and no real porting is
+ required.
+
+ When this approach should not work (for instance brain-dead achient
+ GNU/Linux versions have a dummy sigstack/sigaltstack(), so we've no chance
+ this way), then you've to provide an alternative implementation. This
+ usually is done be fiddling around with the ingredients of a `jmp_buf'
+ structure. For this look inside your /usr/include/setjmp.h (plus files it
+ includes) and there especially for things like _pc or JB_PC (the program
+ counter) and _sp or JB_SP (the stack pointer). Then write an alternative
+ pth_mctx_set() function in pth_mctx.c.
+
+ Currently, as mentioned, Pth requires such an alternative only under
+ GNU/Linux where sigstack/sigaltstack() are dummy functions. Look at the
+ GNU/Linux pth_mctx_set() variant in pth_mctx.c to get an impression what
+ type of `jmp_buf' fiddling you perhaps have to do for esoteric platforms.
+ Don't be confused by the fact that such specialized pth_mctx_set() functions
+ are just a few lines long while the standard function is very large. That's
+ all just needed for maximum portability. The goal nevertheless only is to
+ initialize a `jmp_buf' with PC and SP. That's all...
+
+ Additionally see the INSTALL document for the --enable-mctx-XXX options.
+ These can be used to easily try out mctx combinations on a platform, too.
+
|
|