From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 1D505385B512; Mon, 12 Dec 2022 15:21:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D505385B512 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1670858478; bh=wFKxyMLUUYNnE8nA7YHhWi3k3zkBDCOsp6G8K70gEiw=; h=From:To:Subject:Date:From; b=Os40VlT4Tf9ddxqnYw/1xJsH1OWrCp+gAdYt9aH5Ws+hmk47CKnT6lX2vLufAEX8F ISSl7sQkQrbsIgTqzQ9+/ylIrSiD0VWRkUnWhQMajjG78tKGUsjFTHBZEZ/a9mpwnG gGgdt5ZGwi1Rd5NHxp+x7mtuEDTBeEQ3w1QBJqdg= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Florian Weimer To: glibc-cvs@sourceware.org Subject: [glibc/fw/vfprintf-2] stdio-common: Add lock optimization to vfprintf and vfwprintf X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/fw/vfprintf-2 X-Git-Oldrev: 2706c12ba5db0ed2c845c991bb1577a7e5be2f07 X-Git-Newrev: a407f0532feffbc31a3fa89754dc2313bd56eb89 Message-Id: <20221212152118.1D505385B512@sourceware.org> Date: Mon, 12 Dec 2022 15:21:18 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a407f0532feffbc31a3fa89754dc2313bd56eb89 commit a407f0532feffbc31a3fa89754dc2313bd56eb89 Author: Florian Weimer Date: Thu Aug 18 08:49:54 2022 +0200 stdio-common: Add lock optimization to vfprintf and vfwprintf After the rewrite and the implicit unbuffered streams handling, this is very straightforward to add. Diff: --- stdio-common/vfprintf-internal.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stdio-common/vfprintf-internal.c b/stdio-common/vfprintf-internal.c index 83a6aea510..23ada8d0ff 100644 --- a/stdio-common/vfprintf-internal.c +++ b/stdio-common/vfprintf-internal.c @@ -1452,6 +1452,14 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap, unsigned int mode_flags) return EOF; #endif + if (!_IO_need_lock (s)) + { + struct Xprintf (buffer_to_file) wrap; + Xprintf (buffer_to_file_init) (&wrap, s); + Xprintf_buffer (&wrap.base, format, ap, mode_flags); + return Xprintf (buffer_to_file_done) (&wrap); + } + int done; /* Lock stream. */