From patchwork Mon Apr 28 15:51:38 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernie Ogden X-Patchwork-Id: 29258 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ie0-f199.google.com (mail-ie0-f199.google.com [209.85.223.199]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id C3D4A20553 for ; Mon, 28 Apr 2014 15:51:48 +0000 (UTC) Received: by mail-ie0-f199.google.com with SMTP id at1sf9343225iec.6 for ; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:mailing-list:precedence:list-id :list-unsubscribe:list-subscribe:list-post:list-help:sender :delivered-to:mime-version:date:message-id:subject:from:to:cc :x-original-sender:x-original-authentication-results:list-archive :content-type; bh=EYs8DmS1dQpNPlRQuS3+azql1J+O93C5EGuWHbigKqE=; b=Mmc2h+PVI5dlLIYZideSQviaiRE5zj9Njc+d8EHN9bgHC4NZ0ov8eaiIA0C17Wi9e8 nbAjmXUtYSudTQg4I8VBx2uYeM0BFC9wuPXvGg9n9ZQWU3BjEnV+2noFD5DxsiWIfgMH u2Xq8zvyFzkGB8LgXeBcEqNojCI1lTYtv66upRG2MXEPNSVFIuaE7ngfHvmN13dNNN4b VVSeO8nKT0DIDLEt5QwoehjmTYnXK1LcGbrUGUGPAr+8wEk5EsP4qJvPKq3I4J707GVk APPSDjV6wzuVFokRQdtQVe69tBr+bDjUuk1yYKlWKd/aDcbTQBvO3ernORWRR3iKmRCt VgGQ== X-Gm-Message-State: ALoCoQmYL3WmWO2MBw73IZ1NC+g+43l81QjpdCwgkzLg42+5O4Kcu9yE+nY/D7foaIOmUA8f3fnD X-Received: by 10.182.236.132 with SMTP id uu4mr13162548obc.14.1398700307950; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.47.203 with SMTP id m69ls479599qga.84.gmail; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-Received: by 10.52.51.226 with SMTP id n2mr540018vdo.57.1398700307829; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) Received: from mail-ve0-x234.google.com (mail-ve0-x234.google.com [2607:f8b0:400c:c01::234]) by mx.google.com with ESMTPS id la9si3727140veb.200.2014.04.28.08.51.47 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 28 Apr 2014 08:51:47 -0700 (PDT) Received-SPF: none (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) client-ip=2607:f8b0:400c:c01::234; Received: by mail-ve0-f180.google.com with SMTP id jz11so8395318veb.11 for ; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-Received: by 10.52.252.43 with SMTP id zp11mr728909vdc.44.1398700307602; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.221.72 with SMTP id ib8csp127795vcb; Mon, 28 Apr 2014 08:51:47 -0700 (PDT) X-Received: by 10.66.191.134 with SMTP id gy6mr26208200pac.27.1398700306789; Mon, 28 Apr 2014 08:51:46 -0700 (PDT) Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id pq7si10734838pac.358.2014.04.28.08.51.46 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Apr 2014 08:51:46 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-ports-return-4796-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Received: (qmail 9201 invoked by alias); 28 Apr 2014 15:51:43 -0000 Mailing-List: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org Precedence: list List-Id: List-Unsubscribe: , List-Subscribe: List-Post: , List-Help: , Sender: libc-ports-owner@sourceware.org Delivered-To: mailing list libc-ports@sourceware.org Received: (qmail 9191 invoked by uid 89); 28 Apr 2014 15:51:42 -0000 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) 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 16:51:38 +0100 Message-ID: Subject: [PATCH] Remove hppa lowlevellock.c From: Bernie Ogden To: libc-ports@sourceware.org Cc: carlos@redhat.com X-IsSubscribed: yes X-Original-Sender: bernie.ogden@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: patch+caf_=patchwork-forward=linaro.org@linaro.org does not designate permitted sender hosts) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org; dkim=pass header.i=@sourceware.org X-Google-Group-Id: 836684582541 List-Archive: 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