summaryrefslogtreecommitdiff
path: root/platform/sysroot/usr/include/xen/privcmd.h
blob: 05972470b1a9aa736377ac45395fce10cd9a34f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * This file is auto-generated. Modifications will be lost.
 *
 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
 * for more information.
 */
#ifndef __LINUX_PUBLIC_PRIVCMD_H__
#define __LINUX_PUBLIC_PRIVCMD_H__
#include <linux/types.h>
#include <linux/compiler.h>
#include <xen/interface/xen.h>
struct privcmd_hypercall {
  __u64 op;
  __u64 arg[5];
};
struct privcmd_mmap_entry {
  __u64 va;
  __u64 mfn;
  __u64 npages;
};
struct privcmd_mmap {
  int num;
  domid_t dom;
  struct privcmd_mmap_entry  * entry;
};
struct privcmd_mmapbatch {
  int num;
  domid_t dom;
  __u64 addr;
  xen_pfn_t  * arr;
};
#define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U
#define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U
struct privcmd_mmapbatch_v2 {
  unsigned int num;
  domid_t dom;
  __u64 addr;
  const xen_pfn_t  * arr;
  int  * err;
};
struct privcmd_dm_op_buf {
  void  * uptr;
  size_t size;
};
struct privcmd_dm_op {
  domid_t dom;
  __u16 num;
  const struct privcmd_dm_op_buf  * ubufs;
};
struct privcmd_mmap_resource {
  domid_t dom;
  __u32 type;
  __u32 id;
  __u32 idx;
  __u64 num;
  __u64 addr;
};
#define PRIVCMD_IRQFD_FLAG_DEASSIGN (1 << 0)
struct privcmd_irqfd {
  __u64 dm_op;
  __u32 size;
  __u32 fd;
  __u32 flags;
  domid_t dom;
  __u8 pad[2];
};
#define PRIVCMD_IOEVENTFD_FLAG_DEASSIGN (1 << 0)
struct privcmd_ioeventfd {
  __u64 ioreq;
  __u64 ports;
  __u64 addr;
  __u32 addr_len;
  __u32 event_fd;
  __u32 vcpus;
  __u32 vq;
  __u32 flags;
  domid_t dom;
  __u8 pad[2];
};
#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
#define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
#define IOCTL_PRIVCMD_IRQFD _IOW('P', 8, struct privcmd_irqfd)
#define IOCTL_PRIVCMD_IOEVENTFD _IOW('P', 9, struct privcmd_ioeventfd)
#endif