/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Wrapfd UAPI * * Copyright (C) 2025 Google, Inc. */ #ifndef _UAPI_WRAPFD_H #define _UAPI_WRAPFD_H #include struct wrapfd_wrap { __s64 fd; /* [in] file to wrap */ __u64 prot; /* [in] protection bits */ __u64 reserved; }; #define WRAPFD_CONTENT_EMPTY 0 #define WRAPFD_CONTENT_RDONLY 1 #define WRAPFD_CONTENT_RDWR 2 struct wrapfd_get_state { __s64 fd; /* [in] wrapfd to get info */ __u64 state; /* [out] wrapfd content state */ __u64 reserved; }; struct wrapfd_load { __s64 fd; /* [in] file to load */ __u64 file_offs; /* [in] file offset */ __u64 buf_offs; /* [in] buffer offset */ __u64 len; /* [in] number of bytes to load */ __u64 reserved; }; struct wrapfd_rewrap { __u64 prot; /* [in] protection bits */ __u64 reserved; }; /* ioctls for /dev/wrapfd */ #define WRAPFD_DEV_IOC 0xBC #define WRAPFD_DEV_IOC_WRAP _IOW(WRAPFD_DEV_IOC, 0, struct wrapfd_wrap) #define WRAPFD_DEV_IOC_GET_STATE _IOWR(WRAPFD_DEV_IOC, 1, \ struct wrapfd_get_state) /* ioctl for wrapfd */ #define WRAPFD_DEV_IOC_GET _IO(WRAPFD_DEV_IOC, 2) #define WRAPFD_DEV_IOC_PUT _IO(WRAPFD_DEV_IOC, 3) #define WRAPFD_DEV_IOC_LOAD _IOW(WRAPFD_DEV_IOC, 4, struct wrapfd_load) #define WRAPFD_DEV_IOC_REWRAP _IOW(WRAPFD_DEV_IOC, 5, struct wrapfd_rewrap) #define WRAPFD_DEV_IOC_EMPTY _IO(WRAPFD_DEV_IOC, 6) #define WRAPFD_DEV_IOC_ALLOW_GUESTS _IO(WRAPFD_DEV_IOC, 7) #define WRAPFD_DEV_IOC_PROHIBIT_GUESTS _IO(WRAPFD_DEV_IOC, 8) #endif /* _UAPI_WRAPFD_H */