blob: 05972470b1a9aa736377ac45395fce10cd9a34f0 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef __LINUX_PUBLIC_PRIVCMD_H__
8#define __LINUX_PUBLIC_PRIVCMD_H__
9#include <linux/types.h>
10#include <linux/compiler.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070011#include <xen/interface/xen.h>
12struct privcmd_hypercall {
Tao Baod7db5942015-01-28 10:07:51 -080013 __u64 op;
14 __u64 arg[5];
Ben Cheng655a7c02013-10-16 16:09:24 -070015};
16struct privcmd_mmap_entry {
Tao Baod7db5942015-01-28 10:07:51 -080017 __u64 va;
18 __u64 mfn;
Tao Baod7db5942015-01-28 10:07:51 -080019 __u64 npages;
Ben Cheng655a7c02013-10-16 16:09:24 -070020};
21struct privcmd_mmap {
Tao Baod7db5942015-01-28 10:07:51 -080022 int num;
Tao Baod7db5942015-01-28 10:07:51 -080023 domid_t dom;
Elliott Hughes0f0c18f2023-03-29 15:53:31 -070024 struct privcmd_mmap_entry * entry;
Ben Cheng655a7c02013-10-16 16:09:24 -070025};
26struct privcmd_mmapbatch {
Tao Baod7db5942015-01-28 10:07:51 -080027 int num;
28 domid_t dom;
29 __u64 addr;
Elliott Hughes0f0c18f2023-03-29 15:53:31 -070030 xen_pfn_t * arr;
Ben Cheng655a7c02013-10-16 16:09:24 -070031};
32#define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U
33#define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U
34struct privcmd_mmapbatch_v2 {
Tao Baod7db5942015-01-28 10:07:51 -080035 unsigned int num;
36 domid_t dom;
37 __u64 addr;
Elliott Hughes0f0c18f2023-03-29 15:53:31 -070038 const xen_pfn_t * arr;
39 int * err;
Ben Cheng655a7c02013-10-16 16:09:24 -070040};
Christopher Ferris525ce912017-07-26 13:12:53 -070041struct privcmd_dm_op_buf {
Elliott Hughes0f0c18f2023-03-29 15:53:31 -070042 void * uptr;
Christopher Ferris525ce912017-07-26 13:12:53 -070043 size_t size;
44};
45struct privcmd_dm_op {
46 domid_t dom;
47 __u16 num;
Elliott Hughes0f0c18f2023-03-29 15:53:31 -070048 const struct privcmd_dm_op_buf * ubufs;
Christopher Ferris525ce912017-07-26 13:12:53 -070049};
Christopher Ferris9ce28842018-10-25 12:11:39 -070050struct privcmd_mmap_resource {
51 domid_t dom;
52 __u32 type;
53 __u32 id;
54 __u32 idx;
55 __u64 num;
56 __u64 addr;
57};
Christopher Ferris67d1e5e2023-10-31 13:36:37 -070058#define PRIVCMD_IRQFD_FLAG_DEASSIGN (1 << 0)
59struct privcmd_irqfd {
Christopher Ferris0f795212024-01-17 14:17:28 -080060 __u64 dm_op;
Christopher Ferris67d1e5e2023-10-31 13:36:37 -070061 __u32 size;
62 __u32 fd;
63 __u32 flags;
64 domid_t dom;
65 __u8 pad[2];
66};
Christopher Ferris0f795212024-01-17 14:17:28 -080067#define PRIVCMD_IOEVENTFD_FLAG_DEASSIGN (1 << 0)
68struct privcmd_ioeventfd {
69 __u64 ioreq;
70 __u64 ports;
71 __u64 addr;
72 __u32 addr_len;
73 __u32 event_fd;
74 __u32 vcpus;
75 __u32 vq;
76 __u32 flags;
77 domid_t dom;
78 __u8 pad[2];
79};
Tao Baod7db5942015-01-28 10:07:51 -080080#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
81#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
Tao Baod7db5942015-01-28 10:07:51 -080082#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
83#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
Christopher Ferris525ce912017-07-26 13:12:53 -070084#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
85#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
Christopher Ferris9ce28842018-10-25 12:11:39 -070086#define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
Christopher Ferris0f795212024-01-17 14:17:28 -080087#define IOCTL_PRIVCMD_IRQFD _IOW('P', 8, struct privcmd_irqfd)
88#define IOCTL_PRIVCMD_IOEVENTFD _IOW('P', 9, struct privcmd_ioeventfd)
Ben Cheng655a7c02013-10-16 16:09:24 -070089#endif