From mboxrd@z Thu Jan 1 00:00:00 1970 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8DAC8C77B7C for ; Sun, 22 Jun 2025 21:38:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6ED476B00AE; Sun, 22 Jun 2025 17:38:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 676E96B00AF; Sun, 22 Jun 2025 17:38:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53E546B00B0; Sun, 22 Jun 2025 17:38:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 3FEA26B00AE for ; Sun, 22 Jun 2025 17:38:09 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 09B421A0F30 for ; Sun, 22 Jun 2025 21:38:09 +0000 (UTC) X-FDA: 83584349898.23.06759C8 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf08.hostedemail.com (Postfix) with ESMTP id 4DF46160008 for ; Sun, 22 Jun 2025 21:38:07 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=sjQLvGNb; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750628287; a=rsa-sha256; cv=none; b=JNklHyPLKvTJ/9vw3nRdfJ6P3wiBbVkbXGyXmVNhxnh0H2szqu+dpIEpWMDCx/dZ3ReIPU 1EO7H4KAdscXm+cl8OJ5MOgqUWEPYcqeA88H0sLDNI5KioIU5t/p//NZW8o2Hei9hRrmsM CScnEkDgakcJYL7ZWyjBLKC+O9TX1lU= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=sjQLvGNb; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750628287; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=qW1WEytoAoFxwuAb2aC27zdNxfCZYeUeonz940NyRSk=; b=PNI0ZFUvHLR4AUcfrS8XhpoUE7CHfzTlYfM3u8AXa2oHOoQh8zUIqmfivHJ+sRl6cYLL12 OYrdLANHEMt3Nf3ya25ylyJTdfO9oIux9YZ0RfbLErEpnKUjz9WHqUZOPJK9AKp1icOW/a /x3FktllFpMrLKa/2HzAbN2q4qmYorY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 5256E4A8D7; Sun, 22 Jun 2025 21:38:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 008C7C4CEF6; Sun, 22 Jun 2025 21:38:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750628286; bh=9OzPivFmaJWkkCm6QPhirCH8VNjpNc3g3HIvaejTiTY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sjQLvGNbe332yCCNHs8+KaS/WCmJkhE+IWTVPYvqRTGB2bji6mGZvrbdaYjcXMxg3 5sqDgiUba/usNxk+EiVMik9AfWP1B72k9NGXEha76+YsOAmUwCDot79XMKoqzzM1jz vgiMM3g13W7ZczlDZrfSdReJKOXq78RBxgHJKUuK9/fZbJ3Nqh1rPx4ELhS5rv+1UY ZbpeZbKPuuA582CZr/eppnlT0YD2VEm8+MFBETMhP+QyktJaJjmVmehCp0UgS5l6rP sNPKMjTR4YNShSgP9YZkOMN5CA/xV0o38bFX0jvHZLV8F77bwh+BGOetbtn4lqKxH4 XyHGxwZCnjI9w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 3/5] mm/damon/sysfs-schemes: decouple from damos_wmark_metric Date: Sun, 22 Jun 2025 14:37:57 -0700 Message-Id: <20250622213759.50930-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250622213759.50930-1-sj@kernel.org> References: <20250622213759.50930-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 4DF46160008 X-Stat-Signature: 7kbbtakx87ixd6d3kdyy7a4ahoojf1xy X-Rspam-User: X-HE-Tag: 1750628287-790712 X-HE-Meta: U2FsdGVkX1/ynTRy7gwJc0sQvHbKomsHQUCIN+zfwp3Kz9+twSOiAqggL5DstTQpRZ5Jurw3o44U5LLjbUU2KX/Z1vulMAF7Zb/AtnPpdYsvXuzLo73EnV3irvVnWApJkFZ+cwYTpfxiPKZiW+1on8/7SUSLGlKpxsJY/8bxj7wxRKJTCuQA93dWfNcEbY31bAGMKrBgCWyIdrhkN1Y2uyyCKbZy2J9Jz2VAyOeCWOwocXm/1xJwS6lpuLAYL06YF/IEe3koYucw9PD8/G9PAbrrqEYwDyW82Vyp6Qks0uQn5yROf7WbVapy3xutYpJFaBh5ErNsmq8SxsdsH6+we0bgs3aywvk+JG9hYMoyhk9lc/mGrbURxA+F7PyBfw6oB9UdvvyKB2uz/hNgOPTt+yQru1w4AkEaQ/tIgWfdug+x4BFRmMlc83AKXWsbk70EwbkdWhuQtAK80plxdvA/4yPjtiHa4MqfBBPaR7fUz1fczHcwyfu3Qqxe6beLEVSmbOqYYWsrLM3eqnYDZcGcQt8y/8jXBEsjgaqLIO2IWEXZR4HjGI1vYik2sW+5qbdIL1NXJ1tia506bHFo4nblJzG0OWuy5hrCgmbAWGT6KV+Xcx8T2sEmy58qd6HNVkeqTHDsCPRr3/agl1Hj1i/9zF2R3wwFsZJW7DSh5sFOR8vvdLs/ldYrfEfI/olYt6kWxYAjDUdyR/84n2+6q0ssxaWBcRt9TPl4h0yXfZwjayVeai4c9doZW8QthxGktlMlwV33tk/XwmusGgVuzCI9KJKviU5bm2jFJW6GcCLzaLf2Hh3y4kyiVRcO7sH2ZXNlnpTFLB3ZWoQZgvOPetC6hVDIcr7+gQjedEgLBsjNqPodiJH4VKjMSWQyaRZ30tTuaW1ScrS+nUaZqM7w8/2FAfr3HmCJPHgHTPtQkGxymnC1uxtsxAHBxzVPwG8063A6zfXJWdIxOqT/u1Beor5 raZymjOM 7NIR4HshOG8vaKr0FGkDxGa86yeMlfqES6IIx0g3A3rCTOEZRMR9IwbpeVzRoGB4NPOl2oUiq2EAIjQrkwfBTGY5i4sDiVXdcX8kWJR+hXA019iOuS3SoA+uenV8QsY1H0PPasGm7OLepVNRnIKe4xENJc7Dqz762l3ousJ1K8G0qEMa/NdxfJF6m456EISShjzJu4fezWM8qbO7HjM9HvuU/mU4P45MJxo4lWaLdzlQkCGuM75UsewwoL8MuELDy7Ss7gnUzyqsqmnrXm7W8Fcot2g== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Decouple DAMOS sysfs interface from damos_wmark_metric. For this, define and use new sysfs-schemes internal data structure that maps the user-space keywords and damos_wmark_metric, instead of having the implicit and unflexible array index rule. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 41 ++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 117d27544173..3d42d24bb33a 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -785,10 +785,21 @@ static struct damon_sysfs_watermarks *damon_sysfs_watermarks_alloc( return watermarks; } -/* Should match with enum damos_wmark_metric */ -static const char * const damon_sysfs_wmark_metric_strs[] = { - "none", - "free_mem_rate", +struct damos_sysfs_wmark_metric_name { + enum damos_wmark_metric metric; + char *name; +}; + +static const struct damos_sysfs_wmark_metric_name +damos_sysfs_wmark_metric_names[] = { + { + .metric = DAMOS_WMARK_NONE, + .name = "none", + }, + { + .metric = DAMOS_WMARK_FREE_MEM_RATE, + .name = "free_mem_rate", + }, }; static ssize_t metric_show(struct kobject *kobj, struct kobj_attribute *attr, @@ -796,9 +807,16 @@ static ssize_t metric_show(struct kobject *kobj, struct kobj_attribute *attr, { struct damon_sysfs_watermarks *watermarks = container_of(kobj, struct damon_sysfs_watermarks, kobj); + int i; - return sysfs_emit(buf, "%s\n", - damon_sysfs_wmark_metric_strs[watermarks->metric]); + for (i = 0; i < ARRAY_SIZE(damos_sysfs_wmark_metric_names); i++) { + const struct damos_sysfs_wmark_metric_name *metric_name; + + metric_name = &damos_sysfs_wmark_metric_names[i]; + if (metric_name->metric == watermarks->metric) + return sysfs_emit(buf, "%s\n", metric_name->name); + } + return -EINVAL; } static ssize_t metric_store(struct kobject *kobj, struct kobj_attribute *attr, @@ -806,11 +824,14 @@ static ssize_t metric_store(struct kobject *kobj, struct kobj_attribute *attr, { struct damon_sysfs_watermarks *watermarks = container_of(kobj, struct damon_sysfs_watermarks, kobj); - enum damos_wmark_metric metric; + int i; - for (metric = 0; metric < NR_DAMOS_WMARK_METRICS; metric++) { - if (sysfs_streq(buf, damon_sysfs_wmark_metric_strs[metric])) { - watermarks->metric = metric; + for (i = 0; i < ARRAY_SIZE(damos_sysfs_wmark_metric_names); i++) { + const struct damos_sysfs_wmark_metric_name *metric_name; + + metric_name = &damos_sysfs_wmark_metric_names[i]; + if (sysfs_streq(buf, metric_name->name)) { + watermarks->metric = metric_name->metric; return count; } } -- 2.39.5