138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris/****************************************************************************
238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************
338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   This header was automatically generated from a Linux kernel header
538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   of the same name, to make information necessary for userspace to
638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   call into the kernel available to libc.  It contains only constants,
738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   structures, and macros generated from the original header, and thus,
838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   contains no copyrightable information.
938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   To edit the content of this header, modify the corresponding
1138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   source file (e.g. under external/kernel-headers/original/) then
1238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   run bionic/libc/kernel/tools/update_all.py
1338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   Any manual change here will be lost the next time this script will
1538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***   be run. You've been warned!
1638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ***
1738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************
1838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris ****************************************************************************/
1938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#ifndef __LINUX_PUBLIC_GNTDEV_H__
2038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define __LINUX_PUBLIC_GNTDEV_H__
2105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/types.h>
2238062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct ioctl_gntdev_grant_ref {
2305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 domid;
2405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 ref;
2538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
26d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IOCTL_GNTDEV_MAP_GRANT_REF _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
2738062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct ioctl_gntdev_map_grant_ref {
2805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 count;
2905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 pad;
3005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u64 index;
31d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct ioctl_gntdev_grant_ref refs[1];
3238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
33d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IOCTL_GNTDEV_UNMAP_GRANT_REF _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
3438062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct ioctl_gntdev_unmap_grant_ref {
3505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u64 index;
3605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 count;
3705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 pad;
3838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
3905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
4038062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct ioctl_gntdev_get_offset_for_vaddr {
4105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u64 vaddr;
4205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u64 offset;
4305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 count;
4405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 pad;
4538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
46d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IOCTL_GNTDEV_SET_MAX_GRANTS _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
4705d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct ioctl_gntdev_set_max_grants {
4805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 count;
4938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
5138062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct ioctl_gntdev_unmap_notify {
5205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u64 index;
5305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 action;
5405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 event_channel_port;
5538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
56106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct gntdev_grant_copy_segment {
57106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  union {
58106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris    void __user * virt;
59106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris    struct {
60106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris      grant_ref_t ref;
61106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris      __u16 offset;
62106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris      domid_t domid;
63106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris    } foreign;
64106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  } source, dest;
65106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u16 len;
66106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u16 flags;
67106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s16 status;
68106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
69106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IOCTL_GNTDEV_GRANT_COPY _IOC(_IOC_NONE, 'G', 8, sizeof(struct ioctl_gntdev_grant_copy))
70106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ioctl_gntdev_grant_copy {
71106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  unsigned int count;
72106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  struct gntdev_grant_copy_segment __user * segments;
73106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
7438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
7538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define UNMAP_NOTIFY_SEND_EVENT 0x2
7638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#endif
77