From patchwork Thu Aug 17 01:33:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 13355871 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E83CC2FC04 for ; Thu, 17 Aug 2023 01:34:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347546AbjHQBdr (ORCPT ); Wed, 16 Aug 2023 21:33:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347535AbjHQBdM (ORCPT ); Wed, 16 Aug 2023 21:33:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8BF4272B for ; Wed, 16 Aug 2023 18:33:10 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6BBDB64C39 for ; Thu, 17 Aug 2023 01:33:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 52FFAC433B9; Thu, 17 Aug 2023 01:33:07 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1qWRst-000N4k-2l; Wed, 16 Aug 2023 21:33:11 -0400 From: Steven Rostedt To: linux-trace-devel@vger.kernel.org Cc: Ross Zwisler , Stevie Alvarez , "Steven Rostedt (Google)" Subject: [PATCH v3 18/18] libtraceeval: Add traceeval_remove() Date: Wed, 16 Aug 2023 21:33:10 -0400 Message-Id: <20230817013310.88582-19-rostedt@goodmis.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230817013310.88582-1-rostedt@goodmis.org> References: <20230817013310.88582-1-rostedt@goodmis.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org From: "Steven Rostedt (Google)" Add a way to remove an entry that's in the traceeval. Currently there's only ways to add entries, but there also needs to be a way to remove them too. Signed-off-by: Steven Rostedt (Google) Reviewed-by: Ross Zwisler --- include/traceeval-hist.h | 3 +++ src/histograms.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/traceeval-hist.h b/include/traceeval-hist.h index 37147d626fbb..8e5a6451f399 100644 --- a/include/traceeval-hist.h +++ b/include/traceeval-hist.h @@ -160,6 +160,9 @@ int traceeval_insert(struct traceeval *teval, const union traceeval_data *keys, const union traceeval_data *vals); +int traceeval_remove(struct traceeval *teval, + const union traceeval_data *keys); + int traceeval_query(struct traceeval *teval, const union traceeval_data *keys, const union traceeval_data **results); diff --git a/src/histograms.c b/src/histograms.c index c16b8866b84a..f35d1b2e583d 100644 --- a/src/histograms.c +++ b/src/histograms.c @@ -934,6 +934,35 @@ int traceeval_insert(struct traceeval *teval, return update_entry(teval, entry, vals); } +/** + * traceeval_remove - remove an item from the traceeval descriptor + * @teval: The descriptor to insert into + * @keys: The list of keys that defines what is being removed + * + * This is the opposite of traceeval_insert(). Instead of inserting + * an item into the traceeval historgram, it removes it. + * + * Returns 1 if it found and removed an item, + * 0 if it did not find an time matching @keys + * -1 if there was an error. + */ +int traceeval_remove(struct traceeval *teval, + const union traceeval_data *keys) +{ + struct hash_table *hist = teval->hist; + struct entry *entry; + int check; + + entry = NULL; + check = get_entry(teval, keys, &entry); + + if (check < 1) + return check; + + hash_remove(hist, &entry->hash); + return 1; +} + /** * traceeval_iterator_put - release a given iterator * @iter: The iterartor to release