From: Ross Zwisler <zwisler@google.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-devel@vger.kernel.org,
Stevie Alvarez <stevie.6strings@gmail.com>
Subject: Re: [PATCH 5/6] libtraceeval histogram: Fix the return value of traceeval_query()
Date: Thu, 10 Aug 2023 11:47:50 -0600 [thread overview]
Message-ID: <20230810174750.GA1961992@google.com> (raw)
In-Reply-To: <20230809031313.1298605-6-rostedt@goodmis.org>
On Tue, Aug 08, 2023 at 11:13:12PM -0400, Steven Rostedt wrote:
> From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
>
> The comments state that traceeval_query() returns 1 if found, 0 if not,
> and -1 on error, but in reality it returns 0 if found and 1 if not found.
The comment currently says:
> /*
> * Find the entry that @keys corresponds to within @teval.
> *
> * Returns 0 on success, 1 if no match found, -1 on error.
> */
I think this needs to be updated to match the new logic (1=found, 0=not
found, -1=error)
> It makes more sense to have it return 1 if found and zero if not found as
> the comment states.
>
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
> src/histograms.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/histograms.c b/src/histograms.c
> index 3cf5c5389700..226c2792995c 100644
> --- a/src/histograms.c
> +++ b/src/histograms.c
> @@ -551,7 +551,7 @@ static int get_entry(struct traceeval *teval, const union traceeval_data *keys,
> /* return entry if keys match */
> if (!check) {
> *result = entry;
> - return 0;
> + return 1;
> } else if (check == 1) {
> continue;
> } else {
> @@ -559,7 +559,7 @@ static int get_entry(struct traceeval *teval, const union traceeval_data *keys,
> }
> }
>
> - return 1;
> + return 0;
> }
>
> /*
> @@ -660,7 +660,7 @@ int traceeval_query(struct traceeval *teval, const union traceeval_data *keys,
> return -1;
>
> /* find key and copy its corresponding value pair */
> - if ((check = get_entry(teval, keys, &entry)))
> + if ((check = get_entry(teval, keys, &entry)) < 0)
should this be
if ((check = get_entry(teval, keys, &entry)) <= 0)
so we return 0 (not found) in that case, and avoid dropping into
copy_traceeval_data_set() when we have nothing to copy?
> return check;
> return copy_traceeval_data_set(teval->nr_val_types, teval->val_types,
> entry->vals, results);
> --
> 2.40.1
>
I think you also need to update the logic in traceeval_insert(), which right
now uses a return of 1 to mean "not found" and will do a create_entry() in
response.
For clarity maybe in all these consumers 'check' should be renamed 'found'?
Then the logic would read:
found = get_entry(..);
if (found == -1)
error;
if (found)
update_entry();
else /* ! found */
create_entry();
next prev parent reply other threads:[~2023-08-10 17:47 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 3:13 [PATCH 0/6] libtraceeval histogram: Updates Steven Rostedt
2023-08-09 3:13 ` [PATCH 1/6] libtraceeval: Add sample task-eval program Steven Rostedt
2023-08-09 3:13 ` [PATCH 2/6] libtraceeval hist: Add pointer and const string types Steven Rostedt
2023-08-09 3:13 ` [PATCH 3/6] libtraceeval histogram: Have cmp and release functions be generic Steven Rostedt
2023-08-09 3:13 ` [PATCH 4/6] libtraceeval histograms: Add traceeval struct to compare function Steven Rostedt
2023-08-09 3:13 ` [PATCH 5/6] libtraceeval histogram: Fix the return value of traceeval_query() Steven Rostedt
2023-08-10 17:47 ` Ross Zwisler [this message]
2023-08-11 5:25 ` Steven Rostedt
2023-08-09 3:13 ` [PATCH 6/6] libtraceeval samples: Update task-eval to use the histogram logic Steven Rostedt
2023-08-09 3:19 ` Steven Rostedt
2023-08-10 20:28 ` Ross Zwisler
2023-08-11 5:30 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230810174750.GA1961992@google.com \
--to=zwisler@google.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=stevie.6strings@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.