diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2022-11-23 22:01:05 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2022-12-09 12:17:12 +0000 |
commit | 1bbc5101348b9ca23cef6bde6c22751e69e8cf91 (patch) | |
tree | 1a8a85ee799d9cd0496be905b8371e26bebc8e29 | |
parent | 0919f29d91031cf42eca99266bffe7b0faef8f1b (diff) | |
download | src-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.c | 8 |
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); |