From f01c2359ebd4ed130ea0bfa67b59db896cb55cd5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 17 Dec 2009 13:49:36 -0800 Subject: Small optimization of pthread_rwlock_init. --- nptl/ChangeLog | 5 +++++ nptl/pthread_rwlock_init.c | 17 ++++------------- 2 files changed, 9 insertions(+), 13 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index b05f6e4a03..8cea2f648f 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2009-12-17 Ulrich Drepper + + * pthread_rwlock_init.c (__pthread_rwlock_init): Simplify code by + using memset. + 2009-12-01 Dinakar Guniguntala * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.h: Define diff --git a/nptl/pthread_rwlock_init.c b/nptl/pthread_rwlock_init.c index 27f25ac2ab..c0aa194107 100644 --- a/nptl/pthread_rwlock_init.c +++ b/nptl/pthread_rwlock_init.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -37,13 +37,7 @@ __pthread_rwlock_init (rwlock, attr) iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_attr; - rwlock->__data.__lock = 0; - rwlock->__data.__nr_readers = 0; - rwlock->__data.__readers_wakeup = 0; - rwlock->__data.__writer_wakeup = 0; - rwlock->__data.__nr_readers_queued = 0; - rwlock->__data.__nr_writers_queued = 0; - rwlock->__data.__writer = 0; + memset (rwlock, '\0', sizeof (*rwlock)); rwlock->__data.__flags = iattr->lockkind == PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP; @@ -56,8 +50,8 @@ __pthread_rwlock_init (rwlock, attr) 0x80 in case private futexes are available and zero otherwise. This leads to the following table: - | pshared | result - | shared private | shared private | + | pshared | result + | shared private | shared private | ------------+-----------------+-----------------+ !avail 0 | 0 0 | 0 0 | avail 0x80 | 0x80 0 | 0 0x80 | @@ -74,9 +68,6 @@ __pthread_rwlock_init (rwlock, attr) header.private_futex)); #endif - rwlock->__data.__pad1 = 0; - rwlock->__data.__pad2 = 0; - return 0; } strong_alias (__pthread_rwlock_init, pthread_rwlock_init) -- cgit v1.2.3 From d34bd80fceb76fa66308bd8005ad28be96a01e36 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 22 Dec 2009 08:37:33 -0800 Subject: Fix s390 startup code in libpthread. --- nptl/ChangeLog | 6 ++++++ nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c | 10 +--------- nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c | 8 +------- 3 files changed, 8 insertions(+), 16 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 8cea2f648f..389bed4a68 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2009-12-18 Thomas Schwinge + + * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c (_init): Don't + call __gmon_start__. + * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c (_init): Likewise. + 2009-12-17 Ulrich Drepper * pthread_rwlock_init.c (__pthread_rwlock_init): Simplify code by diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c index 40d4d50c32..eb09b4aaa9 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c +++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c @@ -1,5 +1,5 @@ /* Special .init and .fini section support for S/390. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it @@ -67,8 +67,6 @@ _init:\n\ .LT1_0:\n\ .LC13:\n\ .long __pthread_initialize_minimal_internal-.LT1_0\n\ -.LC14:\n\ - .long __gmon_start__@GOT\n\ .LC15:\n\ .long _GLOBAL_OFFSET_TABLE_-.LT1_0\n\ .LTN1_0:\n\ @@ -80,12 +78,6 @@ _init:\n\ L 1,.LC13-.LT1_0(13)\n\ LA 1,0(1,13)\n\ BASR 14,1\n\ - L 1,.LC14-.LT1_0(13)\n\ - L 1,0(1,12)\n\ - LTR 1,1\n\ - JE .L22\n\ - BASR 14,1\n\ -.L22:\n\ #APP\n\ .align 4,0x07\n\ END_INIT\n\ diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c index a102d07d6c..34951f6fbb 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c +++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c @@ -1,5 +1,5 @@ /* Special .init and .fini section support for 64 bit S/390. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it @@ -68,12 +68,6 @@ _init:\n\ STG 1,0(15)\n\ LARL 12,_GLOBAL_OFFSET_TABLE_\n\ BRASL 14,__pthread_initialize_minimal_internal\n\ - LARL 1,__gmon_start__@GOTENT\n\ - LG 1,0(1)\n\ - LTGR 1,1\n\ - JE .L22\n\ - BASR 14,1\n\ -.L22:\n\ #APP\n\ .align 4,0x07\n\ END_INIT\n\ -- cgit v1.2.3