| From: Muhammad Usama Anjum <usama.anjum@collabora.com> |
| Subject: tools headers UAPI: update linux/fs.h with the kernel sources |
| Date: Mon, 21 Aug 2023 19:15:16 +0500 |
| |
| New IOCTL and macros has been added in the kernel sources. Update the |
| tools header file as well. |
| |
| Link: https://lkml.kernel.org/r/20230821141518.870589-5-usama.anjum@collabora.com |
| Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> |
| Cc: Alex Sierra <alex.sierra@amd.com> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Andrei Vagin <avagin@gmail.com> |
| Cc: Axel Rasmussen <axelrasmussen@google.com> |
| Cc: Christian Brauner <brauner@kernel.org> |
| Cc: Cyrill Gorcunov <gorcunov@gmail.com> |
| Cc: Dan Williams <dan.j.williams@intel.com> |
| Cc: David Hildenbrand <david@redhat.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Gustavo A. R. Silva <gustavoars@kernel.org> |
| Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> |
| Cc: Matthew Wilcox <willy@infradead.org> |
| Cc: Michal Miroslaw <emmir@google.com> |
| Cc: Michał Mirosław <mirq-linux@rere.qmqm.pl> |
| Cc: Mike Rapoport (IBM) <rppt@kernel.org> |
| Cc: Nadav Amit <namit@vmware.com> |
| Cc: Pasha Tatashin <pasha.tatashin@soleen.com> |
| Cc: Paul Gofman <pgofman@codeweavers.com> |
| Cc: Peter Xu <peterx@redhat.com> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Cc: Suren Baghdasaryan <surenb@google.com> |
| Cc: Vlastimil Babka <vbabka@suse.cz> |
| Cc: Yang Shi <shy828301@gmail.com> |
| Cc: Yun Zhou <yun.zhou@windriver.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/include/uapi/linux/fs.h | 59 ++++++++++++++++++++++++++++++++ |
| 1 file changed, 59 insertions(+) |
| |
| --- a/tools/include/uapi/linux/fs.h~tools-headers-uapi-update-linux-fsh-with-the-kernel-sources |
| +++ a/tools/include/uapi/linux/fs.h |
| @@ -305,4 +305,63 @@ typedef int __bitwise __kernel_rwf_t; |
| #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\ |
| RWF_APPEND) |
| |
| +/* Pagemap ioctl */ |
| +#define PAGEMAP_SCAN _IOWR('f', 16, struct pm_scan_arg) |
| + |
| +/* Bitmasks provided in pm_scan_args masks and reported in page_region.categories. */ |
| +#define PAGE_IS_WPALLOWED (1 << 0) |
| +#define PAGE_IS_WRITTEN (1 << 1) |
| +#define PAGE_IS_FILE (1 << 2) |
| +#define PAGE_IS_PRESENT (1 << 3) |
| +#define PAGE_IS_SWAPPED (1 << 4) |
| +#define PAGE_IS_PFNZERO (1 << 5) |
| +#define PAGE_IS_HUGE (1 << 6) |
| + |
| +/* |
| + * struct page_region - Page region with flags |
| + * @start: Start of the region |
| + * @end: End of the region (exclusive) |
| + * @categories: PAGE_IS_* category bitmask for the region |
| + */ |
| +struct page_region { |
| + __u64 start; |
| + __u64 end; |
| + __u64 categories; |
| +}; |
| + |
| +/* Flags for PAGEMAP_SCAN ioctl */ |
| +#define PM_SCAN_WP_MATCHING (1 << 0) /* Write protect the pages matched. */ |
| +#define PM_SCAN_CHECK_WPASYNC (1 << 1) /* Abort the scan when a non-WP-enabled page is found. */ |
| + |
| +/* |
| + * struct pm_scan_arg - Pagemap ioctl argument |
| + * @size: Size of the structure |
| + * @flags: Flags for the IOCTL |
| + * @start: Starting address of the region |
| + * @end: Ending address of the region |
| + * @walk_end Address where the scan stopped (written by kernel). |
| + * walk_end == end (address tags cleared) informs that the scan completed on entire range. |
| + * @vec: Address of page_region struct array for output |
| + * @vec_len: Length of the page_region struct array |
| + * @max_pages: Optional limit for number of returned pages (0 = disabled) |
| + * @category_inverted: PAGE_IS_* categories which values match if 0 instead of 1 |
| + * @category_mask: Skip pages for which any category doesn't match |
| + * @category_anyof_mask: Skip pages for which no category matches |
| + * @return_mask: PAGE_IS_* categories that are to be reported in `page_region`s returned |
| + */ |
| +struct pm_scan_arg { |
| + __u64 size; |
| + __u64 flags; |
| + __u64 start; |
| + __u64 end; |
| + __u64 walk_end; |
| + __u64 vec; |
| + __u64 vec_len; |
| + __u64 max_pages; |
| + __u64 category_inverted; |
| + __u64 category_mask; |
| + __u64 category_anyof_mask; |
| + __u64 return_mask; |
| +}; |
| + |
| #endif /* _UAPI_LINUX_FS_H */ |
| _ |