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 picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 743E9ECAAA1 for ; Thu, 15 Sep 2022 10:05:08 +0000 (UTC) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id D50C23CAC20 for ; Thu, 15 Sep 2022 12:05:06 +0200 (CEST) Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id C2A7E3C9111 for ; Thu, 15 Sep 2022 12:04:56 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id CB4961000999 for ; Thu, 15 Sep 2022 12:04:55 +0200 (CEST) Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 1A8BF22A93; Thu, 15 Sep 2022 10:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1663236295; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=MhDKZvB3QtPeJ9ETBzopOL9a5tUz8M+voGA/GiFUgaE=; b=wVt+MSezSXISnsI1YFYuS1uigtNSsgLZh5HQ5yzd7p7IYUy4fMXhmfWh+FXclNKbflJeSd PPP7kblDaj3UP8o5llYoMJTps5ws8ko8MLDPQeepUdUV/OkMSUeFNoHFqSUhqRHfkz4QMi qX6d36J2Po+W+7Ue47W8u/JK6lcAyFc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1663236295; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=MhDKZvB3QtPeJ9ETBzopOL9a5tUz8M+voGA/GiFUgaE=; b=YI/Vf7ZNSNsMNTKoil4IQSL+24ZfgEgz3SbVMIJv0oKnedlupR+JNkyQtEpwl4R3gbXumo +xIIh+cezYdYVJDQ== Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id 09FDC13310; Thu, 15 Sep 2022 10:04:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id tSs4Acf4ImNaLwAAGKfGzw (envelope-from ); Thu, 15 Sep 2022 10:04:55 +0000 Date: Thu, 15 Sep 2022 12:06:52 +0200 From: Cyril Hrubis To: Zhao Gongyi Message-ID: References: <20220915041035.211822-1-zhaogongyi@huawei.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220915041035.211822-1-zhaogongyi@huawei.com> X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean Subject: Re: [LTP] [PATCH] lib: Add checking of setup params in kernel command line X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ltp@lists.linux.it Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ltp-bounces+ltp=archiver.kernel.org@lists.linux.it Sender: "ltp" Hi! > There are some test cases that need to check the configuration > of setup params, so we add tst_kernel_cmdline_check() to check it > in do_setup(). Can you elaborate on that? Which tests and what for? > Signed-off-by: Zhao Gongyi > --- > include/tst_kernel.h | 9 +++++++++ > include/tst_test.h | 3 +++ > lib/tst_kernel.c | 21 +++++++++++++++++++++ > lib/tst_test.c | 9 +++++++++ > 4 files changed, 42 insertions(+) > > diff --git a/include/tst_kernel.h b/include/tst_kernel.h > index 9e17bb71e..874ec3bf4 100644 > --- a/include/tst_kernel.h > +++ b/include/tst_kernel.h > @@ -20,4 +20,13 @@ int tst_kernel_bits(void); > */ > int tst_check_driver(const char *driver); > > +/* > + * Checks if there is a configuration in the kernel command line. > + * > + * @param cmd The setup param that need to be checked in command line. > + * @return Returns 0 if the kernel configured the setup param in command line. > + * -1 when the setup param is not configured. > + */ > +int tst_kernel_cmdline_check(const char *cmd); > + > #endif /* TST_KERNEL_H__ */ > diff --git a/include/tst_test.h b/include/tst_test.h > index ac52f268c..ba7d538b7 100644 > --- a/include/tst_test.h > +++ b/include/tst_test.h > @@ -312,6 +312,9 @@ struct tst_test { > > /* {} terminated array of required CGroup controllers */ > const char *const *needs_cgroup_ctrls; > + > + /* NULL terminated array of required kernel cmdlines. */ > + const char *const *needs_kernel_cmdlines; > }; > > /* > diff --git a/lib/tst_kernel.c b/lib/tst_kernel.c > index ecf4b917e..1e6d18e55 100644 > --- a/lib/tst_kernel.c > +++ b/lib/tst_kernel.c > @@ -24,6 +24,8 @@ > #include "tst_kernel.h" > #include "old_safe_stdio.h" > > +#define COMMAND_LINE_SIZE 4096 > + > static int get_kernel_bits_from_uname(struct utsname *buf) > { > if (uname(buf)) { > @@ -189,3 +191,22 @@ int tst_check_driver(const char *driver) > > return ret; > } > + > +int tst_kernel_cmdline_check(const char *cmd) > +{ > + char cmdline[COMMAND_LINE_SIZE]; > + > + FILE *f = fopen("/proc/cmdline", "r"); > + if (f == NULL) { > + tst_brkm(TBROK | TERRNO, NULL, "Open /proc/cmdline failed"); > + return -1; > + } > + > + while (fscanf(f, "%s", cmdline) > 0) { > + if (!strcmp(cmdline, cmd)) > + return 0; > + } > + > + tst_brkm(TCONF, NULL, "Setup param '%s' is not configured", cmd); > + return -1; > +} If nothing else this call should really take the NULL terminated array as parameter and check for all flags so that we don't have to parse the file eac time we check for a flag. Also there is no point in doing return from a function that calls tst_brkm(). The function should just return void in this case. > diff --git a/lib/tst_test.c b/lib/tst_test.c > index 8ccde1629..7a842c5ae 100644 > --- a/lib/tst_test.c > +++ b/lib/tst_test.c > @@ -1125,6 +1125,15 @@ static void do_setup(int argc, char *argv[]) > if (tst_test->min_kver) > check_kver(); > > + if (tst_test->needs_kernel_cmdlines) > + { > + const char *cmd; > + int i; > + > + for (i = 0; (cmd = tst_test->needs_kernel_cmdlines[i]); ++i) > + tst_kernel_cmdline_check(cmd); > + } > + > if (tst_test->supported_archs && !tst_is_on_arch(tst_test->supported_archs)) > tst_brk(TCONF, "This arch '%s' is not supported for test!", tst_arch.name); > > -- > 2.17.1 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp