From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.1 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id B64081F61A for ; Sat, 10 Dec 2022 01:55:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1670637318; bh=IDa5KcJi7X+nQTSDautypQA2ytJl7JTpYTGcifVPS08=; h=From:To:Subject:Date:In-Reply-To:References:From; b=WJspIP1mlqBb5hYxDE+aOwfMETYxr8rUwUXmNuVd6NgvuoICw0gwlVvdi2OkYxQhH CJ1a09XS/L/Xu1amXAPrpPdq6BTVaU+tfCDHsEDY1qQp9+r7mqVnxrlIvb+YxVA1Ud Ug0EQ2DJKrOtsAgTiw4t/XzEr/eL4vKo+UOUSSuA= From: Eric Wong To: mwrap-perl@80x24.org Subject: [PATCH 1/3] move mwrap_reset to core Date: Sat, 10 Dec 2022 01:55:16 +0000 Message-Id: <20221210015518.272576-2-e@80x24.org> In-Reply-To: <20221210015518.272576-1-e@80x24.org> References: <20221210015518.272576-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: It'll be used for the C HTTP server. --- Mwrap.xs | 20 +------------------- mwrap_core.h | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Mwrap.xs b/Mwrap.xs index 0c00914..9f105c6 100644 --- a/Mwrap.xs +++ b/Mwrap.xs @@ -130,26 +130,8 @@ CLEANUP: void mwrap_reset() -PREINIT: - struct cds_lfht *t; - struct cds_lfht_iter iter; - struct src_loc *l; CODE: - uatomic_set(&total_bytes_inc, 0); - uatomic_set(&total_bytes_dec, 0); - - rcu_read_lock(); - t = CMM_LOAD_SHARED(totals); - if (t) - cds_lfht_for_each_entry(t, &iter, l, hnode) { - uatomic_set(&l->total, 0); - uatomic_set(&l->allocations, 0); - uatomic_set(&l->frees, 0); - uatomic_set(&l->freed_bytes, 0); - uatomic_set(&l->age_total, 0); - uatomic_set(&l->max_lifespan, 0); - } - rcu_read_unlock(); + mwrap_reset(); Devel::Mwrap::SrcLoc mwrap_get(loc) diff --git a/mwrap_core.h b/mwrap_core.h index f2d5a09..730699a 100644 --- a/mwrap_core.h +++ b/mwrap_core.h @@ -835,6 +835,29 @@ out: --locating; } +static void mwrap_reset(void) +{ + struct cds_lfht *t; + struct cds_lfht_iter iter; + struct src_loc *l; + + uatomic_set(&total_bytes_inc, 0); + uatomic_set(&total_bytes_dec, 0); + + rcu_read_lock(); + t = CMM_LOAD_SHARED(totals); + if (t) + cds_lfht_for_each_entry(t, &iter, l, hnode) { + uatomic_set(&l->total, 0); + uatomic_set(&l->allocations, 0); + uatomic_set(&l->frees, 0); + uatomic_set(&l->freed_bytes, 0); + uatomic_set(&l->age_total, 0); + uatomic_set(&l->max_lifespan, 0); + } + rcu_read_unlock(); +} + __attribute__((constructor)) static void mwrap_ctor(void) { sigset_t set, old;