This is the mail archive of the libc-alpha@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]

[PATCH] benchtests: Add include-sources directive.


This adds the "include-sources" directive to scripts/bench.pl.  This
allows for including source code (vs including headers, which might get
a different search path) after the inclusion of any headers.  We need
such source code to run tests that are stateful across iterations of the
benchmarks, or need helper functions (see the other patch about the
pthread_once benchtest for an example).

Tested on the pthread_once benchtest.  OK?
commit b256e4428b509e76e9928750ffdf195e3390097c
Author: Torvald Riegel <triegel@redhat.com>
Date:   Tue Oct 8 14:04:10 2013 +0300

    benchtests: Add include-sources directive.
    
    	* scripts/bench.pl: Add include-sources directive.
    	* benchtests/README: Update documentation.

diff --git a/ChangeLog b/ChangeLog
index d423483..1acd57c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-08  Torvald Riegel  <triegel@redhat.com>
+
+	* scripts/bench.pl: Add include-sources directive.
+	* benchtests/README: Update documentation.
+
 2013-10-08  Yogesh Chaudhari  <mr.yogesh@gmail.com>
 
 	[BZ #156]
diff --git a/benchtests/README b/benchtests/README
index 5faca53..0c643a6 100644
--- a/benchtests/README
+++ b/benchtests/README
@@ -51,9 +51,12 @@ one to add `foo' to the bench tests:
     inputs.
   - ret: This should be assigned the type that the function returns.  This
     directive may be skipped if the function does not return a value.
-  - includes: This should be assigned a comma separated list of headers that
+  - includes: This should be assigned a comma-separated list of headers that
     need to be included to provide declarations for the function and types it
-    may need.
+    may need (specifically, this includes using "#include <header>").
+  - 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").
   - 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/scripts/bench.pl b/scripts/bench.pl
index 5fe95d0..492ab81 100755
--- a/scripts/bench.pl
+++ b/scripts/bench.pl
@@ -34,7 +34,8 @@ my $getret = "";
 my $variant = "";
 my @curvals;
 my %vals;
-my @include_files;
+my @include_headers;
+my @include_sources;
 my $incl;
 
 open INPUTS, "<$func-inputs" or die $!;
@@ -43,7 +44,7 @@ LINE:while (<INPUTS>) {
   chomp;
 
   # Directives.
-  if (/^## (\w+): (.*)/) {
+  if (/^## ([\w-]+): (.*)/) {
     # Function argument types.
     if ($1 eq "args") {
       @args = split(":", $2);
@@ -55,7 +56,11 @@ LINE:while (<INPUTS>) {
     }
 
     elsif ($1 eq "includes") {
-      @include_files = split (",", $2);
+      @include_headers = split (",", $2);
+    }
+
+    elsif ($1 eq "include-sources") {
+      @include_sources = split (",", $2);
     }
 
     # New variant.  This is the only directive allowed in the body of the
@@ -72,6 +77,10 @@ LINE:while (<INPUTS>) {
       undef @curvals;
       next LINE;
     }
+
+    else {
+      die "Unknown directive: ".$1;
+    }
   }
 
   # Skip over comments.
@@ -86,10 +95,15 @@ my $bench_func = "#define CALL_BENCH_FUNC(v, i) $func (";
 
 
 # Print the definitions and macros.
-foreach $incl (@include_files) {
+foreach $incl (@include_headers) {
   print "#include <" . $incl . ">\n";
 }
 
+# Print the source files.
+foreach $incl (@include_sources) {
+  print "#include \"" . $incl . "\"\n";
+}
+
 if (@args > 0) {
   # Save values in the last variant.
   $vals{$variant} = \@curvals;

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