From owner-p4-projects@FreeBSD.ORG Sat May 24 16:56:14 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F18337B404; Sat, 24 May 2003 16:56:13 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0694137B401 for ; Sat, 24 May 2003 16:56:13 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9022943F93 for ; Sat, 24 May 2003 16:56:11 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h4ONuB0U018526 for ; Sat, 24 May 2003 16:56:11 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h4ONuAhQ018523 for perforce@freebsd.org; Sat, 24 May 2003 16:56:10 -0700 (PDT) Date: Sat, 24 May 2003 16:56:10 -0700 (PDT) Message-Id: <200305242356.h4ONuAhQ018523@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 31831 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 May 2003 23:56:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=31831 Change 31831 by marcel@marcel_nfs on 2003/05/24 16:56:04 IFC @31826 Affected files ... .. //depot/projects/ia64/gnu/lib/libstdc++/Makefile#16 integrate .. //depot/projects/ia64/gnu/usr.bin/cc/cc_int/Makefile#7 integrate .. //depot/projects/ia64/gnu/usr.bin/cc/cc_int/amd64.patch#1 branch .. //depot/projects/ia64/lib/libc/amd64/SYS.h#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/brk.S#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/exect.S#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/ptrace.S#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/sbrk.S#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/setlogin.S#2 integrate .. //depot/projects/ia64/lib/libc/amd64/sys/vfork.S#2 integrate .. //depot/projects/ia64/lib/libc/posix1e/mac.conf.5#3 integrate .. //depot/projects/ia64/lib/libc_r/man/pthread_getconcurrency.3#2 integrate .. //depot/projects/ia64/lib/libpam/modules/pam_chroot/pam_chroot.8#3 integrate .. //depot/projects/ia64/lib/libpthread/man/pthread_attr_get_np.3#2 integrate .. //depot/projects/ia64/lib/libpthread/sys/lock.c#4 integrate .. //depot/projects/ia64/lib/libpthread/sys/lock.h#4 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_cancel.c#6 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_concurrency.c#3 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_cond.c#9 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_create.c#9 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_detach.c#4 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_find_thread.c#4 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_join.c#5 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_kern.c#17 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_nanosleep.c#5 integrate .. //depot/projects/ia64/lib/libpthread/thread/thr_sig.c#9 integrate .. //depot/projects/ia64/libexec/Makefile#17 integrate .. //depot/projects/ia64/libexec/rtld-elf/amd64/reloc.c#2 integrate .. //depot/projects/ia64/libexec/rtld-elf/amd64/rtld_start.S#2 integrate .. //depot/projects/ia64/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#52 integrate .. //depot/projects/ia64/sbin/bsdlabel/bsdlabel.8#4 integrate .. //depot/projects/ia64/sbin/mksnap_ffs/mksnap_ffs.8#2 integrate .. //depot/projects/ia64/share/man/man4/usb.4#9 integrate .. //depot/projects/ia64/share/man/man9/vnode.9#9 integrate .. //depot/projects/ia64/sys/amd64/include/asm.h#3 integrate .. //depot/projects/ia64/sys/dev/cardbus/cardbus_cis.c#14 integrate .. //depot/projects/ia64/sys/ia64/ia64/exception.s#24 integrate .. //depot/projects/ia64/sys/ia64/ia64/syscall.s#8 integrate .. //depot/projects/ia64/sys/ia64/ia64/trap.c#51 integrate .. //depot/projects/ia64/sys/ia64/include/cpu.h#14 integrate .. //depot/projects/ia64/sys/ia64/include/cpufunc.h#11 integrate .. //depot/projects/ia64/usr.sbin/Makefile#38 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/disks.c#14 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/dist.c#20 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/install.c#19 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/label.c#17 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/menus.c#30 integrate .. //depot/projects/ia64/usr.sbin/sysinstall/sysinstall.h#20 integrate Differences ... ==== //depot/projects/ia64/gnu/lib/libstdc++/Makefile#16 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libstdc++/Makefile,v 1.42 2003/02/10 06:09:55 kan Exp $ +# $FreeBSD: src/gnu/lib/libstdc++/Makefile,v 1.43 2003/05/24 19:38:18 peter Exp $ GCCDIR= ${.CURDIR}/../../../contrib/gcc SRCDIR= ${.CURDIR}/../../../contrib/libstdc++ @@ -8,6 +8,11 @@ ${SRCDIR}/config/locale/generic ${SRCDIR} ${SRCDIR}/std \ ${SUPDIR} ${GCCDIR} +.if ${MACHINE_ARCH} == "amd64" +NOPIC= broken # need libgcc.so or libgcc_pic.a +NOSHARED= broken +.endif + #SUBDIR= doc LIB= stdc++ ==== //depot/projects/ia64/gnu/usr.bin/cc/cc_int/Makefile#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/usr.bin/cc/cc_int/Makefile,v 1.32 2002/09/17 01:48:49 peter Exp $ +# $FreeBSD: src/gnu/usr.bin/cc/cc_int/Makefile,v 1.33 2003/05/24 20:58:47 peter Exp $ .include "../Makefile.inc" @@ -23,8 +23,19 @@ toplev.c tree.c unroll.c varasm.c version.c xcoffout.c \ alias.c bitmap.c dyn-string.c \ gcse.c genrtl.c profile.c regmove.c varray.c \ - attribs.c cselib.c debug.c rtl-error.c tree-dump.c tree-inline.c \ - ${GCC_CPU}.c + attribs.c cselib.c debug.c rtl-error.c tree-dump.c tree-inline.c + +.if ${TARGET_ARCH} != "amd64" +SRCS+= ${GCC_CPU}.c +.else +SRCS+= i386-hacked.c +CLEANFILES+= i386-hacked.c + +i386-hacked.c: ${GCCDIR}/config/i386/i386.c amd64.patch + rm -f i386-hacked.c # in case p4 readonly copied + cp ${GCCDIR}/config/i386/i386.c i386-hacked.c + patch -b .orig < ${.CURDIR}/amd64.patch +.endif SRCS+= bb-reorder.c conflict.c ggc-common.c \ ggc-page.c ifcvt.c lists.c predict.c regrename.c resource.c sibcall.c \ ==== //depot/projects/ia64/lib/libc/amd64/SYS.h#2 (text+ko) ==== @@ -34,19 +34,30 @@ * SUCH DAMAGE. * * @(#)SYS.h 5.5 (Berkeley) 5/7/91 - * $FreeBSD: src/lib/libc/amd64/SYS.h,v 1.25 2003/04/30 18:06:14 peter Exp $ + * $FreeBSD: src/lib/libc/amd64/SYS.h,v 1.26 2003/05/24 17:35:23 peter Exp $ */ #include #include -#define SYSCALL(x) 2: jmp PIC_PLT(HIDENAME(cerror)); \ +#ifdef PIC +#define SYSCALL(x) 2: movq PIC_GOT(HIDENAME(cerror)),%rcx; \ + jmp *%rcx; \ + ENTRY(__CONCAT(__sys_,x)); \ + .weak CNAME(x); \ + .set CNAME(x),CNAME(__CONCAT(__sys_,x)); \ + .weak CNAME(__CONCAT(_,x)); \ + .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \ + mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2b +#else +#define SYSCALL(x) 2: jmp HIDENAME(cerror); \ ENTRY(__CONCAT(__sys_,x)); \ .weak CNAME(x); \ .set CNAME(x),CNAME(__CONCAT(__sys_,x)); \ .weak CNAME(__CONCAT(_,x)); \ .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \ mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2b +#endif #define RSYSCALL(x) SYSCALL(x); ret ==== //depot/projects/ia64/lib/libc/amd64/sys/brk.S#2 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)brk.s 5.2 (Berkeley) 12/17/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/brk.S,v 1.11 2003/04/30 18:16:33 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/brk.S,v 1.12 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" @@ -51,17 +51,36 @@ ENTRY(brk) pushq %rdi movq %rdi,%rax - cmpq %rax,PIC_GOT(HIDENAME(minbrk)) +#ifdef PIC + movq PIC_GOT(HIDENAME(minbrk)),%rdx + cmpq %rax,(%rdx) +#else + cmpq %rax,HIDENAME(minbrk)(%rip) +#endif jbe ok - movq PIC_GOT(HIDENAME(minbrk)),%rdi +#ifdef PIC + movq (%rdx),%rdi +#else + movq HIDENAME(minbrk)(%rip),%rdi +#endif ok: movq $SYS_break,%rax KERNCALL jb err movq 0(%rsp),%rax - movq %rax,PIC_GOT(HIDENAME(curbrk)) +#ifdef PIC + movq PIC_GOT(HIDENAME(curbrk)),%rdx + movq %rax,(%rdx) +#else + movq %rax,HIDENAME(curbrk)(%rip) +#endif movq $0,%rax popq %rdi ret err: - jmp PIC_PLT(HIDENAME(cerror)) +#ifdef PIC + movq PIC_GOT(HIDENAME(cerror)),%rdx + jmp *%rdx +#else + jmp HIDENAME(cerror) +#endif ==== //depot/projects/ia64/lib/libc/amd64/sys/exect.S#2 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)exect.s 5.1 (Berkeley) 4/23/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/exect.S,v 1.10 2003/04/30 18:16:33 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/exect.S,v 1.11 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" #include @@ -51,4 +51,9 @@ pushq %r8 popfq KERNCALL - jmp PIC_PLT(HIDENAME(cerror)) /* exect(file, argv, env); */ +#ifdef PIC + movq PIC_GOT(HIDENAME(cerror)),%rdx + jmp *%rdx +#else + jmp HIDENAME(cerror) +#endif ==== //depot/projects/ia64/lib/libc/amd64/sys/ptrace.S#2 (text+ko) ==== @@ -38,16 +38,26 @@ .asciz "@(#)ptrace.s 5.1 (Berkeley) 4/23/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/ptrace.S,v 1.10 2003/04/30 18:16:33 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/ptrace.S,v 1.11 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" ENTRY(ptrace) xorl %eax,%eax - movl %eax,PIC_GOT(CNAME(errno)) +#ifdef PIC + movq PIC_GOT(CNAME(errno)),%r8 + movl %eax,(%r8) +#else + movl %eax,CNAME(errno)(%rip) +#endif mov $SYS_ptrace,%eax KERNCALL jb err ret err: - jmp PIC_PLT(HIDENAME(cerror)) +#ifdef PIC + movq PIC_GOT(HIDENAME(cerror)),%rdx + jmp *%rdx +#else + jmp HIDENAME(cerror) +#endif ==== //depot/projects/ia64/lib/libc/amd64/sys/sbrk.S#2 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)sbrk.s 5.1 (Berkeley) 4/23/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/sbrk.S,v 1.12 2003/04/30 18:16:33 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/sbrk.S,v 1.13 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" @@ -54,19 +54,38 @@ ENTRY(sbrk) pushq %rdi movq %rdi,%rcx - movq PIC_GOT(HIDENAME(curbrk)),%rax +#ifdef PIC + movq PIC_GOT(HIDENAME(curbrk)),%rdx + movq (%rdx),%rax +#else + movq HIDENAME(curbrk)(%rip),%rax +#endif testq %rcx,%rcx jz back addq %rax,%rdi mov $SYS_break,%eax KERNCALL jb err - movq PIC_GOT(HIDENAME(curbrk)),%rax +#ifdef PIC + movq PIC_GOT(HIDENAME(curbrk)),%rdx + movq (%rdx),%rax +#else + movq HIDENAME(curbrk)(%rip),%rax +#endif movq 0(%rsp), %rcx - addq %rcx,PIC_GOT(HIDENAME(curbrk)) +#ifdef PIC + addq %rcx,(%rdx) +#else + addq %rcx,HIDENAME(curbrk)(%rip) +#endif back: addq $8, %rsp ret err: addq $8, %rsp - jmp PIC_PLT(HIDENAME(cerror)) +#ifdef PIC + movq PIC_GOT(HIDENAME(cerror)),%rdx + jmp *%rdx +#else + jmp HIDENAME(cerror) +#endif ==== //depot/projects/ia64/lib/libc/amd64/sys/setlogin.S#2 (text+ko) ==== @@ -38,12 +38,17 @@ .asciz "@(#)setlogin.s 5.2 (Berkeley) 4/12/91" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/setlogin.S,v 1.10 2003/04/30 18:16:33 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/setlogin.S,v 1.11 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" .globl CNAME(_logname_valid) /* in _getlogin() */ SYSCALL(setlogin) - movl $0,PIC_GOT(CNAME(_logname_valid)) +#ifdef PIC + movq PIC_GOT(CNAME(_logname_valid)),%rdx + movl $0,(%rdx) +#else + movl $0,CNAME(_logname_valid)(%rip) +#endif ret /* setlogin(name) */ ==== //depot/projects/ia64/lib/libc/amd64/sys/vfork.S#2 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)Ovfork.s 5.1 (Berkeley) 4/23/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/vfork.S,v 1.20 2003/04/30 18:13:13 peter Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/sys/vfork.S,v 1.21 2003/05/24 17:35:23 peter Exp $"); #include "SYS.h" @@ -53,5 +53,10 @@ jb 1f jmp *%rsi 1: - pushq %rcx - jmp PIC_PLT(HIDENAME(cerror)) + pushq %rsi +#ifdef PIC + movq PIC_GOT(HIDENAME(cerror)),%rdx + jmp *%rdx +#else + jmp HIDENAME(cerror) +#endif ==== //depot/projects/ia64/lib/libc/posix1e/mac.conf.5#3 (text+ko) ==== @@ -27,23 +27,22 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac.conf.5,v 1.3 2003/04/26 03:32:18 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac.conf.5,v 1.4 2003/05/24 19:50:43 ru Exp $ .\" .Dd April 19, 2003 .Dt MAC.CONF 5 .Os .Sh NAME .Nm mac.conf -.Nd Format of the MAC library configuration file +.Nd format of the MAC library configuration file .Sh DESCRIPTION The .Nm file configures the default label elements to be used by policy-agnostic applications that operate on MAC labels. -.Nm -contains a series of default label sets specified by object class, +A file contains a series of default label sets specified by object class, in addition to blank lines and comments preceded by a -.Dv # +.Ql # symbol. .Pp Each declaration consists of a single line with two fields separated @@ -53,7 +52,7 @@ library calls prior to an application invocation of a function from .Xr mac_get 3 . Label element names may optionally begin with a -.Dv ? +.Ql \&? symbol to indicate that a failure to retrieve the label element for an object should be silently ignored, and improves usability if the set of MAC policies may change over time. @@ -86,9 +85,9 @@ MAC library configuration file. .El .Sh SEE ALSO +.Xr mac 3 , .Xr mac_get 3 , .Xr mac_prepare 3 , -.Xr mac 3 , .Xr mac 4 , .Xr mac 9 .Sh HISTORY ==== //depot/projects/ia64/lib/libc_r/man/pthread_getconcurrency.3#2 (text+ko) ==== @@ -22,12 +22,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc_r/man/pthread_getconcurrency.3,v 1.1 2003/04/20 01:53:12 jdp Exp $ +.\" $FreeBSD: src/lib/libc_r/man/pthread_getconcurrency.3,v 1.2 2003/05/24 19:50:43 ru Exp $ .Dd April 11, 2003 .Dt PTHREAD_GETCONCURRENCY 3 .Os .Sh NAME -.Nm pthread_getconcurrency, +.Nm pthread_getconcurrency , .Nm pthread_setconcurrency .Nd get or set level of concurrency .Sh LIBRARY @@ -35,7 +35,7 @@ .Sh SYNOPSIS .In pthread.h .Ft int -.Fn pthread_getconcurrency "void" +.Fn pthread_getconcurrency void .Ft int .Fn pthread_setconcurrency "int new_level" .Sh DESCRIPTION @@ -43,29 +43,37 @@ .Fn pthread_getconcurrency function allows an application to inform the threads implementation of its desired concurrency level, -.Va new_level . +.Fa new_level . The actual level of concurrency provided by the implementation -as a result of this function call is unspecified. If new_level is -zero, it causes the implementation to maintain the concurrency +as a result of this function call is unspecified. +If +.Fa new_level +is zero, it causes the implementation to maintain the concurrency level at its discretion as if .Fn pthread_setconcurrency -was never called. The +was never called. +The .Fn pthread_getconcurrency function returns the value set by a previous call to the .Fn pthread_setconcurrency -function. If the +function. +If the .Fn pthread_setconcurrency function was not previously called, this function returns zero to indicate that the implementation is maintaining the concurrency -level. When an application calls -.Fn pthread_setconcurrency +level. +When an application calls +.Fn pthread_setconcurrency , it is informing the implementation of its desired concurrency -level. The implementation uses this as a hint, not a requirement. +level. +The implementation uses this as a hint, not a requirement. .Sh RETURN VALUES If successful, the .Fn pthread_setconcurrency -function returns zero. Otherwise, an error number is returned -to indicate the error. The +function returns zero. +Otherwise, an error number is returned +to indicate the error. +The .Fn pthread_getconcurrency function always returns the concurrency level set by a previous call to @@ -82,21 +90,21 @@ .Bl -tag -width Er .It Bq Er EINVAL The value specified by -.Va new_level +.Fa new_level is negative. .It Bq Er EAGAIN -The value specific by -.Va new_level +The value specified by +.Fa new_level would cause a system resource to be exceeded. .El .Sh APPLICATION USAGE Use of these functions changes the state of the underlying -concurrency upon which the application depends. Library -developers are advised to not use the +concurrency upon which the application depends. +Library developers are advised to not use the .Fn pthread_getconcurrency and .Fn pthread_setconcurrency -functions since their use may conflict with an applications +functions since their use may conflict with an application's use of these functions. .Sh STANDARDS The @@ -104,4 +112,4 @@ and .Fn pthread_setconcurrency functions conform to -.St -susv2 +.St -susv2 . ==== //depot/projects/ia64/lib/libpam/modules/pam_chroot/pam_chroot.8#3 (text+ko) ==== @@ -3,7 +3,7 @@ .\" .\" Portions of this software were developed for the FreeBSD Project by .\" ThinkSec AS and NAI Labs, the Security Research Division of Network -.\" Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 +.\" Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 .\" ("CBOSS"), as part of the DARPA CHATS research program. .\" .\" Redistribution and use in source and binary forms, with or without @@ -30,7 +30,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libpam/modules/pam_chroot/pam_chroot.8,v 1.2 2003/04/08 16:52:18 des Exp $ +.\" $FreeBSD: src/lib/libpam/modules/pam_chroot/pam_chroot.8,v 1.3 2003/05/24 19:50:43 ru Exp $ .\" .Dd February 10, 2003 .Dt PAM_CHROOT 8 @@ -48,11 +48,11 @@ The chroot service module for PAM chroots users into either a predetermined directory or one derived from their home directory. If a user's home directory as specified in the -.Dv passwd +.Vt passwd structure returned by .Xr getpwnam 3 contains the string -.Dq /./ , +.Dq Li /./ , the portion of the directory name to the left of that string is used as the chroot directory, and the portion to the right will be the current working directory inside the chroot tree. @@ -63,7 +63,7 @@ options (see below) are used. .Bl -tag -width ".Cm also_root" .It Cm also_root -Do not hold user id 0 exempt from the chroot requirement. +Do not hold user ID 0 exempt from the chroot requirement. .It Cm always Report a failure if a chroot directory could not be derived from the user's home directory, and the ==== //depot/projects/ia64/lib/libpthread/man/pthread_attr_get_np.3#2 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libpthread/man/pthread_attr_get_np.3,v 1.1 2003/03/03 22:40:20 phantom Exp $ +.\" $FreeBSD: src/lib/libpthread/man/pthread_attr_get_np.3,v 1.2 2003/05/24 19:50:43 ru Exp $ .\" .Dd January 31, 2003 .Dt PTHREAD_ATTR_GET_NP 3 @@ -87,8 +87,9 @@ function returns 0. Otherwise, an error number is returned to indicate the error. .Sh ERRORS +The .Fn pthread_attr_get_np -will fail if: +function will fail if: .Bl -tag -width Er .It Bq Er EINVAL Invalid value for one of given parameters. ==== //depot/projects/ia64/lib/libpthread/sys/lock.c#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/sys/lock.c,v 1.4 2003/05/16 19:58:29 deischen Exp $ + * $FreeBSD: src/lib/libpthread/sys/lock.c,v 1.5 2003/05/24 02:29:25 deischen Exp $ */ #include @@ -64,7 +64,6 @@ lck->l_head->lr_locked = 0; lck->l_head->lr_watcher = NULL; lck->l_head->lr_owner = NULL; - lck->l_head->lr_waiting = 0; lck->l_head->lr_active = 1; lck->l_tail = lck->l_head; } @@ -84,7 +83,6 @@ lu->lu_myreq->lr_locked = 1; lu->lu_myreq->lr_watcher = NULL; lu->lu_myreq->lr_owner = lu; - lu->lu_myreq->lr_waiting = 0; lu->lu_myreq->lr_active = 0; lu->lu_watchreq = NULL; lu->lu_priority = 0; @@ -109,6 +107,7 @@ _lock_acquire(struct lock *lck, struct lockuser *lu, int prio) { int i; + long lval; /** * XXX - We probably want to remove these checks to optimize @@ -126,7 +125,6 @@ LCK_ASSERT(lu->lu_myreq->lr_locked == 1); LCK_ASSERT(lu->lu_myreq->lr_watcher == NULL); LCK_ASSERT(lu->lu_myreq->lr_owner == lu); - LCK_ASSERT(lu->lu_myreq->lr_waiting == 0); LCK_ASSERT(lu->lu_watchreq == NULL); lu->lu_priority = prio; @@ -169,10 +167,13 @@ if (lu->lu_watchreq->lr_active == 0) break; } - atomic_store_rel_long(&lu->lu_watchreq->lr_waiting, 1); - while (lu->lu_watchreq->lr_locked != 0) + atomic_swap_long((long *)&lu->lu_watchreq->lr_locked, + 2, &lval); + if (lval == 0) + lu->lu_watchreq->lr_locked = 0; + else lck->l_wait(lck, lu); - atomic_store_rel_long(&lu->lu_watchreq->lr_waiting, 0); + } } lu->lu_myreq->lr_active = 1; @@ -187,6 +188,7 @@ struct lockuser *lu_tmp, *lu_h; struct lockreq *myreq; int prio_h; + long lval; /** * XXX - We probably want to remove these checks to optimize @@ -224,7 +226,6 @@ lu->lu_myreq->lr_locked = 1; lu->lu_myreq->lr_owner = lu; lu->lu_myreq->lr_watcher = NULL; - lu->lu_myreq->lr_waiting = 0; /* * Traverse the list of lock requests in reverse order * looking for the user with the highest priority. @@ -238,17 +239,26 @@ } if (lu_h != NULL) { /* Give the lock to the highest priority user. */ - if ((lu_h->lu_watchreq->lr_waiting != 0) && - (lck->l_wakeup != NULL)) - /* Notify the sleeper */ - lck->l_wakeup(lck, lu_h->lu_myreq->lr_watcher); + if (lck->l_wakeup != NULL) { + atomic_swap_long( + (long *)&lu_h->lu_watchreq->lr_locked, + 0, &lval); + if (lval == 2) + /* Notify the sleeper */ + lck->l_wakeup(lck, + lu_h->lu_myreq->lr_watcher); + } else - atomic_store_rel_long(&lu_h->lu_watchreq->lr_locked, 0); + atomic_store_rel_long( + &lu_h->lu_watchreq->lr_locked, 0); } else { - if ((myreq->lr_waiting != 0) && - (lck->l_wakeup != NULL)) - /* Notify the sleeper */ - lck->l_wakeup(lck, myreq->lr_watcher); + if (lck->l_wakeup != NULL) { + atomic_swap_long((long *)&myreq->lr_locked, + 0, &lval); + if (lval == 2) + /* Notify the sleeper */ + lck->l_wakeup(lck, myreq->lr_watcher); + } else /* Give the lock to the previous request. */ atomic_store_rel_long(&myreq->lr_locked, 0); @@ -263,10 +273,12 @@ lu->lu_myreq = lu->lu_watchreq; lu->lu_watchreq = NULL; lu->lu_myreq->lr_locked = 1; - lu->lu_myreq->lr_waiting = 0; - if (myreq->lr_waiting != 0 && lck->l_wakeup) - /* Notify the sleeper */ - lck->l_wakeup(lck, myreq->lr_watcher); + if (lck->l_wakeup) { + atomic_swap_long((long *)&myreq->lr_locked, 0, &lval); + if (lval == 2) + /* Notify the sleeper */ + lck->l_wakeup(lck, myreq->lr_watcher); + } else /* Give the lock to the previous request. */ atomic_store_rel_long(&myreq->lr_locked, 0); @@ -277,7 +289,7 @@ void _lock_grant(struct lock *lck /* unused */, struct lockuser *lu) { - atomic_store_rel_long(&lu->lu_watchreq->lr_locked, 0); + atomic_store_rel_long(&lu->lu_watchreq->lr_locked, 3); } void ==== //depot/projects/ia64/lib/libpthread/sys/lock.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/sys/lock.h,v 1.4 2003/05/16 19:58:29 deischen Exp $ + * $FreeBSD: src/lib/libpthread/sys/lock.h,v 1.5 2003/05/24 02:29:25 deischen Exp $ */ #ifndef _LOCK_H_ @@ -54,7 +54,6 @@ volatile long lr_locked; /* lock granted = 0, busy otherwise */ struct lockuser *lr_watcher; /* only used for priority locks */ struct lockuser *lr_owner; /* only used for priority locks */ - long lr_waiting; /* non-zero when wakeup needed */ volatile int lr_active; /* non-zero if the lock is last lock for thread */ }; @@ -73,7 +72,7 @@ #define _LCK_BUSY(lu) ((lu)->lu_watchreq->lr_locked != 0) #define _LCK_ACTIVE(lu) ((lu)->lu_watchreq->lr_active != 0) -#define _LCK_GRANTED(lu) ((lu)->lu_watchreq->lr_locked == 0) +#define _LCK_GRANTED(lu) ((lu)->lu_watchreq->lr_locked == 3) #define _LCK_SET_PRIVATE(lu, p) (lu)->lu_private = (void *)(p) #define _LCK_GET_PRIVATE(lu) (lu)->lu_private ==== //depot/projects/ia64/lib/libpthread/thread/thr_cancel.c#6 (text+ko) ==== @@ -1,6 +1,6 @@ /* * David Leonard , 1999. Public domain. - * $FreeBSD: src/lib/libpthread/thread/thr_cancel.c,v 1.20 2003/05/06 00:02:54 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_cancel.c,v 1.21 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -19,6 +19,7 @@ _pthread_cancel(pthread_t pthread) { struct pthread *curthread = _get_curthread(); + struct pthread *joinee = NULL; int ret; if ((ret = _thr_ref_add(curthread, pthread, /*include dead*/0)) == 0) { @@ -64,7 +65,17 @@ break; case PS_JOIN: + /* Disconnect the thread from the joinee: */ + joinee = pthread->join_status.thread; + pthread->join_status.thread = NULL; pthread->cancelflags |= THR_CANCELLING; + _thr_setrunnable_unlocked(pthread); + if ((joinee != NULL) && + (curthread->kseg == joinee->kseg)) { + /* Remove the joiner from the joinee. */ + joinee->joiner = NULL; + joinee = NULL; + } break; case PS_SUSPENDED: @@ -103,6 +114,15 @@ */ THR_SCHED_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); + + if ((joinee != NULL) && + (_thr_ref_add(curthread, joinee, /* include dead */1) == 0)) { + /* Remove the joiner from the joinee. */ + THR_SCHED_LOCK(curthread, joinee); + joinee->joiner = NULL; + THR_SCHED_UNLOCK(curthread, joinee); + _thr_ref_delete(curthread, joinee); + } } return (ret); } ==== //depot/projects/ia64/lib/libpthread/thread/thr_concurrency.c#3 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/thread/thr_concurrency.c,v 1.2 2003/04/28 23:56:11 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_concurrency.c,v 1.3 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -103,6 +103,7 @@ TAILQ_INSERT_TAIL(&newkse->k_kseg->kg_kseq, newkse, k_kgqe); newkse->k_kseg->kg_ksecount++; + newkse->k_flags |= KF_STARTED; KSE_SCHED_UNLOCK(curthread->kse, newkse->k_kseg); if (kse_create(&newkse->k_mbx, 0) != 0) { KSE_SCHED_LOCK(curthread->kse, newkse->k_kseg); ==== //depot/projects/ia64/lib/libpthread/thread/thr_cond.c#9 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/thread/thr_cond.c,v 1.41 2003/05/19 23:04:50 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_cond.c,v 1.42 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -184,6 +184,9 @@ (rval = pthread_cond_init(cond, NULL)) != 0) return (rval); + if (!_kse_isthreaded()) + _kse_setthreaded(1); + /* * Enter a loop waiting for a condition signal or broadcast * to wake up this thread. A loop is needed in case the waiting @@ -388,6 +391,9 @@ if (*cond == NULL && (rval = pthread_cond_init(cond, NULL)) != 0) return (rval); + if (!_kse_isthreaded()) + _kse_setthreaded(1); + /* * Enter a loop waiting for a condition signal or broadcast * to wake up this thread. A loop is needed in case the waiting ==== //depot/projects/ia64/lib/libpthread/thread/thr_create.c#9 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/thread/thr_create.c,v 1.44 2003/05/04 16:17:01 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_create.c,v 1.45 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -44,8 +44,6 @@ #include "thr_private.h" #include "libc_private.h" -static u_int64_t next_uniqueid = 1; - #define OFF(f) offsetof(struct pthread, f) int _thread_next_offset = OFF(tle.tqe_next); int _thread_uniqueid_offset = OFF(uniqueid); @@ -145,8 +143,13 @@ || ((kseg = _kseg_alloc(curthread)) == NULL))) { /* Insufficient memory to create a new KSE/KSEG: */ ret = EAGAIN; - if (kse != NULL) +#ifndef KMF_DONE +#define KMF_DONE 0x04 +#endif + if (kse != NULL) { + kse->k_mbx.km_flags |= KMF_DONE; _kse_free(curthread, kse); + } if ((new_thread->attr.flags & THR_STACK_USER) == 0) { crit = _kse_critical_enter(); curkse = _get_curkse(); @@ -161,7 +164,8 @@ else { if (kseg != NULL) { /* Add the KSE to the KSEG's list of KSEs. */ - TAILQ_INSERT_HEAD(&kseg->kg_kseq, kse, k_qe); + TAILQ_INSERT_HEAD(&kseg->kg_kseq, kse, k_kgqe); + kseg->kg_ksecount = 1; kse->k_kseg = kseg; kse->k_schedq = &kseg->kg_schedq; } @@ -286,30 +290,11 @@ kse->k_mbx.km_curthread = NULL; } - crit = _kse_critical_enter(); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_list_lock); /* - * Initialise the unique id which GDB uses to - * track threads. - */ - new_thread->uniqueid = next_uniqueid++; - /* Add the thread to the linked list of all threads: */ - THR_LIST_ADD(new_thread); - KSE_LOCK_RELEASE(curthread->kse, &_thread_list_lock); - - /* * Schedule the new thread starting a new KSEG/KSE * pair if necessary. */ ret = _thr_schedule_add(curthread, new_thread); - if (ret != 0) { - KSE_LOCK_ACQUIRE(curthread->kse, - &_thread_list_lock); - THR_LIST_REMOVE(new_thread); - KSE_LOCK_RELEASE(curthread->kse, - &_thread_list_lock); - } - _kse_critical_leave(crit); if (ret != 0) free_thread(curthread, new_thread); @@ -341,7 +326,7 @@ /* Check if a stack was specified in the thread attributes: */ if ((pattr->stackaddr_attr) != NULL) { pattr->guardsize_attr = 0; - pattr->flags = THR_STACK_USER; + pattr->flags |= THR_STACK_USER; ret = 0; } else ==== //depot/projects/ia64/lib/libpthread/thread/thr_detach.c#4 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/thread/thr_detach.c,v 1.21 2003/04/28 23:56:11 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_detach.c,v 1.22 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -70,8 +70,7 @@ /* Retrieve any joining thread and remove it: */ joiner = pthread->joiner; - pthread->joiner = NULL; - if (joiner->kseg == pthread->kseg) { + if ((joiner != NULL) && (joiner->kseg == pthread->kseg)) { /* * We already own the scheduler lock for the joiner. * Take advantage of that and make the joiner runnable. @@ -89,10 +88,10 @@ joiner = NULL; } THR_SCHED_UNLOCK(curthread, pthread); - _thr_ref_delete(curthread, pthread); /* See if there is a thread waiting in pthread_join(): */ - if (joiner != NULL && _thr_ref_add(curthread, joiner, 0) == 0) { + if ((joiner != NULL) && + (_thr_ref_add(curthread, joiner, 0) == 0)) { /* Lock the joiner before fiddling with it. */ THR_SCHED_LOCK(curthread, joiner); if (joiner->join_status.thread == pthread) { @@ -108,6 +107,7 @@ THR_SCHED_UNLOCK(curthread, joiner); _thr_ref_delete(curthread, joiner); } + _thr_ref_delete(curthread, pthread); } /* Return the completion status: */ ==== //depot/projects/ia64/lib/libpthread/thread/thr_find_thread.c#4 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/thread/thr_find_thread.c,v 1.11 2003/04/28 23:56:11 deischen Exp $ + * $FreeBSD: src/lib/libpthread/thread/thr_find_thread.c,v 1.12 2003/05/24 02:29:25 deischen Exp $ */ #include #include @@ -47,13 +47,15 @@ { kse_critical_t crit; >>> TRUNCATED FOR MAIL (1000 lines) <<<