From owner-freebsd-current Thu May 14 00:48:06 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id AAA29324 for freebsd-current-outgoing; Thu, 14 May 1998 00:48:06 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from cimlogic.com.au (cimlog.lnk.telstra.net [139.130.51.31]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id AAA29204 for ; Thu, 14 May 1998 00:47:56 -0700 (PDT) (envelope-from jb@cimlogic.com.au) Received: (from jb@localhost) by cimlogic.com.au (8.8.8/8.8.7) id RAA25054; Thu, 14 May 1998 17:50:18 +1000 (EST) (envelope-from jb) From: John Birrell Message-Id: <199805140750.RAA25054@cimlogic.com.au> Subject: Re: Undefined symbol "___error" In-Reply-To: from Julian Elischer at "May 14, 98 00:12:04 am" To: julian@whistle.com (Julian Elischer) Date: Thu, 14 May 1998 17:50:18 +1000 (EST) Cc: current@FreeBSD.ORG X-Mailer: ELM [version 2.4ME+ PL40 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Julian Elischer wrote: > I don't understand why the old errno can't continue to exist and be > updated by all syscalls. > (just for compatibility for now) It *does* continue to exist. For backward compatibility it is used by the initial thread. This allows you to link against old libraries that have 'extern int errno'. These old libraries will never be thread aware. For new compiles, though, the old errno variable is hidden. If thread A calls stat() on a file that doesn't exist and thread B calls remove on a file that it doesn't have permission to delete and these happen at much the same time, they have to use difference errno variables. -- John Birrell - jb@cimlogic.com.au; jb@freebsd.org http://www.cimlogic.com.au/ CIMlogic Pty Ltd, GPO Box 117A, Melbourne Vic 3001, Australia +61 418 353 137 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message