[LTP] [PATCH v4 2/7] libltpswap: alter tst_count_swaps api

Yang Xu via ltp
2024-02-20T07:43:45Z

Like we count the ipc resource total, we can also add a
similar api for swapfiles, so we can use it for swapon03 case.

Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
include/libswap.h | 5 +++++
libs/libltpswap/libswap.c | 27 +++++++++++++++++++++++++++
2 files changed, 32 insertions(+)

diff --git a/include/libswap.h b/include/libswap.h
index 361d73175..76a3ed0c0 100644
--- a/include/libswap.h
+++ b/include/libswap.h
@@ -27,4 +27,9 @@ bool is_swap_supported(const char *filename);
*/
int tst_max_swapfiles(void);

+/*
+ * Get the used swapfiles number
+ */
+int tst_count_swaps(void);
+
#endif /* __LIBSWAP_H__ */
diff --git a/libs/libltpswap/libswap.c b/libs/libltpswap/libswap.c
index a404a4ada..1f9235f17 100644
--- a/libs/libltpswap/libswap.c
+++ b/libs/libltpswap/libswap.c
@@ -265,3 +265,30 @@ int tst_max_swapfiles(void)

return max_swapfile - swp_migration_num - swp_hwpoison_num - swp_device_num - swp_pte_marker_num;
}
+
+/*
+ * Get the used swapfiles number
+ */
+int tst_count_swaps(void)
+{
+ FILE *fp;
+ int used = -1;
+ char c;
+
+ fp = fopen("/proc/swaps", "r");
+ if (fp == NULL) {
+ return -1;
+ }
+
+ while ((c = fgetc(fp)) != EOF) {
+ if (c == '\n')
+ used++;
+ }
+
+ fclose(fp);
+ if (used < 0) {
+ tst_brk(TBROK, "can't read /proc/swaps to get used swapfiles resource total");
+ }
+
+ return used;
+}
--
2.27.0