From patchwork Wed Jan 31 14:05:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammad Usama Anjum X-Patchwork-Id: 13539497 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 27462C47DB3 for ; Wed, 31 Jan 2024 14:05:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A42946B009D; Wed, 31 Jan 2024 09:05:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CF166B009E; Wed, 31 Jan 2024 09:05:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F7C36B009F; Wed, 31 Jan 2024 09:05:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 6CF716B009D for ; Wed, 31 Jan 2024 09:05:39 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 326A71A0D26 for ; Wed, 31 Jan 2024 14:05:39 +0000 (UTC) X-FDA: 81739779198.05.7B4A124 Received: from madrid.collaboradmins.com (madrid.collaboradmins.com [46.235.227.194]) by imf08.hostedemail.com (Postfix) with ESMTP id 1918C160024 for ; Wed, 31 Jan 2024 14:05:36 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=Y5pQ9du2; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf08.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.194 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706709937; 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=d6PKfMgckuxTwcBG16wC0ctq4RNtAQR5cQVEk/u50mQ=; b=uvNiT1o/7EQWRIXAABtgHCEeHsEWTueRQvIss0LI+uBG0qgMLAsfbKbHjSHzF66ONquEtd cptfqRkGThp84GtpDhziXATibZIE/8EV0C2AUwJ8Tx6CzKQpeUcgwrPWg9JeYdGtv+E8ka 4+/aVaZJILkohGRDcmp5EpTTIU9B66g= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=Y5pQ9du2; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf08.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.194 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706709937; a=rsa-sha256; cv=none; b=m4RJQOa1/A0kgXQMVRBQmF0x6h9omVpyxw64TySodjZZg58tsB6hnb1ql4UqPzt3JtsRew OdNpL5m6TvnhfyrZmsqAzaWJJWMGG6tsmrGIAFi/zG4hdwIM5XxrldPHRnbpBmb+2g+Msd kOwQ6GnC31R8/iZm8zmyxbx54ZewZpU= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1706709936; bh=Qz1hYpXZ0ZArWwJNMRoiOZt8O4/weesIABzDbZYxCC0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Y5pQ9du2FKfMQPOxu64NoVlqah6eSuWUHY5+FBrkKanpFPShFX5b3UutJy6s/vvdA WwVo6144/79OXPuwuz9aHuk7y5vvrchSQBPaBeNGhDbxG8FNUMN8QewODzOZTt6gIQ bhFh5SO8/Vst+A1DbHoirNZnYkfpahdulHbOKy+6k/5EVuQaXJA7+x1Y2UBnVmJbMr QtuKFBQ2x3POfXWyubTuk1EbpCHeKnYvAcK8Dl40kuoScttAKMJNZVmqbSHnE3ESC8 nG3JCuJnDoyAAN0dltBDedl3XQgFUQMTC0VTt0JCvSXWuvDrSDJS+V0szzUS8LVT1A RLKaFkFqQrsyg== Received: from localhost.localdomain (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: usama.anjum) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 5F4073781FCF; Wed, 31 Jan 2024 14:05:34 +0000 (UTC) From: Muhammad Usama Anjum To: Andrew Morton , Shuah Khan Cc: Muhammad Usama Anjum , kernel@collabora.com, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/12] selftests/mm: thp_settings: conform to TAP format output Date: Wed, 31 Jan 2024 19:05:19 +0500 Message-ID: <20240131140528.320252-9-usama.anjum@collabora.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240131140528.320252-1-usama.anjum@collabora.com> References: <20240131140528.320252-1-usama.anjum@collabora.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 1918C160024 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 3icihqgo1srgwn6szhmcjrgm77fyoee1 X-HE-Tag: 1706709936-898113 X-HE-Meta: U2FsdGVkX19ITCSVz9JGjnXmSsSDf8UXPceElEMuc7wl4vkxFDUvE3rA/9APEKIf7g/2qYoD0+t5XBRe2qHsZo3o0PwNY7lbbhoRm7T5rWqToFZZ2tj5HljlKHg8lJ2GTTv00/N70UAuUQ6Z4VwOT01tqKMZ+d/mFaMO+dLfhPY1vtpRfExJArq+5mJz5fXErB6FlCjV9sNVUH5ePnxT04xAZrdZ5s2jSl+bjQ8uQT3VC11JU11eCTOhFiUlU4xis0jHR2GjgeYmiNgrD7Xm9t+DphZivU0spMen8Eu4ZoM5/fo655Wwu5bc0CRH537DEZDqBvRilFU0IspPRvjK0cIh5z+3UYKciFlUf7JiXyRuBSKMY6kDwuO5LSsBqQakF+yGr7yRg5HxRfu/tS6vk7RStbSIAhE3l2RJclYPUIj6/R0UGCYGpHecblTnjzSprZXWgpMuvTtXJOMZpUK0rwdcrocgtj+/uMb0lTR4esMaNkDdeuasAHWyogAz1Kzu/g2Xya/p7F5+qId2LMfnIF8FSnjdLxT115cnqklo1JTAeu7R5Gd08hcVUC4843s9SsBEZZlZQsz8tVpeXw2JswsVIAs6jpCx+0qDtVU+nKUGyTbayKKF/xBwiSZHBnUNebkXHIwmYvecLQ+BsqG+fS33ye+Nl5TkcB1NuzHsIhuYDYXayk7pIXR7Cw7gGxY6Kg9WQXxFGCkyK5Oq6KOVVmf/l2AKh5q5kvxhKWzs/F31soXNYkAPpdbnctCCDJHIKRjWCGXZr7I8w21V2wqaavM1Ll7AMNvLhpQ+JCGUVToJclQvUd5D31JGJ8CtjLnvWz5liVGs7nZDJWvlyulbeOpL5U77g8Cea4yEsuoEnSe/LMLQNBv3+rcd03qEKFf4vZPobDnUlSdmBuzbAIgO3E8/c7yX1zb8ZsVp2DBK55ZgPJthQPbq7BAHQXx387Ht0CsuGv2PUMBZErxos9u 5AB877/n ZlLo0Mw7EreWXePe47Xzy8vh8bwhXJohIbEAeOQBRDTlnALyFPK+WhzEbFt3Ss4M+qyRN2Skb+n/mERaTeOr8ai5RRldEiI4gXh1sxTVRGaU3ZxdXSkIjl+mjhavZIxozHarISa3cJHLyuJ8qqKUChFXmiyTUA7NXpz9tSbx8ARafouvy+QLRwgy93jeBx0KWQiLXM5lfT2QrRPhrqHo6/FK7qyiGgppcdB7s+idce8/he4azMcx919rC2kr62VNZQevOUwCg0Yj9SUFDEVyDWHg6yXh25ZXYfxyCfD5kXRs5wkg= 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: Conform the layout, informational and status messages to TAP. No functional change is intended other than the layout of output messages. Signed-off-by: Muhammad Usama Anjum --- tools/testing/selftests/mm/khugepaged.c | 3 +- tools/testing/selftests/mm/thp_settings.c | 123 ++++++++-------------- tools/testing/selftests/mm/thp_settings.h | 4 +- 3 files changed, 47 insertions(+), 83 deletions(-) diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c index d51fdaee7dc6a..3f202da0867c5 100644 --- a/tools/testing/selftests/mm/khugepaged.c +++ b/tools/testing/selftests/mm/khugepaged.c @@ -152,8 +152,7 @@ static void get_finfo(const char *dir) major(path_stat.st_dev), minor(path_stat.st_dev)) >= sizeof(path)) ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); - if (read_file(path, buf, sizeof(buf)) < 0) - ksft_exit_fail_msg("read_file(read_num): %s\n", strerror(errno)); + read_file(path, buf, sizeof(buf)); if (strstr(buf, "DEVTYPE=disk")) { /* Found it */ diff --git a/tools/testing/selftests/mm/thp_settings.c b/tools/testing/selftests/mm/thp_settings.c index a4163438108ec..273a95d025285 100644 --- a/tools/testing/selftests/mm/thp_settings.c +++ b/tools/testing/selftests/mm/thp_settings.c @@ -5,7 +5,9 @@ #include #include #include +#include +#include "../kselftest.h" #include "thp_settings.h" #define THP_SYSFS "/sys/kernel/mm/transparent_hugepage/" @@ -42,58 +44,45 @@ static const char * const shmem_enabled_strings[] = { NULL }; -int read_file(const char *path, char *buf, size_t buflen) +void read_file(const char *path, char *buf, size_t buflen) { int fd; ssize_t numread; fd = open(path, O_RDONLY); if (fd == -1) - return 0; + ksft_exit_fail_msg("%s open failed: %s\n", path, strerror(errno)); numread = read(fd, buf, buflen - 1); if (numread < 1) { close(fd); - return 0; + ksft_exit_fail_msg("No data read\n"); } buf[numread] = '\0'; close(fd); - - return (unsigned int) numread; } -int write_file(const char *path, const char *buf, size_t buflen) +void write_file(const char *path, const char *buf, size_t buflen) { int fd; ssize_t numwritten; fd = open(path, O_WRONLY); - if (fd == -1) { - printf("open(%s)\n", path); - exit(EXIT_FAILURE); - return 0; - } + if (fd == -1) + ksft_exit_fail_msg("%s open failed\n", path); numwritten = write(fd, buf, buflen - 1); close(fd); - if (numwritten < 1) { - printf("write(%s)\n", buf); - exit(EXIT_FAILURE); - return 0; - } - - return (unsigned int) numwritten; + if (numwritten < 1) + ksft_exit_fail_msg("write failed (%s)\n", buf); } const unsigned long read_num(const char *path) { char buf[21]; - if (read_file(path, buf, sizeof(buf)) < 0) { - perror("read_file()"); - exit(EXIT_FAILURE); - } + read_file(path, buf, sizeof(buf)); return strtoul(buf, NULL, 10); } @@ -103,10 +92,7 @@ void write_num(const char *path, unsigned long num) char buf[21]; sprintf(buf, "%ld", num); - if (!write_file(path, buf, strlen(buf) + 1)) { - perror(path); - exit(EXIT_FAILURE); - } + write_file(path, buf, strlen(buf) + 1); } int thp_read_string(const char *name, const char * const strings[]) @@ -117,30 +103,22 @@ int thp_read_string(const char *name, const char * const strings[]) int ret; ret = snprintf(path, PATH_MAX, THP_SYSFS "%s", name); - if (ret >= PATH_MAX) { - printf("%s: Pathname is too long\n", __func__); - exit(EXIT_FAILURE); - } + if (ret >= PATH_MAX) + ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); - if (!read_file(path, buf, sizeof(buf))) { - perror(path); - exit(EXIT_FAILURE); - } + read_file(path, buf, sizeof(buf)); c = strchr(buf, '['); - if (!c) { - printf("%s: Parse failure\n", __func__); - exit(EXIT_FAILURE); - } + if (!c) + ksft_exit_fail_msg("%s: Parse failure\n", __func__); c++; memmove(buf, c, sizeof(buf) - (c - buf)); c = strchr(buf, ']'); - if (!c) { - printf("%s: Parse failure\n", __func__); - exit(EXIT_FAILURE); - } + if (!c) + ksft_exit_fail_msg("%s: Parse failure\n", __func__); + *c = '\0'; ret = 0; @@ -150,8 +128,8 @@ int thp_read_string(const char *name, const char * const strings[]) ret++; } - printf("Failed to parse %s\n", name); - exit(EXIT_FAILURE); + ksft_exit_fail_msg("Failed to parse %s\n", name); + return -1; } void thp_write_string(const char *name, const char *val) @@ -160,15 +138,10 @@ void thp_write_string(const char *name, const char *val) int ret; ret = snprintf(path, PATH_MAX, THP_SYSFS "%s", name); - if (ret >= PATH_MAX) { - printf("%s: Pathname is too long\n", __func__); - exit(EXIT_FAILURE); - } + if (ret >= PATH_MAX) + ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); - if (!write_file(path, val, strlen(val) + 1)) { - perror(path); - exit(EXIT_FAILURE); - } + write_file(path, val, strlen(val) + 1); } const unsigned long thp_read_num(const char *name) @@ -177,10 +150,9 @@ const unsigned long thp_read_num(const char *name) int ret; ret = snprintf(path, PATH_MAX, THP_SYSFS "%s", name); - if (ret >= PATH_MAX) { - printf("%s: Pathname is too long\n", __func__); - exit(EXIT_FAILURE); - } + if (ret >= PATH_MAX) + ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); + return read_num(path); } @@ -190,10 +162,9 @@ void thp_write_num(const char *name, unsigned long num) int ret; ret = snprintf(path, PATH_MAX, THP_SYSFS "%s", name); - if (ret >= PATH_MAX) { - printf("%s: Pathname is too long\n", __func__); - exit(EXIT_FAILURE); - } + if (ret >= PATH_MAX) + ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); + write_num(path, num); } @@ -275,29 +246,26 @@ void thp_write_settings(struct thp_settings *settings) struct thp_settings *thp_current_settings(void) { - if (!settings_index) { - printf("Fail: No settings set"); - exit(EXIT_FAILURE); - } + if (!settings_index) + ksft_exit_fail_msg("Fail: No settings set\n"); + return settings_stack + settings_index - 1; } void thp_push_settings(struct thp_settings *settings) { - if (settings_index >= MAX_SETTINGS_DEPTH) { - printf("Fail: Settings stack exceeded"); - exit(EXIT_FAILURE); - } + if (settings_index >= MAX_SETTINGS_DEPTH) + ksft_exit_fail_msg("Fail: Settings stack exceeded\n"); + settings_stack[settings_index++] = *settings; thp_write_settings(thp_current_settings()); } void thp_pop_settings(void) { - if (settings_index <= 0) { - printf("Fail: Settings stack empty"); - exit(EXIT_FAILURE); - } + if (settings_index <= 0) + ksft_exit_fail_msg("Fail: Settings stack empty\n"); + --settings_index; thp_write_settings(thp_current_settings()); } @@ -335,14 +303,11 @@ unsigned long thp_supported_orders(void) for (i = 0; i < NR_ORDERS; i++) { ret = snprintf(path, PATH_MAX, THP_SYSFS "hugepages-%ukB/enabled", (getpagesize() >> 10) << i); - if (ret >= PATH_MAX) { - printf("%s: Pathname is too long\n", __func__); - exit(EXIT_FAILURE); - } + if (ret >= PATH_MAX) + ksft_exit_fail_msg("%s: Pathname is too long\n", __func__); - ret = read_file(path, buf, sizeof(buf)); - if (ret) - orders |= 1UL << i; + read_file(path, buf, sizeof(buf)); + orders |= 1UL << i; } return orders; diff --git a/tools/testing/selftests/mm/thp_settings.h b/tools/testing/selftests/mm/thp_settings.h index 71cbff05f4c7f..04a6a7bbd08f8 100644 --- a/tools/testing/selftests/mm/thp_settings.h +++ b/tools/testing/selftests/mm/thp_settings.h @@ -56,8 +56,8 @@ struct thp_settings { struct hugepages_settings hugepages[NR_ORDERS]; }; -int read_file(const char *path, char *buf, size_t buflen); -int write_file(const char *path, const char *buf, size_t buflen); +void read_file(const char *path, char *buf, size_t buflen); +void write_file(const char *path, const char *buf, size_t buflen); const unsigned long read_num(const char *path); void write_num(const char *path, unsigned long num);