From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9201 invoked by alias); 28 Apr 2014 15:51:43 -0000 Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org Received: (qmail 9191 invoked by uid 89); 28 Apr 2014 15:51:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qc0-f179.google.com Received: from mail-qc0-f179.google.com (HELO mail-qc0-f179.google.com) (209.85.216.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 28 Apr 2014 15:51:41 +0000 Received: by mail-qc0-f179.google.com with SMTP id l6so6170462qcy.24 for ; Mon, 28 Apr 2014 08:51:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=EYs8DmS1dQpNPlRQuS3+azql1J+O93C5EGuWHbigKqE=; b=USyLS1YfidUtq5DX5PcrVa1oKAgxMNA6ADnYkeSM5G6X2fZLPKqAPdqIt5MlX01hCO S8u76NaMp7wj6puwmpFeM/BLez586mBBVK38oxtdVSL1BNcg0sITd5xvG/p4HoaEqDi1 C5yraaem5BXhrmw6/W1d/yKdhUMcYFaJuAH5GXRuW+DJwjz3LtY/T5RMUHLNPajYQPEa AVh7bofD2H7zb5fA0DPkrJuK3JRj6v3gkEEvFffWonmYWct2FdMrx61pdEbNGXkIWTUJ EQ1wzss4Zi+/kV1WLNTrVrhlT0x2Vn3qwvYY1Po8PJIA/7AbtYRkPQdgfdEUTzc9oQao s72Q== X-Gm-Message-State: ALoCoQlrOxs/0XG1p0LGCntzG8a1wis1v9+VQM6bTw3W1GPeCINzGrID2fzJavZH1+m8gbOSrPXF MIME-Version: 1.0 X-Received: by 10.140.43.70 with SMTP id d64mr32923072qga.11.1398700299026; Mon, 28 Apr 2014 08:51:39 -0700 (PDT) Received: by 10.96.152.200 with HTTP; Mon, 28 Apr 2014 08:51:38 -0700 (PDT) Date: Mon, 28 Apr 2014 15:51:00 -0000 Message-ID: Subject: [PATCH] Remove hppa lowlevellock.c From: Bernie Ogden To: libc-ports@sourceware.org Cc: carlos@redhat.com Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00004.txt.bz2 lowlevellock.c for hppa differs from the generic lowlevellock.c only in insignificant ways, so can be removed. I don't have any hppa targets to work with, so have not been able to test this patch. The notable differences between the hppa and generic implementations are: 1) Some functions in hppa's lowlevellock.c set futex to 2 if it was 1. The generic version always sets the futex to 2. As futex can only be 0, 1 or 2 on entry into these functions, the behaviour is equivalent. (If the futex manages to be 0 on entry then we've just lost an unlikely fast path out.) 2) hppa places most of the functions in this file in both libc and libpthread. The generic implementation places only __lll_lock_wait_private in libc. As these are internal functions I think that, if this does cause a problem, it would show up at build time - but I'm new to glibc so prepared to be corrected (and have not been able to build). I would be grateful if the maintainer could test/comment. Regards, Bernie ports/ChangeLog.hppa 2014-04-24 Bernard Ogden [BZ #15119] * ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: Remove file. diff --git a/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c b/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c deleted file mode 100644 index d61c5d3..0000000 --- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c +++ /dev/null @@ -1,127 +0,0 @@ -/* low level locking for pthread library. Generic futex-using version. - Copyright (C) 2003-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Paul Mackerras , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -void -__lll_lock_wait (lll_lock_t *futex, int private) -{ - do - { - int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1); - if (oldval != 0) - lll_futex_wait (futex, 2, private); - } - while (atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0); -} - -void -__lll_lock_wait_private (lll_lock_t *futex) -{ - do - { - int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1); - if (oldval != 0) - lll_futex_wait (futex, 2, LLL_PRIVATE); - } - while (atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0); -} - -int -__lll_timedlock_wait (lll_lock_t *futex, const struct timespec *abstime, int private) -{ - /* Reject invalid timeouts. */ - if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) - return EINVAL; - - do - { - struct timeval tv; - struct timespec rt; - - /* Get the current time. */ - (void) __gettimeofday (&tv, NULL); - - /* Compute relative timeout. */ - rt.tv_sec = abstime->tv_sec - tv.tv_sec; - rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000; - if (rt.tv_nsec < 0) - { - rt.tv_nsec += 1000000000; - --rt.tv_sec; - } - - /* Already timed out? */ - if (rt.tv_sec < 0) - return ETIMEDOUT; - - /* Wait. */ - int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1); - if (oldval != 0) - lll_futex_timed_wait (futex, 2, &rt, private); - } - while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0); - return 0; -} - - -/* These don't get included in libc.so */ -#ifdef IS_IN_libpthread -int -__lll_timedwait_tid (int *tidp, const struct timespec *abstime) -{ - int tid; - - if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) - return EINVAL; - - /* Repeat until thread terminated. */ - while ((tid = *tidp) != 0) - { - struct timeval tv; - struct timespec rt; - - /* Get the current time. */ - (void) __gettimeofday (&tv, NULL); - - /* Compute relative timeout. */ - rt.tv_sec = abstime->tv_sec - tv.tv_sec; - rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000; - if (rt.tv_nsec < 0) - { - rt.tv_nsec += 1000000000; - --rt.tv_sec; - } - - /* Already timed out? */ - if (rt.tv_sec < 0) - return ETIMEDOUT; - - /* Wait until thread terminates. */ - if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT) - return ETIMEDOUT; - } - - return 0; -} -#endif -