This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.19-270-g6a5d6ea


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  6a5d6ea128153f5a00d8c80f15f76004006767da (commit)
      from  a4c75cfd56e536c2b18556e8a482d88dffa0fffc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6a5d6ea128153f5a00d8c80f15f76004006767da

commit 6a5d6ea128153f5a00d8c80f15f76004006767da
Author: Torvald Riegel <triegel@redhat.com>
Date:   Tue Oct 8 14:17:01 2013 +0300

    benchtests: Add pthread_once common-case test.
    
    We have a single thread that runs a no-op initialization once and then
    repeatedly runs checks of the initialization (i.e., an acquire load and
    conditional jump) in a tight loop.  This gives us, on average, the
    best-case latency of pthread_once (the initialization is the
    exactly-once slow path, and we're not looking at initialization-related
    synchronization overheads in this case).

diff --git a/ChangeLog b/ChangeLog
index 7cc48ce..fb0177d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-10 Torvald Riegel  <triegel@redhat.com>
+
+	* benchtests/pthread_once-inputs: New file.
+	* benchtests/pthread_once-source.c: New file.
+	* benchtests/README: Update documentation.
+
 2014-04-09  Igor Zamyatin  <igor.zamyatin@intel.com>
 	    H.J. Lu  <hongjiu.lu@intel.com>
 
diff --git a/benchtests/Makefile b/benchtests/Makefile
index ca635cf..6e3f86b 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -23,7 +23,7 @@ subdir := benchtests
 
 include ../Makeconfig
 bench := acos acosh asin asinh atan atanh cos cosh exp exp2 ffs ffsll \
-	log log2 modf pow rint sin sincos sinh sqrt tan tanh
+	log log2 modf pow pthread_once rint sin sincos sinh sqrt tan tanh
 
 # String function benchmarks.
 string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
@@ -53,6 +53,7 @@ LDLIBS-bench-exp2 = -lm
 LDLIBS-bench-log = -lm
 LDLIBS-bench-log2 = -lm
 LDLIBS-bench-pow = -lm
+LDLIBS-bench-pthread_once = -lpthread
 LDLIBS-bench-rint = -lm
 LDLIBS-bench-sin = -lm
 LDLIBS-bench-sinh = -lm
diff --git a/benchtests/README b/benchtests/README
index 2a940fa..52a3cc2 100644
--- a/benchtests/README
+++ b/benchtests/README
@@ -60,6 +60,8 @@ one to add `foo' to the bench tests:
   - include-sources: This should be assigned a comma-separated list of source
     files that need to be included to provide definitions of global variables
     and functions (specifically, this includes using "#include "source").
+    See pthread_once-inputs and pthreads_once-source.c for an example of how
+    to use this to benchmark a function that needs state across several calls.
   - name: See following section for instructions on how to use this directive.
 
   Lines beginning with a single hash '#' are treated as comments.  See
diff --git a/benchtests/pthread_once-inputs b/benchtests/pthread_once-inputs
new file mode 100644
index 0000000..22c5709
--- /dev/null
+++ b/benchtests/pthread_once-inputs
@@ -0,0 +1,9 @@
+# This tests the common-case scenario for pthread_once.
+# We have a single thread that runs a no-op initialization once and then
+# repeatedly runs checks of the initialization (i.e., an acquire load and
+# conditional jump) in a tight loop.
+# scripts/bench.py doesn't handle function pointers, so we just use void *:
+## args: pthread_once_t *:void *
+## includes: pthread.h
+## include-sources: pthread_once-source.c
+&once, once_handler
diff --git a/benchtests/pthread_once-source.c b/benchtests/pthread_once-source.c
new file mode 100644
index 0000000..5f98b0a
--- /dev/null
+++ b/benchtests/pthread_once-source.c
@@ -0,0 +1,25 @@
+/* Measure pthread_once best-case latency (i.e., when already initialized.
+
+   Copyright (C) 2014 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
+   <http://www.gnu.org/licenses/>.  */
+
+static pthread_once_t once = PTHREAD_ONCE_INIT;
+
+static void
+once_handler (void)
+{
+}

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |    6 ++++++
 benchtests/Makefile                                |    3 ++-
 benchtests/README                                  |    2 ++
 benchtests/pthread_once-inputs                     |    9 +++++++++
 .../{bench-timing-type.c => pthread_once-source.c} |   12 +++++-------
 5 files changed, 24 insertions(+), 8 deletions(-)
 create mode 100644 benchtests/pthread_once-inputs
 copy benchtests/{bench-timing-type.c => pthread_once-source.c} (79%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]