This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] benchtests: Add include-sources directive.
- From: Siddhesh Poyarekar <siddhesh at redhat dot com>
- To: Torvald Riegel <triegel at redhat dot com>
- Cc: GLIBC Devel <libc-alpha at sourceware dot org>
- Date: Wed, 9 Oct 2013 07:22:11 +0530
- Subject: Re: [PATCH] benchtests: Add include-sources directive.
- Authentication-results: sourceware.org; auth=none
- References: <1381266588 dot 18547 dot 1131 dot camel at triegel dot csb>
On Wed, Oct 09, 2013 at 12:09:48AM +0300, Torvald Riegel wrote:
> 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?
Thanks, this looks good to me.
Siddhesh
> 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]
The ChangeLog diff is not required during patch review btw.
> 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;