blob: d18acadca340dc2baac34847dc51a7a07c539bb4 [file] [log] [blame] [edit]
/* 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 <linux/types.h>
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 */