PATH: //proc/self/root/proc/thread-self/root/proc/thread-self/root/usr/include/linux
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
π a.out.h
β
X
π acct.h
β
X
π acrn.h
β
X
π adb.h
β
X
π adfs_fs.h
β
X
π affs_hardblocks.h
β
X
π agpgart.h
β
X
π aio_abi.h
β
X
π am437x-vpfe.h
β
X
π android/
X
π apm_bios.h
β
X
π arcfb.h
β
X
π arm_sdei.h
β
X
π aspeed-lpc-ctrl.h
β
X
π aspeed-p2a-ctrl.h
β
X
π atalk.h
β
X
π atm.h
β
X
π atm_eni.h
β
X
π atm_he.h
β
X
π atm_idt77105.h
β
X
π atm_nicstar.h
β
X
π atm_tcp.h
β
X
π atm_zatm.h
β
X
π atmapi.h
β
X
π atmarp.h
β
X
π atmbr2684.h
β
X
π atmclip.h
β
X
π atmdev.h
β
X
π atmioc.h
β
X
π atmlec.h
β
X
π atmmpc.h
β
X
π atmppp.h
β
X
π atmsap.h
β
X
π atmsvc.h
β
X
π audit.h
β
X
π auto_dev-ioctl.h
β
X
π auto_fs.h
β
X
π auto_fs4.h
β
X
π auxvec.h
β
X
π ax25.h
β
X
π batadv_packet.h
β
X
π batman_adv.h
β
X
π baycom.h
β
X
π bcm933xx_hcs.h
β
X
π bfs_fs.h
β
X
π binfmts.h
β
X
π bits.h
β
X
π blkpg.h
β
X
π blktrace_api.h
β
X
π blkzoned.h
β
X
π bpf.h
β
X
π bpf_common.h
β
X
π bpf_perf_event.h
β
X
π bpfilter.h
β
X
π bpqether.h
β
X
π bsg.h
β
X
π bt-bmc.h
β
X
π btf.h
β
X
π btrfs.h
β
X
π btrfs_tree.h
β
X
π byteorder/
X
π cachefiles.h
β
X
π caif/
X
π can/
X
π can.h
β
X
π capability.h
β
X
π capi.h
β
X
π cciss_defs.h
β
X
π cciss_ioctl.h
β
X
π ccs.h
β
X
π cdrom.h
β
X
π cec-funcs.h
β
X
π cec.h
β
X
π cfm_bridge.h
β
X
π cgroupstats.h
β
X
π chio.h
β
X
π cifs/
X
π close_range.h
β
X
π cm4000_cs.h
β
X
π cn_proc.h
β
X
π coda.h
β
X
π coff.h
β
X
π connector.h
β
X
π const.h
β
X
π coresight-stm.h
β
X
π cramfs_fs.h
β
X
π cryptouser.h
β
X
π cuda.h
β
X
π cxl_mem.h
β
X
π cycx_cfm.h
β
X
π dcbnl.h
β
X
π dccp.h
β
X
π devlink.h
β
X
π dlm.h
β
X
π dlm_device.h
β
X
π dlm_netlink.h
β
X
π dlm_plock.h
β
X
π dlmconstants.h
β
X
π dm-ioctl.h
β
X
π dm-log-userspace.h
β
X
π dma-buf.h
β
X
π dma-heap.h
β
X
π dn.h
β
X
π dns_resolver.h
β
X
π dpll.h
β
X
π dqblk_xfs.h
β
X
π dvb/
X
π edd.h
β
X
π efs_fs_sb.h
β
X
π elf-em.h
β
X
π elf-fdpic.h
β
X
π elf.h
β
X
π errno.h
β
X
π errqueue.h
β
X
π erspan.h
β
X
π ethtool.h
β
X
π ethtool_netlink.h
β
X
π ethtool_netlink_generated.h
β
X
π eventfd.h
β
X
π eventpoll.h
β
X
π f2fs.h
β
X
π fadvise.h
β
X
π falloc.h
β
X
π fanotify.h
β
X
π fb.h
β
X
π fcntl.h
β
X
π fd.h
β
X
π fdreg.h
β
X
π fib_rules.h
β
X
π fiemap.h
β
X
π filter.h
β
X
π firewire-cdev.h
β
X
π firewire-constants.h
β
X
π fou.h
β
X
π fpga-dfl.h
β
X
π fs.h
β
X
π fscrypt.h
β
X
π fsi.h
β
X
π fsl_hypervisor.h
β
X
π fsl_mc.h
β
X
π fsmap.h
β
X
π fsverity.h
β
X
π fuse.h
β
X
π futex.h
β
X
π gameport.h
β
X
π gen_stats.h
β
X
π genetlink.h
β
X
π genwqe/
X
π gfs2_ondisk.h
β
X
π gpio.h
β
X
π gsmmux.h
β
X
π gtp.h
β
X
π handshake.h
β
X
π hash_info.h
β
X
π hdlc/
X
π hdlc.h
β
X
π hdlcdrv.h
β
X
π hdreg.h
β
X
π hid.h
β
X
π hiddev.h
β
X
π hidraw.h
β
X
π hpet.h
β
X
π hsi/
X
π hsr_netlink.h
β
X
π hw_breakpoint.h
β
X
π hyperv.h
β
X
π i2c-dev.h
β
X
π i2c.h
β
X
π i2o-dev.h
β
X
π i8k.h
β
X
π icmp.h
β
X
π icmpv6.h
β
X
π idxd.h
β
X
π if.h
β
X
π if_addr.h
β
X
π if_addrlabel.h
β
X
π if_alg.h
β
X
π if_arcnet.h
β
X
π if_arp.h
β
X
π if_bonding.h
β
X
π if_bridge.h
β
X
π if_cablemodem.h
β
X
π if_eql.h
β
X
π if_ether.h
β
X
π if_fc.h
β
X
π if_fddi.h
β
X
π if_hippi.h
β
X
π if_infiniband.h
β
X
π if_link.h
β
X
π if_ltalk.h
β
X
π if_macsec.h
β
X
π if_packet.h
β
X
π if_phonet.h
β
X
π if_plip.h
β
X
π if_ppp.h
β
X
π if_pppol2tp.h
β
X
π if_pppox.h
β
X
π if_slip.h
β
X
π if_team.h
β
X
π if_tun.h
β
X
π if_tunnel.h
β
X
π if_vlan.h
β
X
π if_x25.h
β
X
π if_xdp.h
β
X
π ife.h
β
X
π igmp.h
β
X
π iio/
X
π ila.h
β
X
π in.h
β
X
π in6.h
β
X
π in_route.h
β
X
π inet_diag.h
β
X
π inotify.h
β
X
π input-event-codes.h
β
X
π input.h
β
X
π io_uring.h
β
X
π ioctl.h
β
X
π iommufd.h
β
X
π ioprio.h
β
X
π ip.h
β
X
π ip6_tunnel.h
β
X
π ip_vs.h
β
X
π ipc.h
β
X
π ipmi.h
β
X
π ipmi_bmc.h
β
X
π ipmi_msgdefs.h
β
X
π ipmi_ssif_bmc.h
β
X
π ipsec.h
β
X
π ipv6.h
β
X
π ipv6_route.h
β
X
π ipx.h
β
X
π irqnr.h
β
X
π isdn/
X
π iso_fs.h
β
X
π isst_if.h
β
X
π ivtv.h
β
X
π ivtvfb.h
β
X
π jffs2.h
β
X
π joystick.h
β
X
π kcm.h
β
X
π kcmp.h
β
X
π kcov.h
β
X
π kd.h
β
X
π kdev_t.h
β
X
π kernel-page-flags.h
β
X
π kernel.h
β
X
π kernelcapi.h
β
X
π kexec.h
β
X
π keyboard.h
β
X
π keyctl.h
β
X
π kfd_ioctl.h
β
X
π kfd_sysfs.h
β
X
π kvm.h
β
X
π kvm_para.h
β
X
π l2tp.h
β
X
π landlock.h
β
X
π libc-compat.h
β
X
π limits.h
β
X
π lirc.h
β
X
π llc.h
β
X
π loadpin.h
β
X
π loop.h
β
X
π lp.h
β
X
π lsm.h
β
X
π lwtunnel.h
β
X
π magic.h
β
X
π major.h
β
X
π map_to_7segment.h
β
X
π matroxfb.h
β
X
π max2175.h
β
X
π mdio.h
β
X
π media-bus-format.h
β
X
π media.h
β
X
π mei.h
β
X
π mei_uuid.h
β
X
π membarrier.h
β
X
π memfd.h
β
X
π mempolicy.h
β
X
π meye.h
β
X
π mii.h
β
X
π minix_fs.h
β
X
π misc/
X
π mman.h
β
X
π mmc/
X
π mmtimer.h
β
X
π module.h
β
X
π mount.h
β
X
π mpls.h
β
X
π mpls_iptunnel.h
β
X
π mptcp.h
β
X
π mptcp_pm.h
β
X
π mqueue.h
β
X
π mroute.h
β
X
π mroute6.h
β
X
π mrp_bridge.h
β
X
π msdos_fs.h
β
X
π msg.h
β
X
π mshv.h
β
X
π mtio.h
β
X
π nbd-netlink.h
β
X
π nbd.h
β
X
π ncsi.h
β
X
π ndctl.h
β
X
π neighbour.h
β
X
π net.h
β
X
π net_dropmon.h
β
X
π net_namespace.h
β
X
π net_shaper.h
β
X
π net_tstamp.h
β
X
π netconf.h
β
X
π netdev.h
β
X
π netdevice.h
β
X
π netfilter/
X
π netfilter.h
β
X
π netfilter_arp/
X
π netfilter_arp.h
β
X
π netfilter_bridge/
X
π netfilter_bridge.h
β
X
π netfilter_decnet.h
β
X
π netfilter_ipv4/
X
π netfilter_ipv4.h
β
X
π netfilter_ipv6/
X
π netfilter_ipv6.h
β
X
π netlink.h
β
X
π netlink_diag.h
β
X
π netrom.h
β
X
π nexthop.h
β
X
π nfc.h
β
X
π nfs.h
β
X
π nfs2.h
β
X
π nfs3.h
β
X
π nfs4.h
β
X
π nfs4_mount.h
β
X
π nfs_fs.h
β
X
π nfs_idmap.h
β
X
π nfs_mount.h
β
X
π nfsacl.h
β
X
π nfsd/
X
π nfsd_netlink.h
β
X
π nilfs2_api.h
β
X
π nilfs2_ondisk.h
β
X
π nitro_enclaves.h
β
X
π nl80211.h
β
X
π nsfs.h
β
X
π nubus.h
β
X
π nvme_ioctl.h
β
X
π nvram.h
β
X
π omap3isp.h
β
X
π omapfb.h
β
X
π oom.h
β
X
π openat2.h
β
X
π openvswitch.h
β
X
π packet_diag.h
β
X
π param.h
β
X
π parport.h
β
X
π patchkey.h
β
X
π pci.h
β
X
π pci_regs.h
β
X
π pcitest.h
β
X
π perf_event.h
β
X
π personality.h
β
X
π pfkeyv2.h
β
X
π pfrut.h
β
X
π pg.h
β
X
π phantom.h
β
X
π phonet.h
β
X
π pidfd.h
β
X
π pkt_cls.h
β
X
π pkt_sched.h
β
X
π pktcdvd.h
β
X
π pmu.h
β
X
π poll.h
β
X
π posix_acl.h
β
X
π posix_acl_xattr.h
β
X
π posix_types.h
β
X
π ppdev.h
β
X
π ppp-comp.h
β
X
π ppp-ioctl.h
β
X
π ppp_defs.h
β
X
π pps.h
β
X
π pr.h
β
X
π prctl.h
β
X
π psample.h
β
X
π psci.h
β
X
π psp-dbc.h
β
X
π psp-sev.h
β
X
π ptp_clock.h
β
X
π ptrace.h
β
X
π qemu_fw_cfg.h
β
X
π qnx4_fs.h
β
X
π qnxtypes.h
β
X
π qrtr.h
β
X
π quota.h
β
X
π radeonfb.h
β
X
π raid/
X
π random.h
β
X
π rds.h
β
X
π reboot.h
β
X
π reiserfs_fs.h
β
X
π reiserfs_xattr.h
β
X
π remoteproc_cdev.h
β
X
π resource.h
β
X
π rfkill.h
β
X
π rio_cm_cdev.h
β
X
π rio_mport_cdev.h
β
X
π rkisp1-config.h
β
X
π romfs_fs.h
β
X
π rose.h
β
X
π route.h
β
X
π rpl.h
β
X
π rpl_iptunnel.h
β
X
π rpmsg.h
β
X
π rpmsg_types.h
β
X
π rseq.h
β
X
π rtc.h
β
X
π rtnetlink.h
β
X
π rxrpc.h
β
X
π scc.h
β
X
π sched/
X
π sched.h
β
X
π scif_ioctl.h
β
X
π screen_info.h
β
X
π sctp.h
β
X
π seccomp.h
β
X
π securebits.h
β
X
π sed-opal.h
β
X
π seg6.h
β
X
π seg6_genl.h
β
X
π seg6_hmac.h
β
X
π seg6_iptunnel.h
β
X
π seg6_local.h
β
X
π selinux_netlink.h
β
X
π sem.h
β
X
π serial.h
β
X
π serial_core.h
β
X
π serial_reg.h
β
X
π serio.h
β
X
π sev-guest.h
β
X
π shm.h
β
X
π signal.h
β
X
π signalfd.h
β
X
π smc.h
β
X
π smc_diag.h
β
X
π smiapp.h
β
X
π snmp.h
β
X
π sock_diag.h
β
X
π socket.h
β
X
π sockios.h
β
X
π sonet.h
β
X
π sonypi.h
β
X
π sound.h
β
X
π soundcard.h
β
X
π spi/
X
π stat.h
β
X
π stddef.h
β
X
π stm.h
β
X
π string.h
β
X
π sunrpc/
X
π surface_aggregator/
X
π suspend_ioctls.h
β
X
π swab.h
β
X
π switchtec_ioctl.h
β
X
π sync_file.h
β
X
π synclink.h
β
X
π sysctl.h
β
X
π sysinfo.h
β
X
π target_core_user.h
β
X
π taskstats.h
β
X
π tc_act/
X
π tc_ematch/
X
π tcp.h
β
X
π tcp_metrics.h
β
X
π tdx-guest.h
β
X
π tee.h
β
X
π termios.h
β
X
π thermal.h
β
X
π time.h
β
X
π time_types.h
β
X
π timerfd.h
β
X
π times.h
β
X
π timex.h
β
X
π tiocl.h
β
X
π tipc.h
β
X
π tipc_config.h
β
X
π tipc_netlink.h
β
X
π tipc_sockets_diag.h
β
X
π tls.h
β
X
π toshiba.h
β
X
π tps6594_pfsm.h
β
X
π tty.h
β
X
π tty_flags.h
β
X
π types.h
β
X
π udf_fs_i.h
β
X
π udmabuf.h
β
X
π udp.h
β
X
π uhid.h
β
X
π uinput.h
β
X
π uio.h
β
X
π uleds.h
β
X
π ultrasound.h
β
X
π um_timetravel.h
β
X
π un.h
β
X
π unistd.h
β
X
π unix_diag.h
β
X
π usb/
X
π usbdevice_fs.h
β
X
π usbip.h
β
X
π userfaultfd.h
β
X
π userio.h
β
X
π utime.h
β
X
π utsname.h
β
X
π uuid.h
β
X
π uvcvideo.h
β
X
π v4l2-common.h
β
X
π v4l2-controls.h
β
X
π v4l2-dv-timings.h
β
X
π v4l2-mediabus.h
β
X
π v4l2-subdev.h
β
X
π vbox_err.h
β
X
π vbox_vmmdev_types.h
β
X
π vboxguest.h
β
X
π vdpa.h
β
X
π vduse.h
β
X
π version.h
β
X
π veth.h
β
X
π vfio.h
β
X
π vfio_ccw.h
β
X
π vfio_zdev.h
β
X
π vhost.h
β
X
π vhost_types.h
β
X
π videodev2.h
β
X
π virtio_9p.h
β
X
π virtio_balloon.h
β
X
π virtio_blk.h
β
X
π virtio_bt.h
β
X
π virtio_config.h
β
X
π virtio_console.h
β
X
π virtio_crypto.h
β
X
π virtio_fs.h
β
X
π virtio_gpio.h
β
X
π virtio_gpu.h
β
X
π virtio_i2c.h
β
X
π virtio_ids.h
β
X
π virtio_input.h
β
X
π virtio_iommu.h
β
X
π virtio_mem.h
β
X
π virtio_mmio.h
β
X
π virtio_net.h
β
X
π virtio_pci.h
β
X
π virtio_pcidev.h
β
X
π virtio_pmem.h
β
X
π virtio_ring.h
β
X
π virtio_rng.h
β
X
π virtio_scmi.h
β
X
π virtio_scsi.h
β
X
π virtio_snd.h
β
X
π virtio_types.h
β
X
π virtio_vsock.h
β
X
π vm_sockets.h
β
X
π vm_sockets_diag.h
β
X
π vmcore.h
β
X
π vsockmon.h
β
X
π vt.h
β
X
π vtpm_proxy.h
β
X
π wait.h
β
X
π watch_queue.h
β
X
π watchdog.h
β
X
π wireguard.h
β
X
π wireless.h
β
X
π wmi.h
β
X
π wwan.h
β
X
π x25.h
β
X
π xattr.h
β
X
π xdp_diag.h
β
X
π xfrm.h
β
X
π xilinx-v4l2-controls.h
β
X
π zorro.h
β
X
π zorro_ids.h
β
X
SAVING...
BERHASIL DIUBAH!
EDITING: mshv.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Userspace interfaces for /dev/mshv* devices and derived fds * * This file is divided into sections containing data structures and IOCTLs for * a particular set of related devices or derived file descriptors. * * The IOCTL definitions are at the end of each section. They are grouped by * device/fd, so that new IOCTLs can easily be added with a monotonically * increasing number. */ #ifndef _LINUX_MSHV_H #define _LINUX_MSHV_H #include <linux/types.h> #define MSHV_IOCTL 0xB8 /* ******************************************* * Entry point to main VMM APIs: /dev/mshv * ******************************************* */ enum { MSHV_PT_BIT_LAPIC, MSHV_PT_BIT_X2APIC, MSHV_PT_BIT_GPA_SUPER_PAGES, MSHV_PT_BIT_COUNT, }; #define MSHV_PT_FLAGS_MASK ((1 << MSHV_PT_BIT_COUNT) - 1) enum { MSHV_PT_ISOLATION_NONE, MSHV_PT_ISOLATION_COUNT, }; /** * struct mshv_create_partition - arguments for MSHV_CREATE_PARTITION * @pt_flags: Bitmask of 1 << MSHV_PT_BIT_* * @pt_isolation: MSHV_PT_ISOLATION_* * * Returns a file descriptor to act as a handle to a guest partition. * At this point the partition is not yet initialized in the hypervisor. * Some operations must be done with the partition in this state, e.g. setting * so-called "early" partition properties. The partition can then be * initialized with MSHV_INITIALIZE_PARTITION. */ struct mshv_create_partition { __u64 pt_flags; __u64 pt_isolation; }; /* /dev/mshv */ #define MSHV_CREATE_PARTITION _IOW(MSHV_IOCTL, 0x00, struct mshv_create_partition) /* ************************ * Child partition APIs * ************************ */ struct mshv_create_vp { __u32 vp_index; }; enum { MSHV_SET_MEM_BIT_WRITABLE, MSHV_SET_MEM_BIT_EXECUTABLE, MSHV_SET_MEM_BIT_UNMAP, MSHV_SET_MEM_BIT_COUNT }; #define MSHV_SET_MEM_FLAGS_MASK ((1 << MSHV_SET_MEM_BIT_COUNT) - 1) /* The hypervisor's "native" page size */ #define MSHV_HV_PAGE_SIZE 0x1000 /** * struct mshv_user_mem_region - arguments for MSHV_SET_GUEST_MEMORY * @size: Size of the memory region (bytes). Must be aligned to * MSHV_HV_PAGE_SIZE * @guest_pfn: Base guest page number to map * @userspace_addr: Base address of userspace memory. Must be aligned to * MSHV_HV_PAGE_SIZE * @flags: Bitmask of 1 << MSHV_SET_MEM_BIT_*. If (1 << MSHV_SET_MEM_BIT_UNMAP) * is set, ignore other bits. * @rsvd: MBZ * * Map or unmap a region of userspace memory to Guest Physical Addresses (GPA). * Mappings can't overlap in GPA space or userspace. * To unmap, these fields must match an existing mapping. */ struct mshv_user_mem_region { __u64 size; __u64 guest_pfn; __u64 userspace_addr; __u8 flags; __u8 rsvd[7]; }; enum { MSHV_IRQFD_BIT_DEASSIGN, MSHV_IRQFD_BIT_RESAMPLE, MSHV_IRQFD_BIT_COUNT, }; #define MSHV_IRQFD_FLAGS_MASK ((1 << MSHV_IRQFD_BIT_COUNT) - 1) struct mshv_user_irqfd { __s32 fd; __s32 resamplefd; __u32 gsi; __u32 flags; }; enum { MSHV_IOEVENTFD_BIT_DATAMATCH, MSHV_IOEVENTFD_BIT_PIO, MSHV_IOEVENTFD_BIT_DEASSIGN, MSHV_IOEVENTFD_BIT_COUNT, }; #define MSHV_IOEVENTFD_FLAGS_MASK ((1 << MSHV_IOEVENTFD_BIT_COUNT) - 1) struct mshv_user_ioeventfd { __u64 datamatch; __u64 addr; /* legal pio/mmio address */ __u32 len; /* 1, 2, 4, or 8 bytes */ __s32 fd; __u32 flags; __u8 rsvd[4]; }; struct mshv_user_irq_entry { __u32 gsi; __u32 address_lo; __u32 address_hi; __u32 data; }; struct mshv_user_irq_table { __u32 nr; __u32 rsvd; /* MBZ */ struct mshv_user_irq_entry entries[]; }; enum { MSHV_GPAP_ACCESS_TYPE_ACCESSED, MSHV_GPAP_ACCESS_TYPE_DIRTY, MSHV_GPAP_ACCESS_TYPE_COUNT /* Count of enum members */ }; enum { MSHV_GPAP_ACCESS_OP_NOOP, MSHV_GPAP_ACCESS_OP_CLEAR, MSHV_GPAP_ACCESS_OP_SET, MSHV_GPAP_ACCESS_OP_COUNT /* Count of enum members */ }; /** * struct mshv_gpap_access_bitmap - arguments for MSHV_GET_GPAP_ACCESS_BITMAP * @access_type: MSHV_GPAP_ACCESS_TYPE_* - The type of access to record in the * bitmap * @access_op: MSHV_GPAP_ACCESS_OP_* - Allows an optional clear or set of all * the access states in the range, after retrieving the current * states. * @rsvd: MBZ * @page_count: Number of pages * @gpap_base: Base gpa page number * @bitmap_ptr: Output buffer for bitmap, at least (page_count + 7) / 8 bytes * * Retrieve a bitmap of either ACCESSED or DIRTY bits for a given range of guest * memory, and optionally clear or set the bits. */ struct mshv_gpap_access_bitmap { __u8 access_type; __u8 access_op; __u8 rsvd[6]; __u64 page_count; __u64 gpap_base; __u64 bitmap_ptr; }; /** * struct mshv_root_hvcall - arguments for MSHV_ROOT_HVCALL * @code: Hypercall code (HVCALL_*) * @reps: in: Rep count ('repcount') * out: Reps completed ('repcomp'). MBZ unless rep hvcall * @in_sz: Size of input incl rep data. <= MSHV_HV_PAGE_SIZE * @out_sz: Size of output buffer. <= MSHV_HV_PAGE_SIZE. MBZ if out_ptr is 0 * @status: in: MBZ * out: HV_STATUS_* from hypercall * @rsvd: MBZ * @in_ptr: Input data buffer (struct hv_input_*). If used with partition or * vp fd, partition id field is populated by kernel. * @out_ptr: Output data buffer (optional) */ struct mshv_root_hvcall { __u16 code; __u16 reps; __u16 in_sz; __u16 out_sz; __u16 status; __u8 rsvd[6]; __u64 in_ptr; __u64 out_ptr; }; /* Partition fds created with MSHV_CREATE_PARTITION */ #define MSHV_INITIALIZE_PARTITION _IO(MSHV_IOCTL, 0x00) #define MSHV_CREATE_VP _IOW(MSHV_IOCTL, 0x01, struct mshv_create_vp) #define MSHV_SET_GUEST_MEMORY _IOW(MSHV_IOCTL, 0x02, struct mshv_user_mem_region) #define MSHV_IRQFD _IOW(MSHV_IOCTL, 0x03, struct mshv_user_irqfd) #define MSHV_IOEVENTFD _IOW(MSHV_IOCTL, 0x04, struct mshv_user_ioeventfd) #define MSHV_SET_MSI_ROUTING _IOW(MSHV_IOCTL, 0x05, struct mshv_user_irq_table) #define MSHV_GET_GPAP_ACCESS_BITMAP _IOWR(MSHV_IOCTL, 0x06, struct mshv_gpap_access_bitmap) /* Generic hypercall */ #define MSHV_ROOT_HVCALL _IOWR(MSHV_IOCTL, 0x07, struct mshv_root_hvcall) /* ******************************** * VP APIs for child partitions * ******************************** */ #define MSHV_RUN_VP_BUF_SZ 256 /* * VP state pages may be mapped to userspace via mmap(). * To specify which state page, use MSHV_VP_MMAP_OFFSET_ values multiplied by * the system page size. * e.g. * long page_size = sysconf(_SC_PAGE_SIZE); * void *reg_page = mmap(NULL, MSHV_HV_PAGE_SIZE, PROT_READ|PROT_WRITE, * MAP_SHARED, vp_fd, * MSHV_VP_MMAP_OFFSET_REGISTERS * page_size); */ enum { MSHV_VP_MMAP_OFFSET_REGISTERS, MSHV_VP_MMAP_OFFSET_INTERCEPT_MESSAGE, MSHV_VP_MMAP_OFFSET_GHCB, MSHV_VP_MMAP_OFFSET_COUNT }; /** * struct mshv_run_vp - argument for MSHV_RUN_VP * @msg_buf: On success, the intercept message is copied here. It can be * interpreted using the relevant hypervisor definitions. */ struct mshv_run_vp { __u8 msg_buf[MSHV_RUN_VP_BUF_SZ]; }; enum { MSHV_VP_STATE_LAPIC, /* Local interrupt controller state (either arch) */ MSHV_VP_STATE_XSAVE, /* XSAVE data in compacted form (x86_64) */ MSHV_VP_STATE_SIMP, MSHV_VP_STATE_SIEFP, MSHV_VP_STATE_SYNTHETIC_TIMERS, MSHV_VP_STATE_COUNT, }; /** * struct mshv_get_set_vp_state - arguments for MSHV_[GET,SET]_VP_STATE * @type: MSHV_VP_STATE_* * @rsvd: MBZ * @buf_sz: in: 4k page-aligned size of buffer * out: Actual size of data (on EINVAL, check this to see if buffer * was too small) * @buf_ptr: 4k page-aligned data buffer */ struct mshv_get_set_vp_state { __u8 type; __u8 rsvd[3]; __u32 buf_sz; __u64 buf_ptr; }; /* VP fds created with MSHV_CREATE_VP */ #define MSHV_RUN_VP _IOR(MSHV_IOCTL, 0x00, struct mshv_run_vp) #define MSHV_GET_VP_STATE _IOWR(MSHV_IOCTL, 0x01, struct mshv_get_set_vp_state) #define MSHV_SET_VP_STATE _IOWR(MSHV_IOCTL, 0x02, struct mshv_get_set_vp_state) /* * Generic hypercall * Defined above in partition IOCTLs, avoid redefining it here * #define MSHV_ROOT_HVCALL _IOWR(MSHV_IOCTL, 0x07, struct mshv_root_hvcall) */ #endif
SIMPAN PERUBAHAN