From patchwork Thu May 27 20:44:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 43618 X-Patchwork-Delegate: fweimer@redhat.com Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 34684395C834; Thu, 27 May 2021 20:45:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 34684395C834 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1622148307; bh=gIDGAM39kO8MfzBMuun6BaGU08y/DjIsaOUx+bVj66A=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=gopaB23YUA/hP6V0rXpIwkjn7PI7c0Ea//OiWRBFSAtjnzyqlnW7zlc1RmQCWXtg7 PA0a57AhUTyD0+mhHDHryyPNw1MQDnOqY93DUnICoXElHK70NMS4PD2MCzT/rM7gkH iH8GQNFEoSrhJ9lFkexcxVKZeUeA4gtAhks5r3lA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) by sourceware.org (Postfix) with ESMTPS id 922C9395BC29 for ; Thu, 27 May 2021 20:45:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 922C9395BC29 Received: by mail-qv1-xf33.google.com with SMTP id k2so833986qvc.5 for ; Thu, 27 May 2021 13:45:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gIDGAM39kO8MfzBMuun6BaGU08y/DjIsaOUx+bVj66A=; b=tJjpoE6FZ9lcRfYZcUMKsWVKJdfM8VBwLwXcTySJZ1cvOKrMYVzZumoHWztWS4f/4S 1TuFjg8drhfz7gFysAjpCtN8ukKrM4M+seQ9FA9reaJz7WtDM4epOkas4DmZeZJwr9I/ naKqdfeWaz9nYMPMkwNFraDW47TCXB0nmN9GtuqViLipAGlQa0iFQ6UaTFA+epA3jMjk 76F6Fz967VHUwM1sG+SWAyIZq4Rpx+HX4wYl/QOhYchbXuXEZWoRKiRobfdjjDq8wep2 N0impJHOtRmppVj6ILxFtBn8e+80j3j9LyiYRICfaj9LkexaUtzPa4BTARS+IfIbGPxw I+Ew== X-Gm-Message-State: AOAM531KFPMxbml/oVa9bMpmmufSkOgbyarfKdpyoy7D0/mNX7rUdbqV NIeGkKzoL4XlBrJC2s9jzZFPAmy+LsU03Q== X-Google-Smtp-Source: ABdhPJwQlLA970o8VwqfqhDCrB4q5h8nUVx87tJOOVMrjMjgWQ0C3EGV2SnsDFbCWEeO727MMCSaqg== X-Received: by 2002:a05:6214:766:: with SMTP id f6mr446989qvz.17.1622148303050; Thu, 27 May 2021 13:45:03 -0700 (PDT) Received: from birita.. ([177.194.37.86]) by smtp.googlemail.com with ESMTPSA id e14sm2058385qkl.1.2021.05.27.13.45.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 May 2021 13:45:02 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 1/4] libio: Assume _IO_lock_inexpensive Date: Thu, 27 May 2021 17:44:54 -0300 Message-Id: <20210527204457.1250196-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> References: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" It is already set by both Linux and Hurd. --- libio/libio.h | 11 ++--------- sysdeps/mach/libc-lock.h | 3 --- sysdeps/nptl/stdio-lock.h | 3 --- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/libio/libio.h b/libio/libio.h index 511b39457f..be2cde61e2 100644 --- a/libio/libio.h +++ b/libio/libio.h @@ -282,17 +282,10 @@ libc_hidden_proto (_IO_sgetn) # undef _IO_ftrylockfile # define _IO_peekc(_fp) _IO_peekc_locked (_fp) -# if _IO_lock_inexpensive -# define _IO_flockfile(_fp) \ +# define _IO_flockfile(_fp) \ if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_lock (*(_fp)->_lock) -# define _IO_funlockfile(_fp) \ +# define _IO_funlockfile(_fp) \ if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_unlock (*(_fp)->_lock) -# else -# define _IO_flockfile(_fp) \ - if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_flockfile (_fp) -# define _IO_funlockfile(_fp) \ - if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_funlockfile (_fp) -# endif #endif /* _IO_MTSAFE_IO */ #endif /* _LIBIO_H */ diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h index d713f34b5f..220fcee921 100644 --- a/sysdeps/mach/libc-lock.h +++ b/sysdeps/mach/libc-lock.h @@ -24,9 +24,6 @@ #include #include -/* The locking here is very inexpensive, even for inlining. */ -#define _IO_lock_inexpensive 1 - typedef unsigned int __libc_lock_t; typedef struct { diff --git a/sysdeps/nptl/stdio-lock.h b/sysdeps/nptl/stdio-lock.h index f2eee49816..a4f419b516 100644 --- a/sysdeps/nptl/stdio-lock.h +++ b/sysdeps/nptl/stdio-lock.h @@ -23,9 +23,6 @@ #include -/* The locking here is very inexpensive, even for inlining. */ -#define _IO_lock_inexpensive 1 - typedef struct { int lock; int cnt; void *owner; } _IO_lock_t; #define _IO_lock_t_defined 1 From patchwork Thu May 27 20:44:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 43620 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D8B80396D80C; Thu, 27 May 2021 20:45:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D8B80396D80C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1622148311; bh=gNuCpKomZ04V+9rnsKBFthCeXkJwUJf2MCWxJ3lWY58=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=JF1enitIy1HDZZcn/m4Ue0BcCdV3UQNs8LIBBvIuNTOi6bB2YgGzDQx34rMv4zEAL rI1wXrYTtJOvTxrA4SX6nw4YfXLcJTNXNFJlaHMAosrX7BWmHwKOA89XrEQ22MSUOq LptJNJ3sXR1eLGrYlqVobDZBSMVgPXBH89BLVXu8= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by sourceware.org (Postfix) with ESMTPS id A8DC53853819 for ; Thu, 27 May 2021 20:45:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A8DC53853819 Received: by mail-qv1-xf2b.google.com with SMTP id ez19so843562qvb.3 for ; Thu, 27 May 2021 13:45:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gNuCpKomZ04V+9rnsKBFthCeXkJwUJf2MCWxJ3lWY58=; b=OsoC325JS5ALNArOB/LZHNcLR86msG0Kd2d25S3TXvneAjvaK+lvUZNpQhX3AoIdhj nDYI7hwPXTJsakomBOSJcpM12EvTUfUcicmB0rkMx10lA6V9pRCwxAosfNi8Zq4XYgbk 2QEXItYfvAul7s2FuZQGuEVegkNTWjSQJfe3/D9aHsO66N48aZ0vx0sz89ejSp86vn3V BJ80iMfKuyHeHi6IOqDimWGOOS1Vu6wNQP/W8a/HWSitp1lqyFmOCiqUczrOjHLx8ndB h0Ki7oLzH10TaO8QXQ3PWH25zHyWFSD3SNL0v0EtjVxYdMCHnm1jGThE4Od0MADeoF2l T+Cg== X-Gm-Message-State: AOAM532Y/ibJPr9WODIcrFN/MMK6QfV6mK5qA4pLAH5ZPwzcQRnWDZsO 002OFkUZSRuU1Nyso30xl65GtHAxxWuu1Q== X-Google-Smtp-Source: ABdhPJzHzJq4fHy1xv5h+51eXREajHItneGJh6SOVoxLuI1Gjc/rBqNG5FUHdeb1xr2mTQOLWkRUQg== X-Received: by 2002:a05:6214:118f:: with SMTP id t15mr488716qvv.20.1622148304476; Thu, 27 May 2021 13:45:04 -0700 (PDT) Received: from birita.. ([177.194.37.86]) by smtp.googlemail.com with ESMTPSA id e14sm2058385qkl.1.2021.05.27.13.45.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 May 2021 13:45:04 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 2/4] libio: Assume _IO_MTSAFE_IO Date: Thu, 27 May 2021 17:44:55 -0300 Message-Id: <20210527204457.1250196-3-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> References: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" It is already set by default on all supported architectures and it is an expectation that stdio works on multi-threaded environments. --- Makeconfig | 2 -- debug/Makefile | 43 ++++++++++++------------------- grp/Makefile | 4 +-- gshadow/Makefile | 4 +-- htl/Makefile | 2 -- hurd/vpprintf.c | 4 --- include/stdio.h | 2 +- libio/Makefile | 2 -- libio/clearerr.c | 4 --- libio/feof.c | 5 ---- libio/ferror.c | 7 +---- libio/fileno.c | 2 +- libio/fputc.c | 5 ---- libio/genops.c | 38 --------------------------- libio/getc.c | 6 ----- libio/getchar.c | 7 +---- libio/iofdopen.c | 4 --- libio/iofflush.c | 7 ----- libio/iofgets.c | 7 ----- libio/iofopen.c | 4 --- libio/iofopncook.c | 4 --- libio/iofputs.c | 7 ----- libio/iofread.c | 6 ----- libio/iofwrite.c | 6 +---- libio/iopopen.c | 14 ---------- libio/iovdprintf.c | 2 -- libio/iovsprintf.c | 2 -- libio/libio.h | 26 ++++++------------- libio/libioP.h | 30 +++------------------ libio/memstream.c | 4 --- libio/obprintf.c | 2 -- libio/oldiofdopen.c | 4 --- libio/oldiofopen.c | 4 --- libio/oldiopopen.c | 14 ---------- libio/oldstdfiles.c | 6 ----- libio/putc.c | 5 ---- libio/putchar.c | 5 ---- libio/stdfiles.c | 11 +------- libio/vasprintf.c | 2 -- libio/vsnprintf.c | 2 -- libio/vswprintf.c | 2 -- libio/wgenops.c | 2 -- libio/wmemstream.c | 4 --- nptl/Makefile | 3 --- pwd/Makefile | 1 - shadow/Makefile | 4 +-- stdio-common/Makefile | 2 -- stdio-common/vfprintf-internal.c | 4 --- stdlib/Makefile | 9 ------- stdlib/strfmon_l.c | 2 -- stdlib/strfrom-skeleton.c | 2 -- sysdeps/generic/stdio-lock.h | 4 +-- sysdeps/ieee754/float128/Makefile | 4 --- sysdeps/nptl/libc-lock.h | 2 +- sysdeps/unix/sysv/linux/Makefile | 1 - wcsmbs/Makefile | 2 -- 56 files changed, 44 insertions(+), 319 deletions(-) diff --git a/Makeconfig b/Makeconfig index 1d5e45926c..94058063f4 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1342,8 +1342,6 @@ endif # A sysdeps Makeconfig fragment may set libc-reentrant to yes. ifeq (yes,$(libc-reentrant)) defines += -D_LIBC_REENTRANT - -libio-mtsafe = -D_IO_MTSAFE_IO endif # The name to give to a test in test results summaries. diff --git a/debug/Makefile b/debug/Makefile index 6893111cbf..b94850b8f0 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -67,32 +67,23 @@ elide-routines.o := stack_chk_fail_local CFLAGS-stack_chk_fail.c += $(no-stack-protector) CFLAGS-backtrace.c += -fno-omit-frame-pointer -funwind-tables -CFLAGS-sprintf_chk.c += $(libio-mtsafe) -CFLAGS-snprintf_chk.c += $(libio-mtsafe) -CFLAGS-vsprintf_chk.c += $(libio-mtsafe) -CFLAGS-vsnprintf_chk.c += $(libio-mtsafe) -CFLAGS-asprintf_chk.c += $(libio-mtsafe) -CFLAGS-vasprintf_chk.c += $(libio-mtsafe) -CFLAGS-obprintf_chk.c += $(libio-mtsafe) -CFLAGS-dprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-vdprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-printf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-vprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-vfprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-gets_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fgets_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fgets_u_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fread_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fread_u_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-swprintf_chk.c += $(libio-mtsafe) -CFLAGS-vswprintf_chk.c += $(libio-mtsafe) -CFLAGS-wprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fwprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-vwprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-vfwprintf_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fgetws_chk.c += $(libio-mtsafe) -fexceptions -CFLAGS-fgetws_u_chk.c += $(libio-mtsafe) -fexceptions +CFLAGS-dprintf_chk.c += -fexceptions +CFLAGS-vdprintf_chk.c += -fexceptions +CFLAGS-printf_chk.c += -fexceptions +CFLAGS-fprintf_chk.c += -fexceptions +CFLAGS-vprintf_chk.c += -fexceptions +CFLAGS-vfprintf_chk.c += -fexceptions +CFLAGS-gets_chk.c += -fexceptions +CFLAGS-fgets_chk.c += -fexceptions +CFLAGS-fgets_u_chk.c += -fexceptions +CFLAGS-fread_chk.c += -fexceptions +CFLAGS-fread_u_chk.c += -fexceptions +CFLAGS-wprintf_chk.c += -fexceptions +CFLAGS-fwprintf_chk.c += -fexceptions +CFLAGS-vwprintf_chk.c += -fexceptions +CFLAGS-vfwprintf_chk.c += -fexceptions +CFLAGS-fgetws_chk.c += -fexceptions +CFLAGS-fgetws_u_chk.c += -fexceptions CFLAGS-read_chk.c += -fexceptions -fasynchronous-unwind-tables CFLAGS-pread_chk.c += -fexceptions -fasynchronous-unwind-tables CFLAGS-pread64_chk.c += -fexceptions -fasynchronous-unwind-tables diff --git a/grp/Makefile b/grp/Makefile index a394023bd0..acab87ca67 100644 --- a/grp/Makefile +++ b/grp/Makefile @@ -52,8 +52,8 @@ CFLAGS-getgrnam_r.c += -fexceptions CFLAGS-getgrent_r.c += -fexceptions CFLAGS-getgrent.c += -fexceptions CFLAGS-fgetgrent.c += -fexceptions -CFLAGS-fgetgrent_r.c += -fexceptions $(libio-mtsafe) -CFLAGS-putgrent.c += -fexceptions $(libio-mtsafe) +CFLAGS-fgetgrent_r.c += -fexceptions +CFLAGS-putgrent.c += -fexceptions CFLAGS-initgroups.c += -fexceptions CFLAGS-getgrgid.c += -fexceptions diff --git a/gshadow/Makefile b/gshadow/Makefile index 2fdd0c7641..1712f28ac8 100644 --- a/gshadow/Makefile +++ b/gshadow/Makefile @@ -31,8 +31,8 @@ tests = tst-gshadow tst-putsgent tst-fgetsgent_r CFLAGS-getsgent_r.c += -fexceptions CFLAGS-getsgent.c += -fexceptions CFLAGS-fgetsgent.c += -fexceptions -CFLAGS-fgetsgent_r.c += -fexceptions $(libio-mtsafe) -CFLAGS-putsgent.c += -fexceptions $(libio-mtsafe) +CFLAGS-fgetsgent_r.c += -fexceptions +CFLAGS-putsgent.c += -fexceptions CFLAGS-getsgnam.c += -fexceptions CFLAGS-getsgnam_r.c += -fexceptions diff --git a/htl/Makefile b/htl/Makefile index 4c5767b04c..32219632dc 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -176,8 +176,6 @@ install-lib-ldscripts := libpthread_syms.a include ../Makeconfig -CFLAGS-lockfile.c = -D_IO_MTSAFE_IO - all: # Make this the default target; it will be defined in Rules. subdir_install: $(inst_libdir)/libpthread2.a $(inst_libdir)/libpthread_syms.a diff --git a/hurd/vpprintf.c b/hurd/vpprintf.c index 00493ebe39..ae8e6d310b 100644 --- a/hurd/vpprintf.c +++ b/hurd/vpprintf.c @@ -42,13 +42,9 @@ vpprintf (io_t port, const char *format, va_list arg) struct locked_FILE { struct _IO_cookie_file cfile; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } temp_f; -#ifdef _IO_MTSAFE_IO temp_f.cfile.__fp.file._lock = &temp_f.lock; -#endif _IO_cookie_init (&temp_f.cfile, _IO_NO_READS, (void *) port, (cookie_io_functions_t) { write: do_write }); diff --git a/include/stdio.h b/include/stdio.h index 2e0dc80c16..6bb5397c5f 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -1,5 +1,5 @@ #ifndef _STDIO_H -# if !defined _ISOMAC && defined _IO_MTSAFE_IO +# if !defined _ISOMAC # include # endif diff --git a/libio/Makefile b/libio/Makefile index 73f731e064..ac2d738372 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -92,8 +92,6 @@ routines += clearerr_u feof_u ferror_u fputc_u getc_u getchar_u \ iofputs_u endif -CPPFLAGS += $(libio-mtsafe) - # Support for exception handling. CFLAGS-fileops.c += -fexceptions CFLAGS-fputc.c += -fexceptions diff --git a/libio/clearerr.c b/libio/clearerr.c index 687b3ac5f2..d761274d6b 100644 --- a/libio/clearerr.c +++ b/libio/clearerr.c @@ -26,7 +26,3 @@ clearerr (FILE *fp) _IO_clearerr (fp); _IO_funlockfile (fp); } - -#ifndef _IO_MTSAFE_IO -weak_alias (clearerr, clearerr_unlocked) -#endif diff --git a/libio/feof.c b/libio/feof.c index 8275321788..2664b4caac 100644 --- a/libio/feof.c +++ b/libio/feof.c @@ -41,8 +41,3 @@ _IO_feof (FILE *fp) } weak_alias (_IO_feof, feof) - -#ifndef _IO_MTSAFE_IO -#undef feof_unlocked -weak_alias (_IO_feof, feof_unlocked) -#endif diff --git a/libio/ferror.c b/libio/ferror.c index 588f2eb50b..eef85c2602 100644 --- a/libio/ferror.c +++ b/libio/ferror.c @@ -40,9 +40,4 @@ _IO_ferror (FILE *fp) return result; } -weak_alias (_IO_ferror, ferror) - -#ifndef _IO_MTSAFE_IO -#undef ferror_unlocked -weak_alias (_IO_ferror, ferror_unlocked) -#endif +weak_alias (_IO_ferror, ferror) \ No newline at end of file diff --git a/libio/fileno.c b/libio/fileno.c index 4b3417abac..96f60d93ca 100644 --- a/libio/fileno.c +++ b/libio/fileno.c @@ -46,6 +46,6 @@ libc_hidden_weak (fileno) /* The fileno implementation for libio does not require locking because it only accesses once a single variable and this is already atomic - (at least at thread level). Therefore we don't test _IO_MTSAFE_IO here. */ + (at least at thread level). */ weak_alias (__fileno, fileno_unlocked) diff --git a/libio/fputc.c b/libio/fputc.c index c3a1fa47db..55877668c1 100644 --- a/libio/fputc.c +++ b/libio/fputc.c @@ -39,8 +39,3 @@ fputc (int c, FILE *fp) _IO_release_lock (fp); return result; } - -#ifndef _IO_MTSAFE_IO -#undef fputc_unlocked -weak_alias (fputc, fputc_unlocked) -#endif diff --git a/libio/genops.c b/libio/genops.c index fa509f6219..e501309b35 100644 --- a/libio/genops.c +++ b/libio/genops.c @@ -32,13 +32,10 @@ #include #include -#ifdef _IO_MTSAFE_IO static _IO_lock_t list_all_lock = _IO_lock_initializer; -#endif static FILE *run_fp; -#ifdef _IO_MTSAFE_IO static void flush_cleanup (void *not_used) { @@ -46,7 +43,6 @@ flush_cleanup (void *not_used) _IO_funlockfile (run_fp); _IO_lock_unlock (list_all_lock); } -#endif void _IO_un_link (struct _IO_FILE_plus *fp) @@ -54,12 +50,10 @@ _IO_un_link (struct _IO_FILE_plus *fp) if (fp->file._flags & _IO_LINKED) { FILE **f; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (flush_cleanup); _IO_lock_lock (list_all_lock); run_fp = (FILE *) fp; _IO_flockfile ((FILE *) fp); -#endif if (_IO_list_all == NULL) ; else if (fp == _IO_list_all) @@ -72,12 +66,10 @@ _IO_un_link (struct _IO_FILE_plus *fp) break; } fp->file._flags &= ~_IO_LINKED; -#ifdef _IO_MTSAFE_IO _IO_funlockfile ((FILE *) fp); run_fp = NULL; _IO_lock_unlock (list_all_lock); _IO_cleanup_region_end (0); -#endif } } libc_hidden_def (_IO_un_link) @@ -88,20 +80,16 @@ _IO_link_in (struct _IO_FILE_plus *fp) if ((fp->file._flags & _IO_LINKED) == 0) { fp->file._flags |= _IO_LINKED; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (flush_cleanup); _IO_lock_lock (list_all_lock); run_fp = (FILE *) fp; _IO_flockfile ((FILE *) fp); -#endif fp->file._chain = (FILE *) _IO_list_all; _IO_list_all = fp; -#ifdef _IO_MTSAFE_IO _IO_funlockfile ((FILE *) fp); run_fp = NULL; _IO_lock_unlock (list_all_lock); _IO_cleanup_region_end (0); -#endif } } libc_hidden_def (_IO_link_in) @@ -551,10 +539,8 @@ _IO_old_init (FILE *fp, int flags) #if _IO_JUMPS_OFFSET fp->_vtable_offset = 0; #endif -#ifdef _IO_MTSAFE_IO if (fp->_lock != NULL) _IO_lock_init (*fp->_lock); -#endif } void @@ -617,10 +603,8 @@ _IO_default_finish (FILE *fp, int dummy) _IO_un_link ((struct _IO_FILE_plus *) fp); -#ifdef _IO_MTSAFE_IO if (fp->_lock != NULL) _IO_lock_fini (*fp->_lock); -#endif } libc_hidden_def (_IO_default_finish) @@ -687,10 +671,8 @@ _IO_flush_all_lockp (int do_lock) int result = 0; FILE *fp; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (flush_cleanup); _IO_lock_lock (list_all_lock); -#endif for (fp = (FILE *) _IO_list_all; fp != NULL; fp = fp->_chain) { @@ -711,10 +693,8 @@ _IO_flush_all_lockp (int do_lock) run_fp = NULL; } -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (list_all_lock); _IO_cleanup_region_end (0); -#endif return result; } @@ -733,10 +713,8 @@ _IO_flush_all_linebuffered (void) { FILE *fp; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (flush_cleanup); _IO_lock_lock (list_all_lock); -#endif for (fp = (FILE *) _IO_list_all; fp != NULL; fp = fp->_chain) { @@ -750,10 +728,8 @@ _IO_flush_all_linebuffered (void) run_fp = NULL; } -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (list_all_lock); _IO_cleanup_region_end (0); -#endif } libc_hidden_def (_IO_flush_all_linebuffered) weak_alias (_IO_flush_all_linebuffered, _flushlbf) @@ -782,10 +758,8 @@ _IO_unbuffer_all (void) { FILE *fp; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (flush_cleanup); _IO_lock_lock (list_all_lock); -#endif for (fp = (FILE *) _IO_list_all; fp; fp = fp->_chain) { @@ -800,7 +774,6 @@ _IO_unbuffer_all (void) /* Iff stream is un-orientated, it wasn't used. */ && (legacy || fp->_mode != 0)) { -#ifdef _IO_MTSAFE_IO int cnt; #define MAXTRIES 2 for (cnt = 0; cnt < MAXTRIES; ++cnt) @@ -810,7 +783,6 @@ _IO_unbuffer_all (void) /* Give the other thread time to finish up its use of the stream. */ __sched_yield (); -#endif if (! legacy && ! dealloc_buffers && !(fp->_flags & _IO_USER_BUF)) { @@ -826,10 +798,8 @@ _IO_unbuffer_all (void) if (! legacy && fp->_mode > 0) _IO_wsetb (fp, NULL, NULL, 0); -#ifdef _IO_MTSAFE_IO if (cnt < MAXTRIES && fp->_lock != NULL) _IO_lock_unlock (*fp->_lock); -#endif } /* Make sure that never again the wide char functions can be @@ -838,10 +808,8 @@ _IO_unbuffer_all (void) fp->_mode = -1; } -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (list_all_lock); _IO_cleanup_region_end (0); -#endif } @@ -1092,27 +1060,21 @@ libc_hidden_def (_IO_iter_file) void _IO_list_lock (void) { -#ifdef _IO_MTSAFE_IO _IO_lock_lock (list_all_lock); -#endif } libc_hidden_def (_IO_list_lock) void _IO_list_unlock (void) { -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (list_all_lock); -#endif } libc_hidden_def (_IO_list_unlock) void _IO_list_resetlock (void) { -#ifdef _IO_MTSAFE_IO _IO_lock_init (list_all_lock); -#endif } libc_hidden_def (_IO_list_resetlock) diff --git a/libio/getc.c b/libio/getc.c index e3e658bf79..bf67362cd9 100644 --- a/libio/getc.c +++ b/libio/getc.c @@ -46,9 +46,3 @@ _IO_getc (FILE *fp) weak_alias (_IO_getc, getc) weak_alias (_IO_getc, fgetc) - -#ifndef _IO_MTSAFE_IO -#undef getc_unlocked -weak_alias (_IO_getc, getc_unlocked) -weak_alias (_IO_getc, fgetc_unlocked) -#endif diff --git a/libio/getchar.c b/libio/getchar.c index 0d6225853f..5c7307e392 100644 --- a/libio/getchar.c +++ b/libio/getchar.c @@ -39,9 +39,4 @@ getchar (void) result = _IO_getc_unlocked (stdin); _IO_release_lock (stdin); return result; -} - -#ifndef _IO_MTSAFE_IO -#undef getchar_unlocked -weak_alias (getchar, getchar_unlocked) -#endif +} \ No newline at end of file diff --git a/libio/iofdopen.c b/libio/iofdopen.c index 498791b287..2c11ddfd4e 100644 --- a/libio/iofdopen.c +++ b/libio/iofdopen.c @@ -37,9 +37,7 @@ _IO_new_fdopen (int fd, const char *mode) struct locked_FILE { struct _IO_FILE_plus fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif struct _IO_wide_data wd; } *new_f; int i; @@ -122,9 +120,7 @@ _IO_new_fdopen (int fd, const char *mode) new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp.file._lock = &new_f->lock; -#endif _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, #if _G_HAVE_MMAP (use_mmap && (read_write & _IO_NO_WRITES)) diff --git a/libio/iofflush.c b/libio/iofflush.c index aea6fe9633..52d01ab023 100644 --- a/libio/iofflush.c +++ b/libio/iofflush.c @@ -46,10 +46,3 @@ libc_hidden_def (_IO_fflush) weak_alias (_IO_fflush, fflush) libc_hidden_weak (fflush) - -#ifndef _IO_MTSAFE_IO -strong_alias (_IO_fflush, __fflush_unlocked) -libc_hidden_def (__fflush_unlocked) -weak_alias (_IO_fflush, fflush_unlocked) -libc_hidden_weak (fflush_unlocked) -#endif diff --git a/libio/iofgets.c b/libio/iofgets.c index 6223426237..25960c1108 100644 --- a/libio/iofgets.c +++ b/libio/iofgets.c @@ -66,10 +66,3 @@ _IO_fgets (char *buf, int n, FILE *fp) } weak_alias (_IO_fgets, fgets) - -# ifndef _IO_MTSAFE_IO -strong_alias (_IO_fgets, __fgets_unlocked) -libc_hidden_def (__fgets_unlocked) -weak_alias (_IO_fgets, fgets_unlocked) -libc_hidden_weak (fgets_unlocked) -# endif diff --git a/libio/iofopen.c b/libio/iofopen.c index 965d21cd97..7779c0179c 100644 --- a/libio/iofopen.c +++ b/libio/iofopen.c @@ -58,17 +58,13 @@ __fopen_internal (const char *filename, const char *mode, int is32) struct locked_FILE { struct _IO_FILE_plus fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif struct _IO_wide_data wd; } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp.file._lock = &new_f->lock; -#endif _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps); _IO_JUMPS (&new_f->fp) = &_IO_file_jumps; _IO_new_file_init_internal (&new_f->fp); diff --git a/libio/iofopncook.c b/libio/iofopncook.c index e39ef6aa6c..57285cc291 100644 --- a/libio/iofopncook.c +++ b/libio/iofopncook.c @@ -179,9 +179,7 @@ _IO_fopencookie (void *cookie, const char *mode, struct locked_FILE { struct _IO_cookie_file cfile; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } *new_f; switch (*mode++) @@ -205,9 +203,7 @@ _IO_fopencookie (void *cookie, const char *mode, new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->cfile.__fp.file._lock = &new_f->lock; -#endif _IO_cookie_init (&new_f->cfile, read_write, cookie, io_functions); diff --git a/libio/iofputs.c b/libio/iofputs.c index a8721314bc..5a71812952 100644 --- a/libio/iofputs.c +++ b/libio/iofputs.c @@ -44,10 +44,3 @@ libc_hidden_def (_IO_fputs) weak_alias (_IO_fputs, fputs) libc_hidden_weak (fputs) - -# ifndef _IO_MTSAFE_IO -strong_alias (_IO_fputs, __fputs_unlocked) -libc_hidden_def (__fputs_unlocked) -weak_alias (_IO_fputs, fputs_unlocked) -libc_hidden_ver (_IO_fputs, fputs_unlocked) -# endif diff --git a/libio/iofread.c b/libio/iofread.c index b8453a6520..71729ea9cb 100644 --- a/libio/iofread.c +++ b/libio/iofread.c @@ -42,9 +42,3 @@ _IO_fread (void *buf, size_t size, size_t count, FILE *fp) libc_hidden_def (_IO_fread) weak_alias (_IO_fread, fread) - -# ifndef _IO_MTSAFE_IO -strong_alias (_IO_fread, __fread_unlocked) -libc_hidden_def (__fread_unlocked) -weak_alias (_IO_fread, fread_unlocked) -# endif diff --git a/libio/iofwrite.c b/libio/iofwrite.c index 71b609c526..2cc279785f 100644 --- a/libio/iofwrite.c +++ b/libio/iofwrite.c @@ -24,6 +24,7 @@ This exception applies to code released by its copyright holders in files containing the exception. */ +#include #include "libioP.h" size_t @@ -49,10 +50,5 @@ _IO_fwrite (const void *buf, size_t size, size_t count, FILE *fp) } libc_hidden_def (_IO_fwrite) -# include weak_alias (_IO_fwrite, fwrite) libc_hidden_weak (fwrite) -# ifndef _IO_MTSAFE_IO -weak_alias (_IO_fwrite, fwrite_unlocked) -libc_hidden_weak (fwrite_unlocked) -# endif diff --git a/libio/iopopen.c b/libio/iopopen.c index 6b04222c24..fc8751ea46 100644 --- a/libio/iopopen.c +++ b/libio/iopopen.c @@ -50,7 +50,6 @@ static const struct _IO_jump_t _IO_proc_jumps; static struct _IO_proc_file *proc_file_chain; -#ifdef _IO_MTSAFE_IO static _IO_lock_t proc_file_chain_lock = _IO_lock_initializer; static void @@ -58,7 +57,6 @@ unlock (void *not_used) { _IO_lock_unlock (proc_file_chain_lock); } -#endif /* POSIX states popen shall ensure that any streams from previous popen() calls that remain open in the parent process should be closed in the new @@ -190,16 +188,12 @@ _IO_new_proc_open (FILE *fp, const char *command, const char *mode) child_pipe_fd) != 0) goto spawn_failure; -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (unlock); _IO_lock_lock (proc_file_chain_lock); -#endif spawn_ok = spawn_process (&fa, fp, command, do_cloexec, pipe_fds, parent_end, child_end, child_pipe_fd); -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (proc_file_chain_lock); _IO_cleanup_region_end (0); -#endif __posix_spawn_file_actions_destroy (&fa); @@ -222,18 +216,14 @@ _IO_new_popen (const char *command, const char *mode) struct locked_FILE { struct _IO_proc_file fpx; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } *new_f; FILE *fp; new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fpx.file.file._lock = &new_f->lock; -#endif fp = &new_f->fpx.file.file; _IO_init_internal (fp, 0); _IO_JUMPS (&new_f->fpx.file) = &_IO_proc_jumps; @@ -255,10 +245,8 @@ _IO_new_proc_close (FILE *fp) int status = -1; /* Unlink from proc_file_chain. */ -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (unlock); _IO_lock_lock (proc_file_chain_lock); -#endif for ( ; *ptr != NULL; ptr = &(*ptr)->next) { if (*ptr == (_IO_proc_file *) fp) @@ -268,10 +256,8 @@ _IO_new_proc_close (FILE *fp) break; } } -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (proc_file_chain_lock); _IO_cleanup_region_end (0); -#endif if (status < 0 || __close_nocancel (_IO_fileno(fp)) < 0) return -1; diff --git a/libio/iovdprintf.c b/libio/iovdprintf.c index 7446ce4381..6fb8c8927c 100644 --- a/libio/iovdprintf.c +++ b/libio/iovdprintf.c @@ -35,9 +35,7 @@ __vdprintf_internal (int d, const char *format, va_list arg, struct _IO_wide_data wd; int done; -#ifdef _IO_MTSAFE_IO tmpfil.file._lock = NULL; -#endif _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps); _IO_JUMPS (&tmpfil) = &_IO_file_jumps; _IO_new_file_init_internal (&tmpfil); diff --git a/libio/iovsprintf.c b/libio/iovsprintf.c index 871383768d..7d1e37c9ab 100644 --- a/libio/iovsprintf.c +++ b/libio/iovsprintf.c @@ -73,9 +73,7 @@ __vsprintf_internal (char *string, size_t maxlen, _IO_strfile sf; int ret; -#ifdef _IO_MTSAFE_IO sf._sbf._f._lock = NULL; -#endif _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); /* When called from fortified sprintf/vsprintf, erase the destination buffer and try to detect overflows. When called from regular diff --git a/libio/libio.h b/libio/libio.h index be2cde61e2..bd42479f13 100644 --- a/libio/libio.h +++ b/libio/libio.h @@ -37,7 +37,7 @@ #include -#if defined _IO_MTSAFE_IO && !defined _IO_lock_t_defined +#if !defined _IO_lock_t_defined # error "Someone forgot to include stdio-lock.h" #endif @@ -199,10 +199,13 @@ extern void _IO_flockfile (FILE *) __THROW; extern void _IO_funlockfile (FILE *) __THROW; extern int _IO_ftrylockfile (FILE *) __THROW; -#define _IO_peekc(_fp) _IO_peekc_unlocked (_fp) -#define _IO_flockfile(_fp) /**/ -#define _IO_funlockfile(_fp) ((void) 0) -#define _IO_ftrylockfile(_fp) /**/ +#define _IO_peekc(_fp) _IO_peekc_locked (_fp) +#define _IO_flockfile(_fp) \ + if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_lock (*(_fp)->_lock) +#define _IO_funlockfile(_fp) \ + if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_unlock (*(_fp)->_lock) +#define _IO_ftrylockfile(__fp) \ + if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_trylock (*(_fp)->_lock) #ifndef _IO_cleanup_region_start #define _IO_cleanup_region_start(_fct, _fp) /**/ #endif @@ -275,17 +278,4 @@ libc_hidden_proto (_IO_padn) libc_hidden_proto (_IO_putc) libc_hidden_proto (_IO_sgetn) -#ifdef _IO_MTSAFE_IO -# undef _IO_peekc -# undef _IO_flockfile -# undef _IO_funlockfile -# undef _IO_ftrylockfile - -# define _IO_peekc(_fp) _IO_peekc_locked (_fp) -# define _IO_flockfile(_fp) \ - if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_lock (*(_fp)->_lock) -# define _IO_funlockfile(_fp) \ - if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_unlock (*(_fp)->_lock) -#endif /* _IO_MTSAFE_IO */ - #endif /* _LIBIO_H */ diff --git a/libio/libioP.h b/libio/libioP.h index 4bad7f3c06..d5984283ce 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -804,33 +804,18 @@ extern int __vfwscanf_internal (FILE *fp, const wchar_t *format, va_list argp, extern int _IO_vscanf (const char *, va_list) __THROW; -#ifdef _IO_MTSAFE_IO /* check following! */ -# ifdef _IO_USE_OLD_IO_FILE -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ +#ifdef _IO_USE_OLD_IO_FILE +# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (FILE *) CHAIN, FD, \ 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock } -# else -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\ - NULL, WDP, 0 } -# endif #else -# ifdef _IO_USE_OLD_IO_FILE -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ +# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD } -# else -# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \ - { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (FILE *) CHAIN, FD, \ - 0, _IO_pos_BAD, 0, 0, { 0 }, 0, _IO_pos_BAD, \ + 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\ NULL, WDP, 0 } -# endif #endif #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) @@ -885,13 +870,6 @@ _IO_acquire_lock_fct (FILE **p) _IO_funlockfile (fp); } -#if !defined _IO_MTSAFE_IO && IS_IN (libc) -# define _IO_acquire_lock(_fp) \ - do { -# define _IO_release_lock(_fp) \ - } while (0) -#endif - /* Collect all vtables in a special section for vtable verification. These symbols cover the extent of this section. */ symbol_set_declare (__libc_IO_vtables) diff --git a/libio/memstream.c b/libio/memstream.c index 2bd20b30f4..6763689038 100644 --- a/libio/memstream.c +++ b/libio/memstream.c @@ -66,9 +66,7 @@ __open_memstream (char **bufloc, size_t *sizeloc) struct locked_FILE { struct _IO_FILE_memstream fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif struct _IO_wide_data wd; } *new_f; char *buf; @@ -76,9 +74,7 @@ __open_memstream (char **bufloc, size_t *sizeloc) new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp._sf._sbf._f._lock = &new_f->lock; -#endif buf = calloc (1, BUFSIZ); if (buf == NULL) diff --git a/libio/obprintf.c b/libio/obprintf.c index 4333276a1b..2100bd312b 100644 --- a/libio/obprintf.c +++ b/libio/obprintf.c @@ -128,9 +128,7 @@ __obstack_vprintf_internal (struct obstack *obstack, const char *format, int size; int room; -#ifdef _IO_MTSAFE_IO new_f.ofile.file.file._lock = NULL; -#endif _IO_no_init (&new_f.ofile.file.file, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS (&new_f.ofile.file) = &_IO_obstack_jumps; diff --git a/libio/oldiofdopen.c b/libio/oldiofdopen.c index ab8f9b9886..4d3f04a0bf 100644 --- a/libio/oldiofdopen.c +++ b/libio/oldiofdopen.c @@ -41,9 +41,7 @@ _IO_old_fdopen (int fd, const char *mode) struct locked_FILE { struct _IO_FILE_complete_plus fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } *new_f; int fd_flags; @@ -96,9 +94,7 @@ _IO_old_fdopen (int fd, const char *mode) new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp.file._file._lock = &new_f->lock; -#endif _IO_old_init (&new_f->fp.file._file, 0); _IO_JUMPS_FILE_plus (&new_f->fp) = &_IO_old_file_jumps; _IO_old_file_init_internal ((struct _IO_FILE_plus *) &new_f->fp); diff --git a/libio/oldiofopen.c b/libio/oldiofopen.c index 2de936347e..f3b9271616 100644 --- a/libio/oldiofopen.c +++ b/libio/oldiofopen.c @@ -39,16 +39,12 @@ _IO_old_fopen (const char *filename, const char *mode) struct locked_FILE { struct _IO_FILE_complete_plus fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp.file._file._lock = &new_f->lock; -#endif _IO_old_init (&new_f->fp.file._file, 0); _IO_JUMPS_FILE_plus (&new_f->fp) = &_IO_old_file_jumps; _IO_old_file_init_internal ((struct _IO_FILE_plus *) &new_f->fp); diff --git a/libio/oldiopopen.c b/libio/oldiopopen.c index 68ca52c012..374d04ef72 100644 --- a/libio/oldiopopen.c +++ b/libio/oldiopopen.c @@ -48,7 +48,6 @@ typedef struct _IO_proc_file _IO_proc_file; static struct _IO_proc_file *old_proc_file_chain; -#ifdef _IO_MTSAFE_IO static _IO_lock_t proc_file_chain_lock = _IO_lock_initializer; static void @@ -56,7 +55,6 @@ unlock (void *not_used) { _IO_lock_unlock (proc_file_chain_lock); } -#endif FILE * attribute_compat_text_section @@ -119,16 +117,12 @@ _IO_old_proc_open (FILE *fp, const char *command, const char *mode) _IO_fileno (fp) = parent_end; /* Link into old_proc_file_chain. */ -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (unlock); _IO_lock_lock (proc_file_chain_lock); -#endif ((_IO_proc_file *) fp)->next = old_proc_file_chain; old_proc_file_chain = (_IO_proc_file *) fp; -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (proc_file_chain_lock); _IO_cleanup_region_end (0); -#endif _IO_mask_flags (fp, read_or_write, _IO_NO_READS|_IO_NO_WRITES); return fp; @@ -141,18 +135,14 @@ _IO_old_popen (const char *command, const char *mode) struct locked_FILE { struct _IO_proc_file fpx; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif } *new_f; FILE *fp; new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fpx.file.file._file._lock = &new_f->lock; -#endif fp = &new_f->fpx.file.file._file; _IO_old_init (fp, 0); _IO_JUMPS_FILE_plus (&new_f->fpx.file) = &_IO_old_proc_jumps; @@ -175,10 +165,8 @@ _IO_old_proc_close (FILE *fp) int status = -1; /* Unlink from old_proc_file_chain. */ -#ifdef _IO_MTSAFE_IO _IO_cleanup_region_start_noarg (unlock); _IO_lock_lock (proc_file_chain_lock); -#endif for ( ; *ptr != NULL; ptr = &(*ptr)->next) { if (*ptr == (_IO_proc_file *) fp) @@ -188,10 +176,8 @@ _IO_old_proc_close (FILE *fp) break; } } -#ifdef _IO_MTSAFE_IO _IO_lock_unlock (proc_file_chain_lock); _IO_cleanup_region_end (0); -#endif if (status < 0 || __close (_IO_fileno(fp)) < 0) return -1; diff --git a/libio/oldstdfiles.c b/libio/oldstdfiles.c index fc55ad3a32..f59910044e 100644 --- a/libio/oldstdfiles.c +++ b/libio/oldstdfiles.c @@ -33,16 +33,10 @@ #define _IO_USE_OLD_IO_FILE #include "libioP.h" -#ifdef _IO_MTSAFE_IO #define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), &_IO_old_file_jumps}; -#else -#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ - struct _IO_FILE_plus NAME \ - = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), &_IO_old_file_jumps}; -#endif DEF_STDFILE(_IO_stdin_, 0, 0, _IO_NO_WRITES); DEF_STDFILE(_IO_stdout_, 1, &_IO_stdin_, _IO_NO_READS); diff --git a/libio/putc.c b/libio/putc.c index 0b0dd40736..bc9dea856d 100644 --- a/libio/putc.c +++ b/libio/putc.c @@ -37,8 +37,3 @@ libc_hidden_def (_IO_putc) #undef putc weak_alias (_IO_putc, putc) - -#ifndef _IO_MTSAFE_IO -#undef putc_unlocked -weak_alias (_IO_putc, putc_unlocked) -#endif diff --git a/libio/putchar.c b/libio/putchar.c index de117bf13d..834174436e 100644 --- a/libio/putchar.c +++ b/libio/putchar.c @@ -29,8 +29,3 @@ putchar (int c) _IO_release_lock (stdout); return result; } - -#if defined weak_alias && !defined _IO_MTSAFE_IO -#undef putchar_unlocked -weak_alias (putchar, putchar_unlocked) -#endif diff --git a/libio/stdfiles.c b/libio/stdfiles.c index f55bcd6e59..48d0188bda 100644 --- a/libio/stdfiles.c +++ b/libio/stdfiles.c @@ -32,22 +32,13 @@ #include "libioP.h" -#ifdef _IO_MTSAFE_IO -# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ +#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ static struct _IO_wide_data _IO_wide_data_##FD \ = { ._wide_vtable = &_IO_wfile_jumps }; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ &_IO_file_jumps}; -#else -# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ - static struct _IO_wide_data _IO_wide_data_##FD \ - = { ._wide_vtable = &_IO_wfile_jumps }; \ - struct _IO_FILE_plus NAME \ - = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ - &_IO_file_jumps}; -#endif DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES); DEF_STDFILE(_IO_2_1_stdout_, 1, &_IO_2_1_stdin_, _IO_NO_READS); diff --git a/libio/vasprintf.c b/libio/vasprintf.c index c9a09c11c8..a90006d268 100644 --- a/libio/vasprintf.c +++ b/libio/vasprintf.c @@ -45,9 +45,7 @@ __vasprintf_internal (char **result_ptr, const char *format, va_list args, string = (char *) malloc (init_string_size); if (string == NULL) return -1; -#ifdef _IO_MTSAFE_IO sf._sbf._f._lock = NULL; -#endif _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS (&sf._sbf) = &_IO_str_jumps; _IO_str_init_static_internal (&sf, string, init_string_size, string); diff --git a/libio/vsnprintf.c b/libio/vsnprintf.c index 9ef61131db..4f326ad39c 100644 --- a/libio/vsnprintf.c +++ b/libio/vsnprintf.c @@ -95,9 +95,7 @@ __vsnprintf_internal (char *string, size_t maxlen, const char *format, { _IO_strnfile sf; int ret; -#ifdef _IO_MTSAFE_IO sf.f._sbf._f._lock = NULL; -#endif /* We need to handle the special case where MAXLEN is 0. Use the overflow buffer right from the start. */ diff --git a/libio/vswprintf.c b/libio/vswprintf.c index b7036f1480..1103e17659 100644 --- a/libio/vswprintf.c +++ b/libio/vswprintf.c @@ -95,9 +95,7 @@ __vswprintf_internal (wchar_t *string, size_t maxlen, const wchar_t *format, _IO_wstrnfile sf; int ret; struct _IO_wide_data wd; -#ifdef _IO_MTSAFE_IO sf.f._sbf._f._lock = NULL; -#endif if (maxlen == 0) /* Since we have to write at least the terminating L'\0' a buffer diff --git a/libio/wgenops.c b/libio/wgenops.c index 106ddfd278..62e3396a0e 100644 --- a/libio/wgenops.c +++ b/libio/wgenops.c @@ -187,10 +187,8 @@ _IO_wdefault_finish (FILE *fp, int dummy) fp->_IO_save_base = NULL; } -#ifdef _IO_MTSAFE_IO if (fp->_lock != NULL) _IO_lock_fini (*fp->_lock); -#endif _IO_un_link ((struct _IO_FILE_plus *) fp); } diff --git a/libio/wmemstream.c b/libio/wmemstream.c index edcc266041..037349c83c 100644 --- a/libio/wmemstream.c +++ b/libio/wmemstream.c @@ -67,9 +67,7 @@ open_wmemstream (wchar_t **bufloc, size_t *sizeloc) struct locked_FILE { struct _IO_FILE_wmemstream fp; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif struct _IO_wide_data wd; } *new_f; wchar_t *buf; @@ -77,9 +75,7 @@ open_wmemstream (wchar_t **bufloc, size_t *sizeloc) new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE)); if (new_f == NULL) return NULL; -#ifdef _IO_MTSAFE_IO new_f->fp._sf._sbf._f._lock = &new_f->lock; -#endif buf = calloc (1, BUFSIZ); if (buf == NULL) diff --git a/nptl/Makefile b/nptl/Makefile index 9a5628b751..6af5231a93 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -422,9 +422,6 @@ $(objpfx)multidir.mk: $(common-objpfx)config.make endif -CFLAGS-ftrylockfile.c += $(libio-mtsafe) -CFLAGS-funlockfile.c += $(libio-mtsafe) - link-libc-static := $(common-objpfx)libc.a $(static-gnulib) \ $(common-objpfx)libc.a diff --git a/pwd/Makefile b/pwd/Makefile index 825a117f2f..5c1b4136e3 100644 --- a/pwd/Makefile +++ b/pwd/Makefile @@ -37,6 +37,5 @@ ifeq ($(have-thread-library),yes) CFLAGS-getpwent_r.c += -fexceptions CFLAGS-getpwent.c += -fexceptions CFLAGS-getpw.c += -fexceptions -CFLAGS-fgetpwent_r.c += $(libio-mtsafe) endif diff --git a/shadow/Makefile b/shadow/Makefile index 641e015cfa..ced5ee7e4c 100644 --- a/shadow/Makefile +++ b/shadow/Makefile @@ -32,8 +32,8 @@ tests = tst-shadow tst-putspent CFLAGS-getspent_r.c += -fexceptions CFLAGS-getspent.c += -fexceptions CFLAGS-fgetspent.c += -fexceptions -CFLAGS-fgetspent_r.c += -fexceptions $(libio-mtsafe) -CFLAGS-putspent.c += -fexceptions $(libio-mtsafe) +CFLAGS-fgetspent_r.c += -fexceptions +CFLAGS-putspent.c += -fexceptions CFLAGS-getspnam.c += -fexceptions CFLAGS-getspnam_r.c += -fexceptions diff --git a/stdio-common/Makefile b/stdio-common/Makefile index b2458ba4a6..dd54b4c6e3 100644 --- a/stdio-common/Makefile +++ b/stdio-common/Makefile @@ -196,8 +196,6 @@ CFLAGS-tst-gets.c += -Wno-deprecated-declarations # the fortified version had the same bug. CFLAGS-tst-bz11319-fortify2.c += -D_FORTIFY_SOURCE=2 -CPPFLAGS += $(libio-mtsafe) - $(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1 $(test-program-cmd) > $@ 2>&1; \ $(evaluate-test) diff --git a/stdio-common/vfprintf-internal.c b/stdio-common/vfprintf-internal.c index 3f3d1e148a..c6c72ec2dd 100644 --- a/stdio-common/vfprintf-internal.c +++ b/stdio-common/vfprintf-internal.c @@ -2175,9 +2175,7 @@ struct helper_file struct _IO_wide_data _wide_data; #endif FILE *_put_stream; -#ifdef _IO_MTSAFE_IO _IO_lock_t lock; -#endif }; static int @@ -2285,9 +2283,7 @@ buffered_vfprintf (FILE *s, const CHAR_T *format, va_list args, #if _IO_JUMPS_OFFSET hp->_vtable_offset = 0; #endif -#ifdef _IO_MTSAFE_IO hp->_lock = NULL; -#endif hp->_flags2 = s->_flags2; _IO_JUMPS (&helper._f) = (struct _IO_jump_t *) &_IO_helper_jumps; diff --git a/stdlib/Makefile b/stdlib/Makefile index ec30011b4c..d8974fc4ee 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -149,15 +149,6 @@ CFLAGS-system.c += -fexceptions CFLAGS-system.os = -fomit-frame-pointer CFLAGS-fmtmsg.c += -fexceptions -CFLAGS-strfmon.c += $(libio-mtsafe) -CFLAGS-strfmon_l.c += $(libio-mtsafe) - -# The strfrom class of functions call __printf_fp in order to convert the -# floating-point value to characters. This requires the value of IO_MTSAFE_IO. -CFLAGS-strfromd.c += $(libio-mtsafe) -CFLAGS-strfromf.c += $(libio-mtsafe) -CFLAGS-strfroml.c += $(libio-mtsafe) - CFLAGS-tst-bsearch.c += $(stack-align-test-flags) CFLAGS-tst-qsort.c += $(stack-align-test-flags) CFLAGS-tst-makecontext.c += -funwind-tables diff --git a/stdlib/strfmon_l.c b/stdlib/strfmon_l.c index 9e7268141b..7ea62322f9 100644 --- a/stdlib/strfmon_l.c +++ b/stdlib/strfmon_l.c @@ -524,9 +524,7 @@ __vstrfmon_l_internal (char *s, size_t maxsize, locale_t loc, out_string (sign_string); /* Print the number. */ -#ifdef _IO_MTSAFE_IO f._sbf._f._lock = NULL; -#endif _IO_init_internal (&f._sbf._f, 0); _IO_JUMPS (&f._sbf) = &_IO_str_jumps; _IO_str_init_static_internal (&f, dest, (s + maxsize) - dest, dest); diff --git a/stdlib/strfrom-skeleton.c b/stdlib/strfrom-skeleton.c index b691cc3987..e41fdc01fb 100644 --- a/stdlib/strfrom-skeleton.c +++ b/stdlib/strfrom-skeleton.c @@ -37,9 +37,7 @@ int STRFROM (char *dest, size_t size, const char *format, FLOAT f) { _IO_strnfile sfile; -#ifdef _IO_MTSAFE_IO sfile.f._sbf._f._lock = NULL; -#endif int done; diff --git a/sysdeps/generic/stdio-lock.h b/sysdeps/generic/stdio-lock.h index 791009b8ce..c17b8383d9 100644 --- a/sysdeps/generic/stdio-lock.h +++ b/sysdeps/generic/stdio-lock.h @@ -27,8 +27,8 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) /* We need recursive (counting) mutexes. */ #ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER # define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER -#elif _IO_MTSAFE_IO - #error libio needs recursive mutexes for _IO_MTSAFE_IO +#else +# error libio needs recursive mutexes #endif #define _IO_lock_init(_name) __libc_lock_init_recursive (_name) diff --git a/sysdeps/ieee754/float128/Makefile b/sysdeps/ieee754/float128/Makefile index 571a841809..166e630290 100644 --- a/sysdeps/ieee754/float128/Makefile +++ b/sysdeps/ieee754/float128/Makefile @@ -1,10 +1,6 @@ ifeq ($(subdir),stdlib) routines += float1282mpn strfromf128 routines += strtof128 strtof128_l strtof128_nan mpn2float128 - -# The strfrom class of functions call __printf_fp in order to convert the -# floating-point value to characters. This requires the value of IO_MTSAFE_IO. -CFLAGS-strfromf128.c += $(libio-mtsafe) endif ifeq ($(subdir),wcsmbs) diff --git a/sysdeps/nptl/libc-lock.h b/sysdeps/nptl/libc-lock.h index e8a5e68a12..627b13309a 100644 --- a/sysdeps/nptl/libc-lock.h +++ b/sysdeps/nptl/libc-lock.h @@ -25,7 +25,7 @@ /* Mutex type. */ -#if defined _LIBC || defined _IO_MTSAFE_IO +#if defined _LIBC # if (!IS_IN (libc) && !IS_IN (libpthread)) || !defined _LIBC typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t; # else diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index e9566e028a..834eda4553 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -248,7 +248,6 @@ tests += tst-affinity tst-affinity-pid tests-static := tst-affinity-static tests += $(tests-static) -CFLAGS-fork.c = $(libio-mtsafe) CFLAGS-getpid.o = -fomit-frame-pointer CFLAGS-getpid.os = -fomit-frame-pointer endif diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index f38eb5cfe1..7314f0a9ca 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -102,8 +102,6 @@ CFLAGS-isoc99_fwscanf.c += -fexceptions CFLAGS-isoc99_vwscanf.c += -fexceptions CFLAGS-isoc99_vfwscanf.c += -fexceptions -CPPFLAGS += $(libio-mtsafe) - # We need to find the default version of strtold_l in stdlib. CPPFLAGS-wcstold_l.c += -I../stdlib From patchwork Thu May 27 20:44:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 43619 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB1A8395C82F; Thu, 27 May 2021 20:45:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB1A8395C82F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1622148309; bh=h/Uq4PjxsRE6Z6oA8DFL13NFNwDs2IDWjxff6PA1dQk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=kXHLFiZT9ChJJK+TF2j8O17RD2ixpLvCN9N5uyvLgUnn3qGzW6gUvcaCnwS4sEQns MKPNIDT3W0qn0DEAIvGTiO705fQZS76s4r+q2pZuzlC0tjZ5kQ3+wq6HOwEqdPUjLH vUL2fF8S6UCgiNJ4bVzzwIuPXAHIF/yhWkhg6Y6o= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by sourceware.org (Postfix) with ESMTPS id 64FFB395C82F for ; Thu, 27 May 2021 20:45:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 64FFB395C82F Received: by mail-qv1-xf2c.google.com with SMTP id ez19so843592qvb.3 for ; Thu, 27 May 2021 13:45:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h/Uq4PjxsRE6Z6oA8DFL13NFNwDs2IDWjxff6PA1dQk=; b=Z213V4yNc2MN7Gx84ngB2NCdkv85E5UBYoaaczT6skNHV5V1yaZo6uz3Tk0Au6AUCv q93CFdiAJ/ABSrHf/JT/Uikfw8muj5gW2IQU+w0+I+d5NIttVSZi9/tpIavqRvVh+mjO qn9vBnre2iyMYHqNodJrbr/JqDZRLzuwlGvQjwAq2ya6tZ5SP83rfa9xqRKMLT2VOOv0 AHcFa7ITMfvX3+Sux4ZOTrc95VwgeyxAUpkPenSc0sQB1cVzlIBL4b/SSvKy94/JZUxZ e1TyuOAUBkDf/p8WCWSJozBcPL/Z52NlMZaBVV7bEG54beXXgNSQrKM7wDNGSYwpuCuo P3nQ== X-Gm-Message-State: AOAM531cUQDzUdYgTxX5ZERRsLh/a6YXCv1LAW2VYljIEhaRDbmTg5qs HWU9wsY/P821s2vzN50WptcRwQ6NF2ktXw== X-Google-Smtp-Source: ABdhPJzXy7fZRalow2hnfu/uOUbWNze6+roEfTkKEyjicHhvaus1zY0jZH3QBLKabHFK2/I52EA+wg== X-Received: by 2002:a0c:ec04:: with SMTP id y4mr432983qvo.51.1622148305743; Thu, 27 May 2021 13:45:05 -0700 (PDT) Received: from birita.. ([177.194.37.86]) by smtp.googlemail.com with ESMTPSA id e14sm2058385qkl.1.2021.05.27.13.45.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 May 2021 13:45:05 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 3/4] Consolidate stdio-lock.h Date: Thu, 27 May 2021 17:44:56 -0300 Message-Id: <20210527204457.1250196-4-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> References: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" The NPTL replicate the sysdeps/nptl/libc-lock.h recursive lock. Use the Hurd one as generic one, which already uses the __libc_lock functions. Checked on x86_64-linux-gnu and i686-linux-gnu. --- sysdeps/generic/stdio-lock.h | 15 +++--- sysdeps/htl/stdio-lock.h | 57 -------------------- sysdeps/nptl/stdio-lock.h | 101 ----------------------------------- 3 files changed, 6 insertions(+), 167 deletions(-) delete mode 100644 sysdeps/htl/stdio-lock.h delete mode 100644 sysdeps/nptl/stdio-lock.h diff --git a/sysdeps/generic/stdio-lock.h b/sysdeps/generic/stdio-lock.h index c17b8383d9..a900275400 100644 --- a/sysdeps/generic/stdio-lock.h +++ b/sysdeps/generic/stdio-lock.h @@ -47,17 +47,14 @@ __libc_lock_define_recursive (typedef, _IO_lock_t) #if defined _LIBC && IS_IN (libc) -# ifdef __EXCEPTIONS # define _IO_acquire_lock(_fp) \ do { \ - FILE *_IO_acquire_lock_file \ - __attribute__((cleanup (_IO_acquire_lock_fct))) \ - = (_fp); \ - _IO_flockfile (_IO_acquire_lock_file); -# else -# define _IO_acquire_lock(_fp) _IO_acquire_lock_needs_exceptions_enabled -# endif -# define _IO_release_lock(_fp) ; } while (0) + _IO_cleanup_region_start((void (*) (void *)) &_IO_funlockfile, _fp); \ + _IO_flockfile (_fp); +# define _IO_release_lock(_fp) \ + _IO_funlockfile (_fp); \ + _IO_cleanup_region_end (0); \ + } while (0) #endif diff --git a/sysdeps/htl/stdio-lock.h b/sysdeps/htl/stdio-lock.h deleted file mode 100644 index 59969de45d..0000000000 --- a/sysdeps/htl/stdio-lock.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Thread package specific definitions of stream lock type. Hurd version. - Copyright (C) 2000-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - 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 - . */ - -#ifndef _STDIO_LOCK_H -#define _STDIO_LOCK_H 1 - -#include - -__libc_lock_define_recursive (typedef, _IO_lock_t) -#define _IO_lock_t_defined 1 - -/* We need recursive (counting) mutexes. */ -# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER - -#define _IO_lock_init(_name) __libc_lock_init_recursive (_name) -#define _IO_lock_fini(_name) __libc_lock_fini_recursive (_name) -#define _IO_lock_lock(_name) __libc_lock_lock_recursive (_name) -#define _IO_lock_trylock(_name) __libc_lock_trylock_recursive (_name) -#define _IO_lock_unlock(_name) __libc_lock_unlock_recursive (_name) - - -#define _IO_cleanup_region_start(_fct, _fp) \ - __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp) -#define _IO_cleanup_region_start_noarg(_fct) \ - __libc_cleanup_region_start (1, _fct, NULL) -#define _IO_cleanup_region_end(_doit) \ - __libc_cleanup_region_end (_doit) - -#if defined _LIBC && IS_IN (libc) - -# define _IO_acquire_lock(_fp) \ - do { \ - _IO_cleanup_region_start((void (*) (void *)) &_IO_funlockfile, _fp); \ - _IO_flockfile (_fp); -# define _IO_release_lock(_fp) \ - _IO_funlockfile (_fp); \ - _IO_cleanup_region_end (0); \ - } while (0) - -#endif - -#endif /* stdio-lock.h */ diff --git a/sysdeps/nptl/stdio-lock.h b/sysdeps/nptl/stdio-lock.h deleted file mode 100644 index a4f419b516..0000000000 --- a/sysdeps/nptl/stdio-lock.h +++ /dev/null @@ -1,101 +0,0 @@ -/* Thread package specific definitions of stream lock type. NPTL version. - Copyright (C) 2000-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - 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 - . */ - -#ifndef _STDIO_LOCK_H -#define _STDIO_LOCK_H 1 - -#include -#include - - -typedef struct { int lock; int cnt; void *owner; } _IO_lock_t; -#define _IO_lock_t_defined 1 - -#define _IO_lock_initializer { LLL_LOCK_INITIALIZER, 0, NULL } - -#define _IO_lock_init(_name) \ - ((void) ((_name) = (_IO_lock_t) _IO_lock_initializer)) - -#define _IO_lock_fini(_name) \ - ((void) 0) - -#define _IO_lock_lock(_name) \ - do { \ - void *__self = THREAD_SELF; \ - if ((_name).owner != __self) \ - { \ - lll_lock ((_name).lock, LLL_PRIVATE); \ - (_name).owner = __self; \ - } \ - ++(_name).cnt; \ - } while (0) - -#define _IO_lock_trylock(_name) \ - ({ \ - int __result = 0; \ - void *__self = THREAD_SELF; \ - if ((_name).owner != __self) \ - { \ - if (lll_trylock ((_name).lock) == 0) \ - { \ - (_name).owner = __self; \ - (_name).cnt = 1; \ - } \ - else \ - __result = EBUSY; \ - } \ - else \ - ++(_name).cnt; \ - __result; \ - }) - -#define _IO_lock_unlock(_name) \ - do { \ - if (--(_name).cnt == 0) \ - { \ - (_name).owner = NULL; \ - lll_unlock ((_name).lock, LLL_PRIVATE); \ - } \ - } while (0) - - - -#define _IO_cleanup_region_start(_fct, _fp) \ - __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp) -#define _IO_cleanup_region_start_noarg(_fct) \ - __libc_cleanup_region_start (1, _fct, NULL) -#define _IO_cleanup_region_end(_doit) \ - __libc_cleanup_region_end (_doit) - -#if defined _LIBC && IS_IN (libc) - -# ifdef __EXCEPTIONS -# define _IO_acquire_lock(_fp) \ - do { \ - FILE *_IO_acquire_lock_file \ - __attribute__((cleanup (_IO_acquire_lock_fct))) \ - = (_fp); \ - _IO_flockfile (_IO_acquire_lock_file); -# else -# define _IO_acquire_lock(_fp) _IO_acquire_lock_needs_exceptions_enabled -# endif -# define _IO_release_lock(_fp) ; } while (0) - -#endif - -#endif /* stdio-lock.h */ From patchwork Thu May 27 20:44:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 43621 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DD249395CC03; Thu, 27 May 2021 20:45:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DD249395CC03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1622148314; bh=SKZj9Cb1UZRM/ruaiCmuQlSS7kSEz4PE/2EwfOgTTuU=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=oWAbP5o+9a40ikN9VvQN/LMcThYuP0NMHP/6AqXLuabbtTs5OcBbTRQWN2c6QNWfD ZK/y3yCgKL35gn72sRSk/T7k0i39CXnu1Er2ZpLi5UgVq/aJGdIF+tfob11QtCdrRB ZUEelrVjAO47gWDNZwzA7PzdWypl5e9dIRu0OSqU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) by sourceware.org (Postfix) with ESMTPS id B43B3396E471 for ; Thu, 27 May 2021 20:45:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B43B3396E471 Received: by mail-qt1-x836.google.com with SMTP id c15so1244101qte.6 for ; Thu, 27 May 2021 13:45:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SKZj9Cb1UZRM/ruaiCmuQlSS7kSEz4PE/2EwfOgTTuU=; b=BjSDH/Inpg/V/lzCI9jmrMTyGznm27sJq3OB1ck2rQNt6KmUImSTPvOTdXS1LtCg4k crjT3mQNwfJD3Lx5nKsASTXycVug/aBxqH73uJ798zdUozWGQKyGu015GIML/xUgxExd 2GJVGMWD/EoH7KzrJkjuFFLiWc3fo541W0HBw7/Rs56IljVBvBZtQqkZBQuLkVaHDloB 7ob/8ihpc0dLW9jBgqXKJir7wvNoMImQFbldHB37TqgZSq4H7b4ksp77RyeaEHy8VgTM D9KKKMCvQOM5ykagrlYtxG1oXfZ4qv9XpGU+RlGyfXfJ5bsCDYZghkP0MWqO0epB3VkT Rhvg== X-Gm-Message-State: AOAM530LWgwsk32fNlEEiET14a2oTziCt/APbRIZwz6ohEKV75wknQVs ijgUbUGtkOnyz6c86hmVDmNxp3WQ6YCSeA== X-Google-Smtp-Source: ABdhPJy+rxSp5P0fpJHIcb1gd7UEGntn7T9M/xrf8sSrn3JP5WpoIto3K4kzRMruul68bgSFKOvCGQ== X-Received: by 2002:a05:622a:143:: with SMTP id v3mr404577qtw.197.1622148306990; Thu, 27 May 2021 13:45:06 -0700 (PDT) Received: from birita.. ([177.194.37.86]) by smtp.googlemail.com with ESMTPSA id e14sm2058385qkl.1.2021.05.27.13.45.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 May 2021 13:45:06 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 4/4] Move libio lock single-thread optimization to generic libc-lock (BZ #27842) Date: Thu, 27 May 2021 17:44:57 -0300 Message-Id: <20210527204457.1250196-5-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> References: <20210527204457.1250196-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" This patch moves the single thread stdio optimization (d2e04918833d9) to the generic libc-lock. It simplifies the support, since there is no need to add per-function code to handle the single-thread case, and removes the _IO_enable_locks (the SINGLE_THREAD_P uses the either the TCB or the global variable which indicates wether the process is multi-threaded). As for current approach, once the process goes multithreaded the single-thread is disabled (it won't be enable back if the process become single-threaded). It also handles the memory streams requirement (de895ddcd7fc), since the SINGLE_THREAD_P already contains te information whether the process is multithread (so there is no need to disable the optimization because such stream are listed in _IO_list_all). Finally it also removed the flockfile uses a read-modify-write operation on _flags2 outside a lock region (BZ #27842). Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. --- libio/Versions | 3 --- libio/feof.c | 2 -- libio/ferror.c | 2 -- libio/fputc.c | 2 -- libio/genops.c | 28 ---------------------------- libio/getc.c | 2 -- libio/getchar.c | 4 +--- libio/iofopncook.c | 2 -- libio/ioungetc.c | 2 -- libio/libio.h | 4 ---- libio/memstream.c | 3 --- libio/putc.c | 2 -- libio/wmemstream.c | 3 --- nptl/pthread_create.c | 3 --- stdio-common/flockfile.c | 1 - sysdeps/mach/libc-lock.h | 9 +++++---- sysdeps/nptl/libc-lock.h | 7 ++++--- 17 files changed, 10 insertions(+), 69 deletions(-) diff --git a/libio/Versions b/libio/Versions index 6f1ab96100..73852bd007 100644 --- a/libio/Versions +++ b/libio/Versions @@ -156,9 +156,6 @@ libc { # Used by NPTL and librt __libc_fatal; - # Used by NPTL - _IO_enable_locks; - __fseeko64; __ftello64; } diff --git a/libio/feof.c b/libio/feof.c index 2664b4caac..7b4e9a60e3 100644 --- a/libio/feof.c +++ b/libio/feof.c @@ -32,8 +32,6 @@ _IO_feof (FILE *fp) { int result; CHECK_FILE (fp, EOF); - if (!_IO_need_lock (fp)) - return _IO_feof_unlocked (fp); _IO_flockfile (fp); result = _IO_feof_unlocked (fp); _IO_funlockfile (fp); diff --git a/libio/ferror.c b/libio/ferror.c index eef85c2602..dd3f0c8302 100644 --- a/libio/ferror.c +++ b/libio/ferror.c @@ -32,8 +32,6 @@ _IO_ferror (FILE *fp) { int result; CHECK_FILE (fp, EOF); - if (!_IO_need_lock (fp)) - return _IO_ferror_unlocked (fp); _IO_flockfile (fp); result = _IO_ferror_unlocked (fp); _IO_funlockfile (fp); diff --git a/libio/fputc.c b/libio/fputc.c index 55877668c1..8abe5e80f0 100644 --- a/libio/fputc.c +++ b/libio/fputc.c @@ -32,8 +32,6 @@ fputc (int c, FILE *fp) { int result; CHECK_FILE (fp, EOF); - if (!_IO_need_lock (fp)) - return _IO_putc_unlocked (c, fp); _IO_acquire_lock (fp); result = _IO_putc_unlocked (c, fp); _IO_release_lock (fp); diff --git a/libio/genops.c b/libio/genops.c index e501309b35..44b7ba9926 100644 --- a/libio/genops.c +++ b/libio/genops.c @@ -488,39 +488,11 @@ _IO_init (FILE *fp, int flags) _IO_init_internal (fp, flags); } -static int stdio_needs_locking; - -/* In a single-threaded process most stdio locks can be omitted. After - _IO_enable_locks is called, locks are not optimized away any more. - It must be first called while the process is still single-threaded. - - This lock optimization can be disabled on a per-file basis by setting - _IO_FLAGS2_NEED_LOCK, because a file can have user-defined callbacks - or can be locked with flockfile and then a thread may be created - between a lock and unlock, so omitting the lock is not valid. - - Here we have to make sure that the flag is set on all existing files - and files created later. */ -void -_IO_enable_locks (void) -{ - _IO_ITER i; - - if (stdio_needs_locking) - return; - stdio_needs_locking = 1; - for (i = _IO_iter_begin (); i != _IO_iter_end (); i = _IO_iter_next (i)) - _IO_iter_file (i)->_flags2 |= _IO_FLAGS2_NEED_LOCK; -} -libc_hidden_def (_IO_enable_locks) - void _IO_old_init (FILE *fp, int flags) { fp->_flags = _IO_MAGIC|flags; fp->_flags2 = 0; - if (stdio_needs_locking) - fp->_flags2 |= _IO_FLAGS2_NEED_LOCK; fp->_IO_buf_base = NULL; fp->_IO_buf_end = NULL; fp->_IO_read_base = NULL; diff --git a/libio/getc.c b/libio/getc.c index bf67362cd9..78709bffa8 100644 --- a/libio/getc.c +++ b/libio/getc.c @@ -34,8 +34,6 @@ _IO_getc (FILE *fp) { int result; CHECK_FILE (fp, EOF); - if (!_IO_need_lock (fp)) - return _IO_getc_unlocked (fp); _IO_acquire_lock (fp); result = _IO_getc_unlocked (fp); _IO_release_lock (fp); diff --git a/libio/getchar.c b/libio/getchar.c index 5c7307e392..270ccc0905 100644 --- a/libio/getchar.c +++ b/libio/getchar.c @@ -33,10 +33,8 @@ int getchar (void) { int result; - if (!_IO_need_lock (stdin)) - return _IO_getc_unlocked (stdin); _IO_acquire_lock (stdin); result = _IO_getc_unlocked (stdin); _IO_release_lock (stdin); return result; -} \ No newline at end of file +} diff --git a/libio/iofopncook.c b/libio/iofopncook.c index 57285cc291..b6761f1e25 100644 --- a/libio/iofopncook.c +++ b/libio/iofopncook.c @@ -162,8 +162,6 @@ _IO_cookie_init (struct _IO_cookie_file *cfile, int read_write, _IO_mask_flags (&cfile->__fp.file, read_write, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); - cfile->__fp.file._flags2 |= _IO_FLAGS2_NEED_LOCK; - /* We use a negative number different from -1 for _fileno to mark that this special stream is not associated with a real file, but still has to be treated as such. */ diff --git a/libio/ioungetc.c b/libio/ioungetc.c index dcf1c4ca9e..9c149f15d3 100644 --- a/libio/ioungetc.c +++ b/libio/ioungetc.c @@ -33,8 +33,6 @@ _IO_ungetc (int c, FILE *fp) CHECK_FILE (fp, EOF); if (c == EOF) return EOF; - if (!_IO_need_lock (fp)) - return _IO_sputbackc (fp, (unsigned char) c); _IO_acquire_lock (fp); result = _IO_sputbackc (fp, (unsigned char) c); _IO_release_lock (fp); diff --git a/libio/libio.h b/libio/libio.h index bd42479f13..60431e726d 100644 --- a/libio/libio.h +++ b/libio/libio.h @@ -89,7 +89,6 @@ typedef struct #define _IO_FLAGS2_USER_WBUF 8 #define _IO_FLAGS2_NOCLOSE 32 #define _IO_FLAGS2_CLOEXEC 64 -#define _IO_FLAGS2_NEED_LOCK 128 /* _IO_pos_BAD is an off64_t value indicating error, unknown, or EOF. */ #define _IO_pos_BAD ((off64_t) -1) @@ -213,9 +212,6 @@ extern int _IO_ftrylockfile (FILE *) __THROW; #define _IO_cleanup_region_end(_Doit) /**/ #endif -#define _IO_need_lock(_fp) \ - (((_fp)->_flags2 & _IO_FLAGS2_NEED_LOCK) != 0) - extern int _IO_vfscanf (FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict); extern __ssize_t _IO_padn (FILE *, int, __ssize_t); diff --git a/libio/memstream.c b/libio/memstream.c index 6763689038..368c23f7e8 100644 --- a/libio/memstream.c +++ b/libio/memstream.c @@ -92,9 +92,6 @@ __open_memstream (char **bufloc, size_t *sizeloc) new_f->fp.bufloc = bufloc; new_f->fp.sizeloc = sizeloc; - /* Disable single thread optimization. BZ 21735. */ - new_f->fp._sf._sbf._f._flags2 |= _IO_FLAGS2_NEED_LOCK; - return (FILE *) &new_f->fp._sf._sbf; } libc_hidden_def (__open_memstream) diff --git a/libio/putc.c b/libio/putc.c index bc9dea856d..72e7ec3f0b 100644 --- a/libio/putc.c +++ b/libio/putc.c @@ -25,8 +25,6 @@ _IO_putc (int c, FILE *fp) { int result; CHECK_FILE (fp, EOF); - if (!_IO_need_lock (fp)) - return _IO_putc_unlocked (c, fp); _IO_acquire_lock (fp); result = _IO_putc_unlocked (c, fp); _IO_release_lock (fp); diff --git a/libio/wmemstream.c b/libio/wmemstream.c index 037349c83c..d441c4248c 100644 --- a/libio/wmemstream.c +++ b/libio/wmemstream.c @@ -94,9 +94,6 @@ open_wmemstream (wchar_t **bufloc, size_t *sizeloc) new_f->fp.bufloc = bufloc; new_f->fp.sizeloc = sizeloc; - /* Disable single thread optimization. BZ 21735. */ - new_f->fp._sf._sbf._f._flags2 |= _IO_FLAGS2_NEED_LOCK; - return (FILE *) &new_f->fp._sf._sbf; } diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 2d2535b07d..d856c7bce3 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -718,9 +718,6 @@ __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr, collect_default_sched (pd); } - if (__glibc_unlikely (__nptl_nthreads == 1)) - _IO_enable_locks (); - /* Pass the descriptor to the caller. */ *newthread = (pthread_t) pd; diff --git a/stdio-common/flockfile.c b/stdio-common/flockfile.c index a66e0a731e..da382aebdf 100644 --- a/stdio-common/flockfile.c +++ b/stdio-common/flockfile.c @@ -22,7 +22,6 @@ void __flockfile (FILE *stream) { - stream->_flags2 |= _IO_FLAGS2_NEED_LOCK; _IO_lock_lock (*stream->_lock); } weak_alias (__flockfile, flockfile); diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h index 220fcee921..7b20d45470 100644 --- a/sysdeps/mach/libc-lock.h +++ b/sysdeps/mach/libc-lock.h @@ -106,9 +106,9 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; __libc_lock_recursive_t *const __lock = &(NAME); \ void *__self = __libc_lock_owner_self (); \ int __r = 0; \ - if (__self == __lock->owner) \ + if (!SINGLE_THREAD_P && __self == __lock->owner) \ ++__lock->cnt; \ - else if ((__r = lll_trylock (__lock->lock)) == 0) \ + else if (!SINGLE_THREAD_P && (__r = lll_trylock (__lock->lock)) == 0) \ __lock->owner = __self, __lock->cnt = 1; \ __r; \ }) @@ -117,7 +117,7 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; ({ \ __libc_lock_recursive_t *const __lock = &(NAME); \ void *__self = __libc_lock_owner_self (); \ - if (__self != __lock->owner) \ + if (!SINGLE_THREAD_P && __self != __lock->owner) \ { \ lll_lock (__lock->lock, 0); \ __lock->owner = __self; \ @@ -132,7 +132,8 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; if (--__lock->cnt == 0) \ { \ __lock->owner = 0; \ - lll_unlock (__lock->lock, 0); \ + if (!SINGLE_THREAD_P) \ + lll_unlock (__lock->lock, 0); \ } \ }) diff --git a/sysdeps/nptl/libc-lock.h b/sysdeps/nptl/libc-lock.h index 627b13309a..fd5ab91abf 100644 --- a/sysdeps/nptl/libc-lock.h +++ b/sysdeps/nptl/libc-lock.h @@ -90,7 +90,7 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; # define __libc_lock_lock_recursive(NAME) \ do { \ void *self = THREAD_SELF; \ - if ((NAME).owner != self) \ + if (!SINGLE_THREAD_P && (NAME).owner != self) \ { \ lll_lock ((NAME).lock, LLL_PRIVATE); \ (NAME).owner = self; \ @@ -108,7 +108,7 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; ({ \ int result = 0; \ void *self = THREAD_SELF; \ - if ((NAME).owner != self) \ + if (!SINGLE_THREAD_P && (NAME).owner != self) \ { \ if (lll_trylock ((NAME).lock) == 0) \ { \ @@ -135,7 +135,8 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; if (--(NAME).cnt == 0) \ { \ (NAME).owner = NULL; \ - lll_unlock ((NAME).lock, LLL_PRIVATE); \ + if (!SINGLE_THREAD_P) \ + lll_unlock ((NAME).lock, LLL_PRIVATE); \ } \ } while (0) #else