From owner-freebsd-threads@FreeBSD.ORG Sat Aug 20 10:57:44 2005 Return-Path: X-Original-To: threads@FreeBSD.org Delivered-To: freebsd-threads@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 181B216A41F; Sat, 20 Aug 2005 10:57:44 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailout1.pacific.net.au (mailout1.pacific.net.au [61.8.0.84]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7A7BF43D48; Sat, 20 Aug 2005 10:57:43 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.0.86]) by mailout1.pacific.net.au (8.13.4/8.13.4/Debian-3) with ESMTP id j7KAvfQU015609; Sat, 20 Aug 2005 20:57:41 +1000 Received: from epsplex.bde.org (katana.zip.com.au [61.8.7.246]) by mailproxy1.pacific.net.au (8.13.4/8.13.4/Debian-3) with ESMTP id j7KAvd2k002091; Sat, 20 Aug 2005 20:57:40 +1000 Date: Sat, 20 Aug 2005 20:57:39 +1000 (EST) From: Bruce Evans X-X-Sender: bde@epsplex.bde.org To: Stefan Farfeleder In-Reply-To: <20050820081649.GA85488@wombat.fafoe.narf.at> Message-ID: <20050820204228.T2739@epsplex.bde.org> References: <20050819093649.GU21905@wombat.fafoe.narf.at> <20050819231640.E2640@epsplex.bde.org> <20050819183507.GE77069@wombat.fafoe.narf.at> <20050820151252.L60332@delplex.bde.org> <20050820081649.GA85488@wombat.fafoe.narf.at> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: threads@FreeBSD.org, standards@FreeBSD.org Subject: Re: includes X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Aug 2005 10:57:44 -0000 On Sat, 20 Aug 2005, Stefan Farfeleder wrote: > On Sat, Aug 20, 2005 at 03:48:31PM +1000, Bruce Evans wrote: >> On Fri, 19 Aug 2005, Stefan Farfeleder wrote: >> >>> On Sat, Aug 20, 2005 at 12:04:56AM +1000, Bruce Evans wrote: >>>> only used to declare sigset_t and struct timespec. >>>> We have a whole header, , to help >>>> declare sigset_t better (it only declares >>>> __sigset_t), >>> ... >>> I've include (for __uint32_t) and >>> instead. timespec is declared through . >> >> Too bad. > > Do you have a better suggestion? No. It's too late to change POSIX. >>>> Just namespace pollution. >>> >>> We need MINSIGSTKSZ from though. The patch includes >>> that header instead and protects its usage with __XSI_VISIBLE. I'm not >>> happy with this, maybe MINSIGSTKSZ should be moved somewhere else? >> >> MINSIGSTKSZ is used to define PTHREAD_STACK_MIN. I didn't notice this >> partly because the old version that I looked at correctly defiens >> PTHREAD_STACK_MIN as a constant. Everything is wrong here: >> - POSIX requires PTHREAD_STACK_MIN to be defined (if at all) in >> but not in . >> - PTHREAD_STACK_MIN must be defined as a number (if at all even if >> XSI is no visible. > > I agree that is missing the > PTHREAD_{DESTRUCTOR_ITERATIONS,KEYS_MAX,STACK_MIN,THREADS_MAX} macros. > It's not an error for to define them because POSIX > reserves pthread_* and PTHREAD_* for this header. I's not useful either, since non-broken applications still need to include (or use sysconf()). > I'm not sure why MINSIGSTKSZ (which expands to const * 4 on all > architectures) is not a constant. It's fairly machine-dependent. const * 8 would make more sense on the 64-bit arches but the const is not always the same even with that scaling. > > What do you think about putting __MINSIGSTKSZ in ? OK. >>>> Just namespace pollution. >>> >>> is included instead and __ULONG_MAX is used. >> >> __ULONG_MAX is used to define PTHREAD_THREADS_MAX. POSIX actually requires >> the latter to be defined (if at all) in only too. I doubt >> that the limit is actually 2^64-1. Maybe it should be a runtime limit >> _SC_THREAD* are missing, so apparently no one ever asks for the runtime >> limits. > > Which _SC_THREAD* is missing? Calling sysconf() with > _SC_THREAD_THREADS_MAX is buggy because sysconf converts ULONG_MAX to a > long. Er, none. I grepped the wrong headers (only , but _SC_THREAD* is in and sysconf(3) on _SC_THREAD* never reaches the kernel). Bruce