qemu/hw/9pfs/9p-proxy.h
<<
>>
Prefs
   1/*
   2 * 9p Proxy callback
   3 *
   4 * Copyright IBM, Corp. 2011
   5 *
   6 * Authors:
   7 * M. Mohan Kumar <mohan@in.ibm.com>
   8 *
   9 * This work is licensed under the terms of the GNU GPL, version 2.  See
  10 * the COPYING file in the top-level directory.
  11 */
  12
  13#ifndef QEMU_9P_PROXY_H
  14#define QEMU_9P_PROXY_H
  15
  16#define PROXY_MAX_IO_SZ (64 * 1024)
  17#define V9FS_FD_VALID INT_MAX
  18
  19/*
  20 * proxy iovec only support one element and
  21 * marsha/unmarshal doesn't do little endian conversion.
  22 */
  23#define proxy_unmarshal(in_sg, offset, fmt, args...) \
  24    v9fs_iov_unmarshal(in_sg, 1, offset, 0, fmt, ##args)
  25#define proxy_marshal(out_sg, offset, fmt, args...) \
  26    v9fs_iov_marshal(out_sg, 1, offset, 0, fmt, ##args)
  27
  28union MsgControl {
  29    struct cmsghdr cmsg;
  30    char control[CMSG_SPACE(sizeof(int))];
  31};
  32
  33typedef struct {
  34    uint32_t type;
  35    uint32_t size;
  36} ProxyHeader;
  37
  38#define PROXY_HDR_SZ (sizeof(ProxyHeader))
  39
  40enum {
  41    T_SUCCESS = 0,
  42    T_ERROR,
  43    T_OPEN,
  44    T_CREATE,
  45    T_MKNOD,
  46    T_MKDIR,
  47    T_SYMLINK,
  48    T_LINK,
  49    T_LSTAT,
  50    T_READLINK,
  51    T_STATFS,
  52    T_CHMOD,
  53    T_CHOWN,
  54    T_TRUNCATE,
  55    T_UTIME,
  56    T_RENAME,
  57    T_REMOVE,
  58    T_LGETXATTR,
  59    T_LLISTXATTR,
  60    T_LSETXATTR,
  61    T_LREMOVEXATTR,
  62    T_GETVERSION,
  63};
  64
  65typedef struct {
  66    uint64_t st_dev;
  67    uint64_t st_ino;
  68    uint64_t st_nlink;
  69    uint32_t st_mode;
  70    uint32_t st_uid;
  71    uint32_t st_gid;
  72    uint64_t st_rdev;
  73    uint64_t st_size;
  74    uint64_t st_blksize;
  75    uint64_t st_blocks;
  76    uint64_t st_atim_sec;
  77    uint64_t st_atim_nsec;
  78    uint64_t st_mtim_sec;
  79    uint64_t st_mtim_nsec;
  80    uint64_t st_ctim_sec;
  81    uint64_t st_ctim_nsec;
  82} ProxyStat;
  83
  84typedef struct {
  85    uint64_t f_type;
  86    uint64_t f_bsize;
  87    uint64_t f_blocks;
  88    uint64_t f_bfree;
  89    uint64_t f_bavail;
  90    uint64_t f_files;
  91    uint64_t f_ffree;
  92    uint64_t f_fsid[2];
  93    uint64_t f_namelen;
  94    uint64_t f_frsize;
  95} ProxyStatFS;
  96#endif
  97