aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2022-11-23 22:01:05 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2022-12-09 12:17:12 +0000
commit1bbc5101348b9ca23cef6bde6c22751e69e8cf91 (patch)
tree1a8a85ee799d9cd0496be905b8371e26bebc8e29
parent0919f29d91031cf42eca99266bffe7b0faef8f1b (diff)
downloadsrc-1bbc5101348b9ca23cef6bde6c22751e69e8cf91.tar.gz
src-1bbc5101348b9ca23cef6bde6c22751e69e8cf91.zip
posixshmcontrol(1): for regular shmfd, report used pages number
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D37097
-rw-r--r--usr.bin/posixshmcontrol/posixshmcontrol.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/usr.bin/posixshmcontrol/posixshmcontrol.c b/usr.bin/posixshmcontrol/posixshmcontrol.c
index f64fcd3dd663..3b9d1dc256c3 100644
--- a/usr.bin/posixshmcontrol/posixshmcontrol.c
+++ b/usr.bin/posixshmcontrol/posixshmcontrol.c
@@ -404,6 +404,8 @@ stat_one_shm(const char *path, bool hsize, bool uname)
char sizebuf[8];
struct stat st;
int error, fd, ret;
+ struct shm_largepage_conf conf_dummy;
+ bool largepage;
fd = shm_open(path, O_RDONLY, 0);
if (fd == -1) {
@@ -442,9 +444,13 @@ stat_one_shm(const char *path, bool hsize, bool uname)
(long)st.st_ctim.tv_nsec);
printf("birth\t%ld.%09ld\n", (long)st.st_birthtim.tv_sec,
(long)st.st_birthtim.tv_nsec);
- if (st.st_blocks != 0)
+ error = ioctl(fd, FIOGSHMLPGCNF, &conf_dummy);
+ largepage = error == 0;
+ if (st.st_blocks != 0 && largepage)
printf("pagesz\t%jd\n", roundup((uintmax_t)st.st_size,
PAGE_SIZE) / st.st_blocks);
+ else
+ printf("pages\t%jd\n", st.st_blocks);
}
close(fd);
return (ret);