Merge in platform updates from main.

This commit is contained in:
Kurt Zeilenga 1998-09-16 02:47:02 +00:00
parent 59a6663312
commit 3e20891263
7 changed files with 742 additions and 27 deletions

343
Make-common.gmake Normal file
View File

@ -0,0 +1,343 @@
#-----------------------------------------------------------------------------
# Copyright 1998 The OpenLDAP Foundation, Redwood City, California, USA
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted only
# as authorized by the OpenLDAP Public License. A copy of this
# license is available at http://www.OpenLDAP.org/license.html or
# in file LICENSE in the top-level directory of the distribution.
#
# This work is derived from the University of Michigan LDAP v3.3
# distribution. Information concerning is available at
# http://www.umich.edu/~dirsvcs/ldap/ldap.html.
#
# This work also contains materials derived from public sources.
#-----------------------------------------------------------------------------
# Copyright (c) 1994 Regents of the University of Michigan.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that this notice is preserved and that due credit is given
# to the University of Michigan at Ann Arbor. The name of the University
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#-----------------------------------------------------------------------------
# LDAP common Make defines (included in all but top-level Makefile)
#############################################################################
## Edit the following variables to have appropriate values for your system ##
#############################################################################
#
# This template should be used by systems with Gnu Make.
#
# If Gnu make is not installed as make, you must uncomment out
# this line.
#MAKE=gmake
#############################################################################
## LDAP install paths ##
#############################################################################
# by default, everything is installed below INSTROOT
# config files, etc. are put in ETCDIR
# include files get put in INCLUDEDIR
# libraries are put in LIBDIR
# man pages are put under MANDIR
# programs end-users will run are put in BINDIR
# programs sysadmins will run are put in SBINDIR
# servers are put in LIBEXECDIR
# pid/args files are put in RUNDIR
#
# Per platform defaults override these.
#
ifndef LDAP_PREFIX
LDAP_PREFIX= /usr/local
endif
ifndef LDAP_INSTROOT
LDAP_INSTROOT= $(LDAP_PREFIX)
endif
ifndef LDAP_ETCDIR
LDAP_ETCDIR= $(LDAP_INSTROOT)/etc/ldap
endif
ifndef LDAP_INCDIR
LDAP_INCDIR= $(LDAP_INSTROOT)/include
endif
ifndef LDAP_LIBDIR
LDAP_LIBDIR= $(LDAP_INSTROOT)/lib
endif
ifndef LDAP_MANDIR
LDAP_MANDIR= $(LDAP_INSTROOT)/man
endif
ifndef LDAP_BINDIR
LDAP_BINDIR= $(LDAP_INSTROOT)/bin
endif
ifndef LDAP_SBINDIR
LDAP_SBINDIR=$(LDAP_INSTROOT)/sbin
endif
ifndef LDAP_LIBEXECDIR
LDAP_LIBEXECDIR= $(LDAP_INSTROOT)/libexec
endif
ifndef LDAP_RUNDIR
LDAP_RUNDIR= $(LDAP_ETCDIR)
endif
#############################################################################
## General compiler options ##
#############################################################################
# Passed to every compile (cc or gcc). This is where you put -O or -g, etc.
#EXTRACFLAGS=-O -g
#EXTRACFLAGS=-O
ifndef EXTRACFLAGS
EXTRACFLAGS?=-g
endif
# Passed to every link (ld). Include -g here if you did in EXTRACFLAGS.
ifndef EXTRALDFLAGS
EXTRALDFLAGS=-g
endif
#############################################################################
## If you are NOT using Kerberos authentication, you can skip this section.##
#############################################################################
#
# Otherwise, to enable kerberos authentication, uncomment KERBEROS (and
# AFSKERBEROS if you are running the AFS version of kerberos). Also
# uncomment and change the various KRB* lines to point to where the
# kerberos libraries and include files are installed at your site.
#
# *** NOTE ***
# If you have an MIT Kerberos V distribution and you compiled it with -krb4
# flag which enables Kerberos IV compatibility, uncomment KERBEROS_V -
# this will make sure all your includes can be found where they actually are -
# in this case /usr/local/kerberos/include/kerberosIV - simple change of
# KRBINCLUDEFLAG will _not_ work. Also uncomment the correct KRBLIBS define.
#
# For Kerberos V with Kerberos IV compatibility uncomment the following line
#KERBEROS=-DKERBEROS -DKERBEROS_V
# For Kerberos IV uncomment the following line
#KERBEROS=-DKERBEROS
#
#AFSKERBEROS=-DAFSKERBEROS
#KRBINCLUDEFLAG = -I/usr/local/kerberos/include
#KRBLIBFLAG = -L/usr/local/kerberos/lib
# For Kerberos V with Kerberos IV compatibility uncomment the following line
#KRBLIBS = -lkrb4 -lkrb5 -ldes425
# For Kerberos IV uncomment the following line
#KRBLIBS = -lkrb -ldes
#############################################################################
## ISODE is required ONLY to build the ldap <-> X.500 server (ldapd) ##
## If you don't want to build it, you can skip this section. ##
#############################################################################
#
# To build the ldap server, uncomment the HAVEISODE line,
# and the section describing build settings for your version of isode.
#
#HAVEISODE = yes
# If you compiled ISODE with TURBO_DISK defined, uncomment this
#ISODETURBOLIBS = -lgdbm
# uncomment these to have ldapd "pretty print" protocol elements w/debugging
#PEPSY_DUMP=-DPEPSY_DUMP
#PEPSY=/usr/local/ic/bin/pepsy
# uncommment this line to have ldapd load PP syntax handlers
# you'll also need to add -lpp to ISODEBASELIBS below
#LDAP_USE_PP=-DLDAP_USE_PP
# uncomment NO_SETPROCTITLE to have ldapd NOT change its title
#NO_SETPROCTITLE=-DNOSETPROCTITLE
#
# ISODE Consortium release build settings
# You should change the next line so that ICRELEASE matches the (integer)
# version number of whatever IC release you have, e.g. 1, 2, or 3 and
# also uncomment the next 5 lines.
#ICRELEASE=-DICRELEASE=1
#ISODEPACKAGE=-DISODEPACKAGE=IC
#ISODEINCLUDEFLAG= -I/usr/local/ic/include/isode -I/usr/local/ic/include
#ISODELIBFLAG = -L/usr/local/ic/lib
#ISODEBASELIBS = -lisode
#
# Freely available ISODE 8.0 release build settings (uncomment the next 4 lines)
#ISODEPACKAGE=-DISODEPACKAGE
#ISODEINCLUDEFLAG= -I/usr/local/isode/include
#ISODELIBFLAG = -L/usr/local/isode/lib
#ISODEBASELIBS = -ldsap -lisode
#
# NEXOR ISODE release build settings (uncomment the next 4 lines)
#ISODEPACKAGE=-DISODEPACKAGE=XT
#ISODEINCLUDEFLAG= -I/usr/include/isode
#ISODELIBFLAG = -L/usr/local/lib -L/usr/sunlink/osi/lib
#ISODEBASELIBS = -lxtpp -lresolv -lxtdsap -lxtisode -losi
#############################################################################
## If you don't want to run slapd, skip this section. ##
#############################################################################
#
# To build slapd (the stand-alone ldap daemon), uncomment the MAKESLAPD
# line and select the SLAPD_BACKENDS you want to use. If you enable the
# LDBM backend, also select one of the LDBM backends.
MAKESLAPD= yes
#
# remove the defines for backends you don't want to enable
SLAPD_BACKENDS= -DLDAP_LDBM -DLDAP_SHELL -DLDAP_PASSWD
#
# If you have included -DLDAP_LDBM in the SLAPD_BACKENDS line,
# which low-level database package to use must be specified. You
# may want to overide the platform settings by disabling the lines
# below and hardcoding the desired settings.
#
# The four choices: Berkeley db b-tree, Berkeley db hash, GNU dbm, or ndbm.
# You will also need to edit the include and lib strings appropriately.
# standard unix ndbm
# Fallback settings, defaults are set in build/*/Make-platform
# The NDBM interface may not work on some (any) platforms.
# You may be happier with Berkeley DB B-trees.
ifndef LDBMBACKEND
LDBMBACKEND=-DLDBM_USE_NDBM
endif
ifndef LDBMINCLUDE
LDBMINCLUDE=
endif
ifndef LDBMLIB
LDBMLIB=
endif
# LDBM Hardcode Setting Examples (may require editing)
# berkeley db btree package
#LDBMLIB=-ldb
#LDBMBACKEND=-DLDBM_USE_DBBTREE
#LDBMINCLUDE=-I/usr/local/db/include
#LDBMLIB?=-ldb
# berkeley db hash package
#LDBMBACKEND=-DLDBM_USE_DBHASH
#LDBMINCLUDE=-I/usr/local/db/include
#LDBMLIB=-ldb
# gnu dbm (gdbm)
#LDBMBACKEND=-DLDBM_USE_GDBM
#LDBMINCLUDE=-I/usr/local/gdbm/include
#LDBMLIB=-lgdbm
#undef these if you have SleepyCat DB2 installed the updated DBI
#LDBMBACKEND=-DLDBM_USE_DBBTREE -DLDBM_USE_DB2
#LDBMINCLUDE=-I/usr/local/include
#LDBMLIB=-L/usr/local/lib -ldb
#undef these if you have SleepyCat DB2 installed (with compat185)
#LDBMBACKEND=-DLDBM_USE_DBBTREE -DLDBM_USE_DB2_COMPAT185
#LDBMINCLUDE=-I/usr/local/include
#LDBMLIB=-L/usr/local/lib -ldb
# if you want to use a non-default threads package change the defines below
# to one of:
# -DPOSIX_THREADS (draft 10 or standard)
# -DTHREAD_MIT_PTHREADS (draft 4)
# -DTHREAD_NEXT_CTHREADS
# -DTHREAD_DCE_PTHREADS
# -DTHREAD_SUNOS4_LWP
# -DTHREAD_SUNOS5_LWP
# and select the appropriate library.
ifndef THREADS
THREADS=-DNO_THREADS
endif
ifndef THREADSLIB
THREADSLIB=
endif
# Locations of auxilary programs
# (excepts to below are generally defined in Make-platform)
ifndef LDAP_SENDMAIL
LDAP_SENDMAIL=/usr/lib/sendmail
endif
ifndef LDAP_EDITOR
LDAP_EDITOR=/usr/ucb/vi
endif
ifndef LDAP_FINGER
LDAP_FINGER=/usr/ucb/finger
endif
# For generation of compressed man pages
# (excepts to below are generally defined in Make-platform)
ifndef MANCOMPRESS
MANCOMPRESS=cat
endif
ifndef MANCOMPRESSSUFFIX
MANCOMPRESSSUFFIX=
endif
#############################################################################
## The following options are used by the xax500 client. If you haven't ##
## retrieved the xax500 source and dropped it into the "clients" ##
## directory, you can skip this section. ##
#############################################################################
#
# location of your X include files
#XINCLUDES= -I/usr/X11/include
#
# location of your X libraries
#XLIBDIRS=-L/usr/X11/lib
#
# include any extra X libraries you need here
# the following works with sunos 4 and X11R5
#XLIBS = $(XLIBDIRS) -lXm -lXt -lX11
# the following has been known to work with Solaris 2.4 and X11R6
#XLIBS = $(XLIBDIRS) -lXm -lXext -lSM -lICE -lXpm -lXt -lX11
#############################################################################
## If you don't want to do auto-translation of character sets, skip this ##
#############################################################################
#
# Otherwise, uncomment this line and set the following options.
#STR_TRANSLATION=-DSTR_TRANSLATION
#
# remove the defines for LDAP client library T.61 character translation
# you do not need. If you use LDAP_CHARSET_8859, replace the '1' in "88591"
# with the number of the particular character set you use. E.g., use "88594"
# if you use the ISO 8859-4 chracter set.
#LIBLDAP_CHARSETS=-DLDAP_CHARSET_8859="88591"
#
# uncomment one these lines to enable automatic T.61 translation by default
#LIBLDAP_DEF_CHARSET=-DLDAP_DEFAULT_CHARSET=LDAP_CHARSET_8859
#############################################################################
## General options ##
#############################################################################
# uncomment this line to enable debugging code (a good idea)
LDAP_DEBUG=-DLDAP_DEBUG
# uncomment this line to turn on a few U of Michigan specific things
#UOFM=-DUOFM
# uncomment this line to delete a few printfs in the lber and ldap libraries.
#NO_USERINTERFACE=-DNO_USERINTERFACE
# uncomment this line to include Connectionless LDAP support
#CLDAP=-DCLDAP
# uncomment this line to eliminate local caching support in the libldap
#NO_CACHE=-DNO_CACHE
# uncomment this line to do reverse lookups (useful for doing ACLs
# by host/domain names)
LDAP_REVERSE_LOOKUP=-DREVERSE_LOOKUP
# uncomment this line to enable support for LDAP referrals in libldap
LDAP_REFERRALS=-DLDAP_REFERRALS
# uncomment this line to enable ACL by groups
# LDAP_ACLGROUP=-DACLGROUP
# uncomment these lines to enable support for CRYPT, SHA1, and/or MD5 passwords
# in LDBM. Crypt uses platform provided crypt(3).
# LDAP_CRYPT=-DLDAP_CRYPT -DLDAP_SHA1 -DLDAP_MD5
# LDAP_CRYPT_LIB=
# and comment this line out
LDAP_CRYPT_LIB=
# uncomment these lines to enable support fro tcp_wrappers in servers.
# Requires tcp_wrappers.
# LDAP_TCP_WRAPPERS=-DTCP_WRAPPERS -I/usr/local/include
# LDAP_TCP_WRAPPERS_LIB=-L/usr/local/lib -lwrap
# uncomment this line to use soundex for approximate matches in slapd.
# the default is to use the metaphone algorithm.
#PHONETIC=-DSOUNDEX

View File

@ -1,7 +1,19 @@
#
# You will usually NOT need to edit this file at all: instead, edit the
# Make-common file. See the LDAP INSTALL file for more information.
#
#-----------------------------------------------------------------------------
# Copyright 1998 The OpenLDAP Foundation, Redwood City, California, USA
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted only
# as authorized by the OpenLDAP Public License. A copy of this
# license is available at http://www.OpenLDAP.org/license.html or
# in file LICENSE in the top-level directory of the distribution.
#
# This work is derived from the University of Michigan LDAP v3.3
# distribution. Information concerning is available at
# http://www.umich.edu/~dirsvcs/ldap/ldap.html.
#
# This work also contains materials derived from public sources.
#-----------------------------------------------------------------------------
# Copyright (c) 1994 Regents of the University of Michigan.
# All rights reserved.
@ -12,10 +24,8 @@
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#
# LDAP lightweight X.500 Directory access top level makefile
#
#-----------------------------------------------------------------------------
# LDAP lightweight X.500 Directory access top level makefile
#
############################################################################
# #
@ -161,8 +171,8 @@ depend: makeconfig
for i in $(SRCDIRS); do \
echo; echo "cd $$i; $(MAKE) $(MFLAGS) depend"; \
( cd $$i; $(MAKE) $(MFLAGS) depend ); \
done; \
$(MAKE) $(MFLAGS) makefiles
done;
@echo " "; echo Remember to \"make depend\" after each \"make makefiles\"
#
# rules to check out and in Make-template files
@ -202,16 +212,17 @@ checkin: FORCE
done
tar: veryclean
# $(RM) ./Make-common; \
# $(CP) ./Make-common.dist ./Make-common; \
# $(CHMOD) 644 ./Make-common; \
# $(RM) ./include/ldapconfig.h.edit; \
# $(CP) ./include/ldapconfig.h.dist ./include/ldapconfig.h.edit; \
# $(CHMOD) 644 ./include/ldapconfig.h.edit;
@PWD=`pwd`; \
$(RM) ./Make-common; \
$(CP) ./Make-common.dist ./Make-common; \
$(CHMOD) 644 ./Make-common; \
$(RM) ./include/ldapconfig.h.edit; \
$(CP) ./include/ldapconfig.h.dist ./include/ldapconfig.h.edit; \
$(CHMOD) 644 ./include/ldapconfig.h.edit; \
BASE=`$(BASENAME) $$PWD`; XFILE=/tmp/ldap-x.$$$$; \
( cd .. ; $(CAT) $$BASE/exclude >$$XFILE; \
$(FIND) $$BASE -name RCS -print >> $$XFILE ; \
$(FIND) $$BASE -name CVS -print >> $$XFILE ; \
$(FIND) $$BASE -name obj-\* -print >> $$XFILE ; \
$(FIND) $$BASE -name tags -print >> $$XFILE ; \
$(TAR) cvfX ./$$BASE.tar $$XFILE $$BASE; \
@ -256,7 +267,12 @@ makeconfig: .makefiles buildtools
echo "SunOS release $$OSRELEASE unknown..."; exit 1; \
fi; \
if [ $$OSRELEASE -ge "5" ]; then \
PLATFORM="sunos5"; \
MINORVER=`echo $$OSRELEASE|sed 's/^.*\.//'` ; \
if [ $$MINORVER -ge "6" ]; then \
PLATFORM="sunos56" ; \
else \
PLATFORM="sunos5"; \
fi; \
else \
PLATFORM="sunos4"; \
fi; \
@ -279,8 +295,16 @@ makeconfig: .makefiles buildtools
NetBSD) \
PLATFORM="netbsd" \
;; \
OpenBSD) \
PLATFORM="openbsd" \
;; \
FreeBSD) \
PLATFORM="freebsd" \
MAJRELEASE=`echo $$OSRELEASE | sed 's/\..*//'` ; \
if [ $$MAJRELEASE -lt 3 ]; then \
PLATFORM="freebsd2" ; \
else \
PLATFORM="freebsd3" ; \
fi; \
;; \
NeXTSTEP) \
PLATFORM="nextstep" \
@ -312,6 +336,15 @@ makeconfig: .makefiles buildtools
echo "** Set platform to $$PLATFORM with compiler $$CC..."; \
echo ""
Make-common: Make-common.dist
@if [ -f Make-common ]; then \
echo "Make-common.dist newer than Make-common, check for new options" ;\
echo "or touch Make-common to ignore."; \
exit 1; \
fi; \
echo "Copy Make-common.dist or Make-common.gmake to Make-common"; \
echo " Edit as needed before making!" ; \
exit 1
#
# rule to build Makefiles by concatenating Make-template file in each
# subdirectory with global Make-common, .make-platform, and
@ -334,7 +367,6 @@ makeconfig: .makefiles buildtools
echo " creating $$i/Makefile"; \
$(RM) $$i/Makefile; \
$(CAT) $$HDRFILE $$i/Make-template $$DEFSFILE > $$i/Makefile; \
$(CHMOD) 444 $$i/Makefile; \
fi; \
done; \
$(RM) .makefiles; \
@ -347,6 +379,7 @@ makeconfig: .makefiles buildtools
makefiles: FORCE
$(RM) .makefiles
$(MAKE) $(MFLAGS) .makefiles
@echo "Please \"make depend\" before building."
#
# rule to create any tools we need to build everything else

View File

@ -0,0 +1,61 @@
#
# LDAP FreeBSD GNU C Make-platform file
#
#
# add any platform-specific overrides below here
#
EXTRACFLAGS=-O -g
LDBMBACKEND=-DLDBM_USE_DBBTREE
LDBMINCLUDE=-I/usr/include
EDITOR=/usr/bin/vi
FINGER=/usr/bin/finger
SENDMAIL=/usr/sbin/sendmail
LDAP_RUNDIR=/var/run
MANCOMPRESS=gzip
MANCOMPRESSSUFFIX=.gz
# On most (if not all) 2.X versions of FreeBSD, Pthread(3) is not
# installed by default. As such, -DNO_THREADS is used by default
# on FreeBSD 2.X.
#
# FreeBSD 2.2.5 comes with a Chris Provenzano Pthreads
# package, # but it must be manually built. See pthread(3) for details.
# OpenLDAP is compatible with this version, uncomment the following
# options:
#
#THREADS= -DPOSIX_THREADS -D_THREAD_SAFE \
# -DPTHREAD_PREEMPTIVE -DSCHED_YIELD_MISSING
#THREADSLIB= -lc_r
#
# Some versions of FreeBSD support the gcc option "-pthread" to
# link with -lc_r. On those systems, uncomment the following:
#THREADSLIB= -pthread
#
#
# If the only thread package available is only Draft 4 compliant,
# you can try the following:
#THREADS= -DTHREAD_MIT_PTHREADS -D_THREAD_SAFE -DPTHREAD_PREEMPTIVE
#
# Note:
# LDAP has a problem with the idea of implicit vs. explicit yields
# in call conversion threading packages, like the MIT pthreads
# package. Rather than resolve this globally, I (Terry Lambert) have
# marked the threading as "preeemptive", even though it is
# technically not.
# This means that the implicit-yield threading is topologically
# equivalent to preemptive threading.
# crypt(3) is in a separate library
LDAP_CRYPT_LIB= -lcrypt
#
# -------------------------------------------------------------------------
# you will probably not need to edit anything below this point
# -------------------------------------------------------------------------
CC = gcc
PLATFORMCFLAGS= -Dfreebsd

View File

@ -0,0 +1,49 @@
#
# LDAP FreeBSD GNU C Make-platform file
#
#
# add any platform-specific overrides below here
#
LDBMBACKEND=-DLDBM_USE_DBBTREE
LDBMINCLUDE=-I/usr/include
EDITOR=/usr/bin/vi
FINGER=/usr/bin/finger
SENDMAIL=/usr/sbin/sendmail
LDAP_RUNDIR=/var/run
MANCOMPRESS=gzip
MANCOMPRESSSUFFIX=.gz
#
# LDAP has a problem with the idea of implicit vs. explicit yields
# in call conversion threading packages, like the MIT pthreads
# package. Rather than resolve this globally, I have marked the
# threading as "preeemptive", even though it is technically not.
#
# This means that the implicit-yield threading is topologically
# equivalent to preemptive threading.
#
THREADS= -DPOSIX_THREADS -D_THREAD_SAFE -DPTHREAD_PREEMPTIVE
# use special gcc flag to include libc_r.a
THREADSLIB= -pthread
#THREADSLIB= -lc_r
# if you built/installed with -DNOLIBC_R, you'll need uncomment
# out the following
#THREADS= -DNO_THREADS -DPTHREAD_PREEMPTIVE
#THREADSLIB=
# crypt(3) is in a separate library
LDAP_CRYPT_LIB= -lcrypt
#
# -------------------------------------------------------------------------
# you will probably not need to edit anything below this point
# -------------------------------------------------------------------------
CC = gcc
PLATFORMCFLAGS= -Dfreebsd

View File

@ -6,12 +6,22 @@
# add any platform-specific overrides below here
#
#
# -------------------------------------------------------------------------
# you will probably not need to edit anything below this point
# -------------------------------------------------------------------------
EXTRACFLAGS=-O -g
CC = gcc
RANLIB = "ranlib"
LDBMBACKEND=-DLDBM_USE_GDBM
LDBMLIB=-lgdbm
PLATFORMCFLAGS= -Dlinux
# not all versions of Linux support POSIX Threads
#THREADS=-DPOSIX_THREADS -DREENTRANT
#THREADSLIB=-lpthread
# crypt(3) is in -lcrypt on some versions of Linux
#LDAP_CRYPT_LIB= -lcrypt
LDAP_SENDMAIL=/usr/sbin/sendmail
LDAP_EDITOR=/bin/vi
LDAP_FINGER=/usr/bin/finger

View File

@ -3,7 +3,40 @@
#ifndef _LTHREAD_H
#define _LTHREAD_H
#if defined( THREAD_SUNOS4_LWP )
#if defined ( THREAD_NEXT_CTHREADS )
#define _THREAD
#include <mach/cthreads.h>
typedef cthread_fn_t VFP;
typedef int pthread_attr_t;
typedef cthread_t pthread_t;
/* default attr states */
#define pthread_mutexattr_default NULL
#define pthread_condattr_default NULL
/* thread state - joinable or not */
#define PTHREAD_CREATE_JOINABLE 0
#define PTHREAD_CREATE_DETACHED 1
/* thread scope - who is in scheduling pool */
#define PTHREAD_SCOPE_PROCESS 0
#define PTHREAD_SCOPE_SYSTEM 1
/* mutex attributes and mutex type */
typedef int pthread_mutexattr_t;
typedef struct mutex pthread_mutex_t;
/* mutex and condition variable scope - process or system */
#define PTHREAD_SHARE_PRIVATE 0
#define PTHREAD_SHARE_PROCESS 1
/* condition variable attributes and condition variable type */
typedef int pthread_condattr_t;
typedef struct condition pthread_cond_t;
#elif defined( THREAD_SUNOS4_LWP )
/***********************************
* *
* thread definitions for sunos4 *
@ -66,9 +99,11 @@ typedef void *(*VFP)();
/* sunos5 threads are preemptive */
#define PTHREAD_PREEMPTIVE 1
#if !defined(__SunOS_5_6)
/* thread attributes and thread type */
typedef int pthread_attr_t;
typedef thread_t pthread_t;
#endif /* ! sunos56 */
/* default attr states */
#define pthread_mutexattr_default NULL
@ -81,17 +116,21 @@ typedef thread_t pthread_t;
#define PTHREAD_SCOPE_PROCESS 0
#define PTHREAD_SCOPE_SYSTEM THR_BOUND
#if !defined(__SunOS_5_6)
/* mutex attributes and mutex type */
typedef int pthread_mutexattr_t;
typedef mutex_t pthread_mutex_t;
#endif /* ! sunos56 */
/* mutex and condition variable scope - process or system */
#define PTHREAD_SHARE_PRIVATE USYNC_THREAD
#define PTHREAD_SHARE_PROCESS USYNC_PROCESS
#if !defined(__SunOS_5_6)
/* condition variable attributes and condition variable type */
typedef int pthread_condattr_t;
typedef cond_t pthread_cond_t;
#endif /* ! sunos56 */
#else /* end sunos5 */
@ -127,6 +166,18 @@ typedef cond_t pthread_cond_t;
#define pthread_attr_setdetachstate( a, b ) \
pthread_attr_setdetach_np( a, b )
#else /* end dce pthreads */
#if defined( POSIX_THREADS )
#define _THREAD
#include <pthread.h>
#define pthread_mutexattr_default NULL
#define pthread_condattr_default NULL
#endif /* posix threads */
#endif /* dce pthreads */
#endif /* mit pthreads */
#endif /* sunos5 */

View File

@ -2,7 +2,157 @@
#include <stdio.h>
#include "lthread.h"
#if defined( THREAD_SUNOS4_LWP )
#if defined( THREAD_NEXT_CTHREADS )
/***********************************************************************
* *
* under NEXTSTEP or OPENSTEP use CThreads *
* lukeh@xedoc.com.au *
* *
***********************************************************************/
int
pthread_attr_init( pthread_attr_t *attr )
{
*attr = 0;
return( 0 );
}
int
pthread_attr_destroy( pthread_attr_t *attr )
{
return( 0 );
}
int
pthread_attr_getdetachstate( pthread_attr_t *attr, int *detachstate )
{
*detachstate = *attr;
return( 0 );
}
int
pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate )
{
*attr = detachstate;
return( 0 );
}
/* ARGSUSED */
int
pthread_create(
pthread_t *tid,
pthread_attr_t *attr,
VFP func,
void *arg
)
{
*tid = cthread_fork(func, arg);
return ( *tid == NULL ? -1 : 0 );
}
void
pthread_yield()
{
cthread_yield();
}
void
pthread_exit( any_t a )
{
cthread_exit( a );
}
void
pthread_join( pthread_t tid, int *pStatus )
{
int status;
status = (int) cthread_join ( tid );
if (pStatus != NULL)
{
*pStatus = status;
}
}
/* ARGSUSED */
void
pthread_kill( pthread_t tid, int sig )
{
return;
}
/* ARGSUSED */
int
pthread_mutex_init( pthread_mutex_t *mp, pthread_mutexattr_t *attr )
{
mutex_init( mp );
mp->name = NULL;
return ( 0 );
}
int
pthread_mutex_destroy( pthread_mutex_t *mp )
{
mutex_clear( mp );
return ( 0 );
}
int
pthread_mutex_lock( pthread_mutex_t *mp )
{
mutex_lock( mp );
return ( 0 );
}
int
pthread_mutex_unlock( pthread_mutex_t *mp )
{
mutex_unlock( mp );
return ( 0 );
}
int
pthread_mutex_trylock( pthread_mutex_t *mp )
{
return mutex_try_lock( mp );
}
int
pthread_cond_init( pthread_cond_t *cv, pthread_condattr_t *attr )
{
condition_init( cv );
return( 0 );
}
int
pthread_cond_destroy( pthread_cond_t *cv )
{
condition_clear( cv );
return( 0 );
}
int
pthread_cond_wait( pthread_cond_t *cv, pthread_mutex_t *mp )
{
condition_wait( cv, mp );
return( 0 );
}
int
pthread_cond_signal( pthread_cond_t *cv )
{
condition_signal( cv );
return( 0 );
}
int
pthread_cond_broadcast( pthread_cond_t *cv )
{
condition_broadcast( cv );
return( 0 );
}
#elif defined( THREAD_SUNOS4_LWP )
/***********************************************************************
* *
@ -44,7 +194,7 @@ pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate )
int
pthread_create(
pthread_t *tid,
pthread_attr_t attr,
pthread_attr_t *attr,
VFP func,
void *arg
)
@ -178,6 +328,7 @@ pthread_cond_broadcast( pthread_cond_t *cv )
* *
***********************************************************************/
#if !defined(__SunOS_5_6)
int
pthread_attr_init( pthread_attr_t *attr )
{
@ -210,13 +361,14 @@ pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate )
int
pthread_create(
pthread_t *tid,
pthread_attr_t attr,
pthread_attr_t *attr,
VFP func,
void *arg
)
{
return( thr_create( NULL, 0, func, arg, attr, tid ) );
return( thr_create( NULL, 0, func, arg, *attr, tid ) );
}
#endif /* ! sunos56 */
void
pthread_yield()
@ -224,6 +376,7 @@ pthread_yield()
thr_yield();
}
#if !defined(__SunOS_5_6)
void
pthread_exit()
{
@ -302,6 +455,7 @@ pthread_cond_broadcast( pthread_cond_t *cv )
{
return( cond_broadcast( cv ) );
}
#endif /* ! sunos56 */
#else /* end sunos5 threads */
@ -333,6 +487,20 @@ pthread_kill( pthread_t tid, int sig )
kill( getpid(), sig );
}
#else
#if defined ( POSIX_THREADS )
#ifndef SCHED_YIELD_MISSING
#include <sched.h>
void pthread_yield( void )
{
sched_yield();
}
#endif
#endif /* posix threads */
#endif /* dce pthreads */
#endif /* mit pthreads */
#endif /* sunos5 lwp */
@ -379,7 +547,7 @@ pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate )
int
pthread_create(
pthread_t *tid,
pthread_attr_t attr,
pthread_attr_t *attr,
VFP func,
void *arg
)