On Thu, Jan 26, 2023, at 18:53, Nhat Pham wrote: > > SYNOPSIS > #include <sys/mman.h> > > struct cachestat { > __u64 nr_cache; > __u64 nr_dirty; > __u64 nr_writeback; > __u64 nr_evicted; > __u64 nr_recently_evicted; > }; > > int cachestat(unsigned int fd, off_t off, size_t len, > unsigned int cstat_version, struct cachestat *cstat, > unsigned int flags); Is this "off_t off" argument intentionally limited to the old 32-bit type on 32-bit architectures? Unfortunately I fear there are no good options to pass an offset here: - if you make it a 32-bit type, this breaks calling it from normal userspace that defines off_t as a 64-bit type - if you change it to a 64-bit loff_t, there are three separate calling conventions for 64-bit, 32-bit with aligned register pairs and other 32-bit, plus you exceed the usual limit of six system call arguments A separate problem may be the cstat_version argument, usually we don't use interface versions but instead use a new system call number if something changes in an incompatible way. Arnd