blob: eef9f8d5cb37efe00f46b3376b772ae485ad6fb1 [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 {
60 void * dm_op;
61 __u32 size;
62 __u32 fd;
63 __u32 flags;
64 domid_t dom;
65 __u8 pad[2];
66};
Tao Baod7db5942015-01-28 10:07:51 -080067#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
68#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
Tao Baod7db5942015-01-28 10:07:51 -080069#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
70#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
Christopher Ferris525ce912017-07-26 13:12:53 -070071#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
72#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
Christopher Ferris9ce28842018-10-25 12:11:39 -070073#define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
Christopher Ferris67d1e5e2023-10-31 13:36:37 -070074#define IOCTL_PRIVCMD_IRQFD _IOC(_IOC_NONE, 'P', 8, sizeof(struct privcmd_irqfd))
Ben Cheng655a7c02013-10-16 16:09:24 -070075#endif