122851890Sopenharmony_ci/* 222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py, 322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants, 422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information. 522851890Sopenharmony_ci */ 622851890Sopenharmony_ci#ifndef __LINUX_PUBLIC_PRIVCMD_H__ 722851890Sopenharmony_ci#define __LINUX_PUBLIC_PRIVCMD_H__ 822851890Sopenharmony_ci#include <linux/types.h> 922851890Sopenharmony_ci#include <linux/compiler.h> 1022851890Sopenharmony_ci#include <xen/interface/xen.h> 1122851890Sopenharmony_cistruct privcmd_hypercall { 1222851890Sopenharmony_ci __u64 op; 1322851890Sopenharmony_ci __u64 arg[5]; 1422851890Sopenharmony_ci}; 1522851890Sopenharmony_cistruct privcmd_mmap_entry { 1622851890Sopenharmony_ci __u64 va; 1722851890Sopenharmony_ci 1822851890Sopenharmony_ci __u64 mfn; 1922851890Sopenharmony_ci __u64 npages; 2022851890Sopenharmony_ci}; 2122851890Sopenharmony_cistruct privcmd_mmap { 2222851890Sopenharmony_ci int num; 2322851890Sopenharmony_ci domid_t dom; 2422851890Sopenharmony_ci struct privcmd_mmap_entry __user *entry; 2522851890Sopenharmony_ci}; 2622851890Sopenharmony_cistruct privcmd_mmapbatch { 2722851890Sopenharmony_ci int num; 2822851890Sopenharmony_ci domid_t dom; 2922851890Sopenharmony_ci __u64 addr; 3022851890Sopenharmony_ci xen_pfn_t __user *arr; 3122851890Sopenharmony_ci}; 3222851890Sopenharmony_ci#define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U 3322851890Sopenharmony_ci#define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U 3422851890Sopenharmony_cistruct privcmd_mmapbatch_v2 { 3522851890Sopenharmony_ci unsigned int num; 3622851890Sopenharmony_ci domid_t dom; 3722851890Sopenharmony_ci __u64 addr; 3822851890Sopenharmony_ci const xen_pfn_t __user *arr; 3922851890Sopenharmony_ci int __user *err; 4022851890Sopenharmony_ci}; 4122851890Sopenharmony_cistruct privcmd_dm_op_buf { 4222851890Sopenharmony_ci void __user *uptr; 4322851890Sopenharmony_ci size_t size; 4422851890Sopenharmony_ci}; 4522851890Sopenharmony_cistruct privcmd_dm_op { 4622851890Sopenharmony_ci domid_t dom; 4722851890Sopenharmony_ci __u16 num; 4822851890Sopenharmony_ci const struct privcmd_dm_op_buf __user *ubufs; 4922851890Sopenharmony_ci}; 5022851890Sopenharmony_cistruct privcmd_mmap_resource { 5122851890Sopenharmony_ci domid_t dom; 5222851890Sopenharmony_ci __u32 type; 5322851890Sopenharmony_ci __u32 id; 5422851890Sopenharmony_ci __u32 idx; 5522851890Sopenharmony_ci __u64 num; 5622851890Sopenharmony_ci __u64 addr; 5722851890Sopenharmony_ci}; 5822851890Sopenharmony_ci#define IOCTL_PRIVCMD_HYPERCALL \ 5922851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall)) 6022851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAP \ 6122851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap)) 6222851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAPBATCH \ 6322851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch)) 6422851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAPBATCH_V2 \ 6522851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2)) 6622851890Sopenharmony_ci#define IOCTL_PRIVCMD_DM_OP \ 6722851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op)) 6822851890Sopenharmony_ci#define IOCTL_PRIVCMD_RESTRICT \ 6922851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t)) 7022851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAP_RESOURCE \ 7122851890Sopenharmony_ci _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource)) 7222851890Sopenharmony_ci#endif 73