From patchwork Mon Mar 10 07:49:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yang X-Patchwork-Id: 14009364 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 9FDEBC282DE for ; Mon, 10 Mar 2025 07:49:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4793280005; Mon, 10 Mar 2025 03:49:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D0DE280004; Mon, 10 Mar 2025 03:49:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87206280005; Mon, 10 Mar 2025 03:49:52 -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 6C0B9280004 for ; Mon, 10 Mar 2025 03:49:52 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EBB32B7758 for ; Mon, 10 Mar 2025 07:49:53 +0000 (UTC) X-FDA: 83204867466.20.503380D Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by imf03.hostedemail.com (Postfix) with ESMTP id 0FF0120004 for ; Mon, 10 Mar 2025 07:49:51 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ajufT8mM; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741592992; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=ZOM7SWXrVUOZbxXSv5zw92HxqGduUeTf1wpYowNIKoY=; b=RcBvjTMM6wkgBAZFh1nVWzhM48XBrrZN6PguOng9x559jBpptqyf56ip087x0AQABhsV7w XC5bYI9yroNyZELpY7tJcTWuNhvstn19J7BcUBlb20HqCuncnwpvhYFm3w54IjHwR7lWo9 t+wGGwx9zGf49XYLYn0q4gzpxiSFNUI= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ajufT8mM; spf=pass (imf03.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741592992; a=rsa-sha256; cv=none; b=dLCjpLDSw4rP4U6IwjgahLBlaj5uxuHrQNGKhgtymo7rTgRd5yc1DDYhey22BcOcbn04dZ I2oXn3j6jA5nVJLuwNXHfZw1z+ujiU+aYKi3X2NPxUKIym2yPRMPYLiA2RreuOy1ghRsRJ yoaENjo2mu0d794CClpFv4uTBp2vuZw= Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5e61da95244so2510192a12.2 for ; Mon, 10 Mar 2025 00:49:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741592991; x=1742197791; darn=kvack.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=ZOM7SWXrVUOZbxXSv5zw92HxqGduUeTf1wpYowNIKoY=; b=ajufT8mMhYK0Dl11mfm5S2EJ86C98/OVaLif/OCaLULyjLet8l/lHl8ZCDh8l5367n 0Lb1g8WnZ8mrixY5cFJPpMgqzpK3yjhtlwPBwvR2EyadKcgmD3Hk8A113hPR2IHJSRMt gRO4oRQnoTrQKLpyLicJRzhLsPyZG8/RQmACNao2ckQqr1dJ+Z9znmrxGRyJKUWyDJBr X9rRSyFes+FTAKqMOPl5rU+qmAIywq/KKTQZCGLdXPvaSHOsLnfSQVMaPCHGHAGtuZws WQ9kap5m9ca6ciaqg0Qu8ete6rIP0lTDfqgM6KCZSvjNSRtzdFmY0KdfLEsRuUNPIUp8 86Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741592991; x=1742197791; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZOM7SWXrVUOZbxXSv5zw92HxqGduUeTf1wpYowNIKoY=; b=v59z3yODkuCqHQoYXImsglWGLh+/S5euWOA0bXhHSLiqjDu0Vy/9WjbCN2W7i2pnwj lzIn9Xtj8FHZSdduPyZoj8O4i/uCgVWQKhdQkYFdjKqine73JxHH8lYYqkb/Ni2pgjCs xi19547WRoOzPlYkDc6bBL5Y6Idq3uibNkzofXcoC4Y5xE5ekhK+OHbu47XLPTB7FMLy tDlmIdZZ1PUzXIAnhA1RoHK1ZFDvPJNPWVdNNJWJmn9PUoSUJKrPAGwDza/ZPMAtjKg6 a+C3iNaH2cILZ8px+KF1pgC+7s/Jh4XUNeuMkZ8OSv6ypHDh/5tL/4UqlFois1h5hcYW qpnw== X-Forwarded-Encrypted: i=1; AJvYcCU90hen67sZRUvdgy9jeZAcSazMCrNWCCXqKmIzFnbZDp0+s82YDj2GAGl3BNOetTQmjwHXzc8dYw==@kvack.org X-Gm-Message-State: AOJu0Yxry86qGoLIlVblvlp1sQNRG4jfKr7d7xcvTxvtdOwgA9UmOUfc 6lfTB+7UNMEmBD9lbbrm3RXm/glmZWaxjBJFCArdy5kHQMOMk9h8pM1COrFd X-Gm-Gg: ASbGncs1GhX3XYNqBUDnqaP2qypjZ1eE2Wwga/831ASZAABZ4EdCCyESm6DilAJh/fF ccIJ4O1ZTf/TMhl3VB+CuzwkOi1ggwC2vxzIYydWu3BplTAZQmAMmjqKEUiPIOcno/otEhwMVMJ Q8t8mFMypM/ubru6wVUTXegXy6XD7e3oDFTh2HDHEpzKmRwAgHc+KPnlACs7omljGZ/Q7ZOwFUg +bUzOqClV1KnlOqFZGySM+3um8lrrGV1vhY3F+YPwXxOj6Plh6MFww4mq+uGarcvqmnOzfTgqDv p5TDHMbeQd6+KzL1I8JtBvTYy4G2qMpx2nliss/Ohy3H X-Google-Smtp-Source: AGHT+IHvrT/pOwBpR5/oi7nDO0oDX7b+Ia3GuvmuV4YRjiam3fhzL0vA1O4fpkeO9eoIQZ2rGzuFbQ== X-Received: by 2002:a05:6402:270f:b0:5e4:b66f:880b with SMTP id 4fb4d7f45d1cf-5e5e22988f8mr14574895a12.6.1741592990458; Mon, 10 Mar 2025 00:49:50 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e5c74a82ecsm6466431a12.37.2025.03.10.00.49.49 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 10 Mar 2025 00:49:49 -0700 (PDT) From: Wei Yang To: akpm@linux-foundation.org Cc: willy@infradead.org, michel@lespinasse.org, linux-mm@kvack.org, Wei Yang Subject: [Patch v2 3/7] lib/rbtree: add random seed Date: Mon, 10 Mar 2025 07:49:34 +0000 Message-Id: <20250310074938.26756-4-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20250310074938.26756-1-richard.weiyang@gmail.com> References: <20250310074938.26756-1-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Queue-Id: 0FF0120004 X-Rspamd-Server: rspam03 X-Stat-Signature: a5jfa4zys1h9ejoegwdponpmxinbwuea X-HE-Tag: 1741592991-311724 X-HE-Meta: U2FsdGVkX1/EarUZzKxK65sFKu12Q3pRxXEGePpmZgYTCMvI5FidO7hfask+/t1E4kkdS5Tbv43LCGYMZ7ZypNoMScPOl03M2c48O3/SZBdil0qAK8qQpQZi37B3lZbpRAPtj6PrIGk/wBgNThLh5KRohN32W5lSIoUXUDgY84AZNwlXLv/kcJHXhh6UYKSWCRKwsZ8KeHL0vLzAEvrEFT4oA4RDVSe63bfyLWEoXbmQCYQ/JSXdViLm6QvA4GNIWOwXsoU+XFyMvDI607Pvcu9XJr+D9q35sHlX8bu3kqb67w23FFIuUiXKMx6Ld8tRLAYNWtSjYNGLB35l6zcMkqoCHtSWRY99d5nfTJ23UBLVtKtTZkKkzX6CpvjM1Snhi1MD2dFmwVp41fRbzvXSmMkeD1Cvnlw7N+UGuugfjeGHe2CNFzIl21304Rcxan2zy585twn11/XyGUIVWN7enXSyGh3EkA9Ashu1LHjSF7vQFo4FFha1E2JRSDjkS3c0rCGNm30Se9yR953nXX/Ov4pYu+L4ovWI7+CAKHgVoWTxMJx1a9XJgZ89dAAlNGdhjzvN/v0xZhB8MSfJ8Q7FGaIgDOyLrecrsAAy4Og5vI1MIgIgWLlOpH0VZrR3hc9J6HdXHIuoxQHxuAxX22HFzCvDqQCfAG5LRFgAWuOq9+xF6ayFSdHbypo44CXmLamziK5Fh1uiTCZDZFXBm2QRzyVP1+23Jb+xZr+l5eCTTqRfVUBwULTpxQJCywFTJdyntrAnuiryepL0kRah2Kenpe52Glkqa14Ktz6KJQFWoxq+ndSG3IjFp2umNVFotOAdUmYkIlNL3lEtkgUiT/tmzCwZEY7y36AX3SIVol+9dqU7ZibtJOWfqhx56ycQbml0839iOqmmTLYUescG807sxMIUhtsGfI2hggtF7cK6QA2M81lCgWHAtEJKBsybHFvYfYqvL/9lc4yZ7LbNu1j v/nGgznP 2ajGDVKdxmHiUufl0LqQpVCrsfmR/hec1dD3DE3fDs6Zv4J6nffIzVN5v78mlI387SLLInwiKy18f/WE6duqxouu7fYVZhnLOo84uamEGwaUo8PsE7Wn24kyIMv1ubMhg8seaPfXowhEwA7kkrgCIji6O49cErXHKw5g1bLYa0t6fun2ioXaIjHMMXSPKu6A0wabfv1AyD/woxQvp4aulZfZtrdmXFp1TflsdtJSIXoVwPlWBAGnN2yVBL5n6jb1iqf7KT3SohFLtSEPJ/dh7WqffvV1aX9QlcOuvidnAZy15Qsgg7/CgrLR4aSEX56xox5ZeQ9UL4ICki5EYWdGoV3cYVD015lfMN+jUwrprxp7y9AyqTKU1i4IwPbXHqAn2aypDYMNPyR+KdIscoYZp6HoL95F1o5yrBBQDddxn/Rb5fqO9aqJjpLEdBMIeKBPN3SkbiVXiJZ0Aty2b6S4UxGLzFXrgi5Cw749xJb9qUlnCvgXhJHuz6fOTO230F/U0CboZTHP1xWh3i7N0k9ftyTLXE7x+4vleP4adyqWEGWWcJir0TsxWV5XkEhCxlia95q/xUb4qEVR1aM2SyDrGubh7fsPpYd0khsyZ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000031, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Current test use pseudo rand function with fixed seed, which means the test data is the same pattern each time. Add random seed parameter to randomize the test. Signed-off-by: Wei Yang CC: Matthew Wilcox CC: Michel Lespinasse --- v2: * define seed with ullong --- include/linux/types.h | 1 + lib/interval_tree_test.c | 3 ++- lib/rbtree_test.c | 3 ++- tools/include/linux/types.h | 2 ++ tools/testing/rbtree/interval_tree_test.c | 5 ++++- tools/testing/rbtree/rbtree_test.c | 5 ++++- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/linux/types.h b/include/linux/types.h index a3d2182c2686..49b79c8bb1a9 100644 --- a/include/linux/types.h +++ b/include/linux/types.h @@ -92,6 +92,7 @@ typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; +typedef unsigned long long ullong; #ifndef __BIT_TYPES_DEFINED__ #define __BIT_TYPES_DEFINED__ diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c index 12880d772945..51863077d4ec 100644 --- a/lib/interval_tree_test.c +++ b/lib/interval_tree_test.c @@ -19,6 +19,7 @@ __param(int, search_loops, 1000, "Number of iterations searching the tree"); __param(bool, search_all, false, "Searches will iterate all nodes in the tree"); __param(uint, max_endpoint, ~0, "Largest value for the interval's endpoint"); +__param(ullong, seed, 3141592653589793238ULL, "Random seed"); static struct rb_root_cached root = RB_ROOT_CACHED; static struct interval_tree_node *nodes = NULL; @@ -137,7 +138,7 @@ static int interval_tree_test_init(void) return -ENOMEM; } - prandom_seed_state(&rnd, 3141592653589793238ULL); + prandom_seed_state(&rnd, seed); basic_check(); search_check(); diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c index b0e0b26506cb..690cede46ac2 100644 --- a/lib/rbtree_test.c +++ b/lib/rbtree_test.c @@ -14,6 +14,7 @@ __param(int, nnodes, 100, "Number of nodes in the rb-tree"); __param(int, perf_loops, 1000, "Number of iterations modifying the rb-tree"); __param(int, check_loops, 100, "Number of iterations modifying and verifying the rb-tree"); +__param(ullong, seed, 3141592653589793238ULL, "Random seed"); struct test_node { u32 key; @@ -402,7 +403,7 @@ static int __init rbtree_test_init(void) if (!nodes) return -ENOMEM; - prandom_seed_state(&rnd, 3141592653589793238ULL); + prandom_seed_state(&rnd, seed); basic_check(); augmented_check(); diff --git a/tools/include/linux/types.h b/tools/include/linux/types.h index 8519386acd23..4928e33d44ac 100644 --- a/tools/include/linux/types.h +++ b/tools/include/linux/types.h @@ -42,6 +42,8 @@ typedef __s16 s16; typedef __u8 u8; typedef __s8 s8; +typedef unsigned long long ullong; + #ifdef __CHECKER__ #define __bitwise __attribute__((bitwise)) #else diff --git a/tools/testing/rbtree/interval_tree_test.c b/tools/testing/rbtree/interval_tree_test.c index f1c41f5e28ba..63775b831c1c 100644 --- a/tools/testing/rbtree/interval_tree_test.c +++ b/tools/testing/rbtree/interval_tree_test.c @@ -18,6 +18,7 @@ int usage(void) fprintf(stderr, " -s: Number of iterations searching the tree\n"); fprintf(stderr, " -a: Searches will iterate all nodes in the tree\n"); fprintf(stderr, " -m: Largest value for the interval's endpoint\n"); + fprintf(stderr, " -r: Random seed\n"); exit(-1); } @@ -31,7 +32,7 @@ int main(int argc, char **argv) { int opt; - while ((opt = getopt(argc, argv, "n:p:q:s:am:")) != -1) { + while ((opt = getopt(argc, argv, "n:p:q:s:am:r:")) != -1) { if (opt == 'n') nnodes = strtoul(optarg, NULL, 0); else if (opt == 'p') @@ -44,6 +45,8 @@ int main(int argc, char **argv) search_all = true; else if (opt == 'm') max_endpoint = strtoul(optarg, NULL, 0); + else if (opt == 'r') + seed = strtoul(optarg, NULL, 0); else usage(); } diff --git a/tools/testing/rbtree/rbtree_test.c b/tools/testing/rbtree/rbtree_test.c index c723e751b9a9..585c970f679e 100644 --- a/tools/testing/rbtree/rbtree_test.c +++ b/tools/testing/rbtree/rbtree_test.c @@ -16,6 +16,7 @@ int usage(void) fprintf(stderr, " -n: Number of nodes in the rb-tree\n"); fprintf(stderr, " -p: Number of iterations modifying the rb-tree\n"); fprintf(stderr, " -c: Number of iterations modifying and verifying the rb-tree\n"); + fprintf(stderr, " -r: Random seed\n"); exit(-1); } @@ -29,13 +30,15 @@ int main(int argc, char **argv) { int opt; - while ((opt = getopt(argc, argv, "n:p:c:")) != -1) { + while ((opt = getopt(argc, argv, "n:p:c:r:")) != -1) { if (opt == 'n') nnodes = strtoul(optarg, NULL, 0); else if (opt == 'p') perf_loops = strtoul(optarg, NULL, 0); else if (opt == 'c') check_loops = strtoul(optarg, NULL, 0); + else if (opt == 'r') + seed = strtoul(optarg, NULL, 0); else usage(); }