From: David Hildenbrand <david@redhat.com>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Shuah Khan" <shuah@kernel.org>, "Dev Jain" <dev.jain@arm.com>,
"Thomas Gleixner" <tglx@linutronix.de>
Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/4] selftests/mm: vm_util: Split up /proc/self/smaps parsing
Date: Tue, 14 Jan 2025 11:01:51 +0100 [thread overview]
Message-ID: <0a34b3f5-fe67-498e-a648-27524b50abc7@redhat.com> (raw)
In-Reply-To: <20250113-virtual_address_range-tests-v3-3-f4a8e6b7feed@linutronix.de>
On 13.01.25 14:15, Thomas Weißschuh wrote:
> Upcoming changes want to reuse the /proc/self/smaps parsing logic to
> parse the VmFlags field.
> As that works differently from the currently parsed HugePage counters,
> split up the logic so common functionality can be shared.
>
> While reworking this code, also use the correct sscanf placeholder for
> the "uint64_t thp" variable.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
> tools/testing/selftests/mm/vm_util.c | 42 +++++++++++++++++++++++++-----------
> 1 file changed, 29 insertions(+), 13 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c
> index d8d0cf04bb57fd22bd7748fffec6a23c3103e35c..8468a19d6acca10c7e9228c03a935cdeb2402b5d 100644
> --- a/tools/testing/selftests/mm/vm_util.c
> +++ b/tools/testing/selftests/mm/vm_util.c
> @@ -2,6 +2,7 @@
> #include <string.h>
> #include <fcntl.h>
> #include <dirent.h>
> +#include <inttypes.h>
> #include <sys/ioctl.h>
> #include <linux/userfaultfd.h>
> #include <linux/fs.h>
> @@ -193,13 +194,11 @@ unsigned long rss_anon(void)
> return rss_anon;
> }
>
> -bool __check_huge(void *addr, char *pattern, int nr_hpages,
> - uint64_t hpage_size)
> +char *__get_smap_entry(void *addr, const char *pattern, char *buf, size_t len)
> {
> - uint64_t thp = -1;
> int ret;
> FILE *fp;
> - char buffer[MAX_LINE_LENGTH];
> + char *entry;
> char addr_pattern[MAX_LINE_LENGTH];
>
> ret = snprintf(addr_pattern, MAX_LINE_LENGTH, "%08lx-",
> @@ -211,23 +210,40 @@ bool __check_huge(void *addr, char *pattern, int nr_hpages,
> if (!fp)
> ksft_exit_fail_msg("%s: Failed to open file %s\n", __func__, SMAP_FILE_PATH);
>
> - if (!check_for_pattern(fp, addr_pattern, buffer, sizeof(buffer)))
> + if (!check_for_pattern(fp, addr_pattern, buf, len))
> goto err_out;
>
> - /*
> - * Fetch the pattern in the same block and check the number of
> - * hugepages.
> - */
> - if (!check_for_pattern(fp, pattern, buffer, sizeof(buffer)))
> + /* Fetch the pattern in the same block */
> + if (!check_for_pattern(fp, pattern, buf, len))
> goto err_out;
>
> - snprintf(addr_pattern, MAX_LINE_LENGTH, "%s%%9ld kB", pattern);
> + /* Trim trailing newline */
> + entry = strchr(buf, '\n');
> + if (entry)
> + *entry = '\0';
>
> - if (sscanf(buffer, addr_pattern, &thp) != 1)
> - ksft_exit_fail_msg("Reading smap error\n");
> + entry = buf + strlen(pattern);
>
> err_out:
> fclose(fp);
> + return entry;
> +}
Yes, LGTM!
Acked-by: David Hildenbrand <david@redhat.com>
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2025-01-14 10:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-13 13:15 [PATCH v3 0/4] selftests/mm: virtual_address_range: Reduce memory usage and avoid VM_IO access Thomas Weißschuh
2025-01-13 13:15 ` [PATCH v3 1/4] selftests/mm: virtual_address_range: mmap() without PROT_WRITE Thomas Weißschuh
2025-01-13 15:46 ` Dev Jain
2025-01-13 13:15 ` [PATCH v3 2/4] selftests/mm: virtual_address_range: Unmap chunks after validation Thomas Weißschuh
2025-01-14 13:11 ` David Hildenbrand
2025-01-13 13:15 ` [PATCH v3 3/4] selftests/mm: vm_util: Split up /proc/self/smaps parsing Thomas Weißschuh
2025-01-14 10:01 ` David Hildenbrand [this message]
2025-01-13 13:15 ` [PATCH v3 4/4] selftests/mm: virtual_address_range: Avoid reading from VM_IO mappings Thomas Weißschuh
2025-01-14 1:25 ` Andrew Morton
2025-01-14 10:15 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0a34b3f5-fe67-498e-a648-27524b50abc7@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=dev.jain@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=shuah@kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.weissschuh@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.