From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 8AFD63858C00; Mon, 19 Dec 2022 18:56:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8AFD63858C00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1671476184; bh=HY8L0Fk2tM/B3VgTM6N85mzxIJOcnP3e7NDnHfJzxRI=; h=From:To:Subject:Date:From; b=VJJUxgiRSOiHY+jeVJVhAzN0j65kI+chJ1s7fmWunJwTfU8d08L7nigGa8VI6+wpw Gm08t22NAc9PZmW6TJ+YO0FGkXYK1vspM1Zi27c3/EC9HpDi95kyDFXktmyT1174+s QLBd9NpvN27rFX1XdDxg877ZYMl1gyL/tU1S4nD8= 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] stdio-common: Add lock optimization to vfprintf and vfwprintf X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/master X-Git-Oldrev: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d X-Git-Newrev: 3d0005b54af06d3bb7ab9f85bfe6a27552b11f74 Message-Id: <20221219185624.8AFD63858C00@sourceware.org> Date: Mon, 19 Dec 2022 18:56:24 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3d0005b54af06d3bb7ab9f85bfe6a27552b11f74 commit 3d0005b54af06d3bb7ab9f85bfe6a27552b11f74 Author: Florian Weimer Date: Mon Dec 19 18:56:54 2022 +0100 stdio-common: Add lock optimization to vfprintf and vfwprintf After the rewrite and the implicit unbuffered streams handling, this is very straightforward to add. Reviewed-by: Adhemerval Zanella 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. */