58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
/* 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 */
|