On Tue, 5 Dec 2023 at 18:51, Matthew House <mattlloydhouse@xxxxxxxxx> wrote: > > On Tue, Dec 5, 2023 at 11:28 AM Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > Attaching the proposed man page for listing mounts (based on the new > > listmount() syscall). > > > > The raw interface is: > > > > syscall(__NR_listmount, const struct mnt_id_req __user *, req, > > u64 __user *, buf, size_t, bufsize, unsigned int, flags); > > > > The proposed libc API is. > > > > struct listmount *listmount_start(uint64_t mnt_id, unsigned int flags); > > uint64_t listmount_next(struct listmount *lm); > > void listmount_end(struct listmount *lm); > > > > I'm on the opinion that no wrapper is needed for the raw syscall, just > > like there isn't one for getdents(2). > > > > Comments? > > One use case I've been thinking of involves inspecting the mount list > between syscall(__NR_clone3) and _exit(), so it has to be async-signal- > safe. It would be nice if there were a libc wrapper that accepted a user- > provided buffer and was async-signal-safe, so that I wouldn't have to add > yet another syscall wrapper and redefine the kernel types just for this > use case. (I can't trust the libc not to make its own funny versions of the > types' layouts for its own ends.) You can just #include <linux/mount.h> directly. Thanks, Miklos