[LTP] [PATCH 1/3] Adding new function read_maps required for hugemmap40.
Pavithra
pavrampu@linux.ibm.com
Thu Nov 27 08:22:29 CET 2025
Function to read and parse the '/proc/self/maps' file to debug memory-related issues.
Signed-off-by: Pavithra <pavrampu@linux.ibm.com>
---
testcases/kernel/mem/hugetlb/lib/hugetlb.c | 42 ++++++++++++++++++++++
testcases/kernel/mem/hugetlb/lib/hugetlb.h | 1 +
2 files changed, 43 insertions(+)
diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.c b/testcases/kernel/mem/hugetlb/lib/hugetlb.c
index 6a2976a53..fdd745eda 100644
--- a/testcases/kernel/mem/hugetlb/lib/hugetlb.c
+++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.c
@@ -141,3 +141,45 @@ void update_shm_size(size_t * shm_size)
*shm_size = shmmax;
}
}
+
+#define MAPS_BUF_SZ 4096
+int read_maps(unsigned long addr, char *buf)
+{
+ FILE *f;
+ char line[MAPS_BUF_SZ];
+ char *tmp;
+
+ f = fopen("/proc/self/maps", "r");
+ if (!f) {
+ tst_res(TFAIL, "Failed to open /proc/self/maps: %s\n", strerror(errno));
+ return -1;
+ }
+
+ while (1) {
+ unsigned long start, end, off, ino;
+ int ret;
+
+ tmp = fgets(line, MAPS_BUF_SZ, f);
+ if (!tmp)
+ break;
+
+ buf[0] = '\0';
+ ret = sscanf(line, "%lx-%lx %*s %lx %*s %ld %255s",
+ &start, &end, &off, &ino,
+ buf);
+ if ((ret < 4) || (ret > 5)) {
+ tst_res(TFAIL, "Couldn't parse /proc/self/maps line: %s\n",
+ line);
+ fclose(f);
+ return -1;
+ }
+
+ if ((start <= addr) && (addr < end)) {
+ fclose(f);
+ return 1;
+ }
+ }
+
+ fclose(f);
+ return 0;
+}
diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.h b/testcases/kernel/mem/hugetlb/lib/hugetlb.h
index 22975c99a..a59382ab9 100644
--- a/testcases/kernel/mem/hugetlb/lib/hugetlb.h
+++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.h
@@ -57,6 +57,7 @@ int getipckey(void);
int getuserid(char *user);
void rm_shm(int shm_id);
int do_readback(void *p, size_t size, char *desc);
+int read_maps(unsigned long addr, char *buf);
void update_shm_size(size_t *shm_size);
--
2.43.5
More information about the ltp
mailing list