/* | |
* Virtio 9p Proxy callback | |
* | |
* Copyright IBM, Corp. 2011 | |
* | |
* Authors: | |
* M. Mohan Kumar <mohan@in.ibm.com> | |
* | |
* This work is licensed under the terms of the GNU GPL, version 2. See | |
* the COPYING file in the top-level directory. | |
*/ | |
#ifndef _QEMU_VIRTIO_9P_PROXY_H | |
#define _QEMU_VIRTIO_9P_PROXY_H | |
#define PROXY_MAX_IO_SZ (64 * 1024) | |
#define V9FS_FD_VALID INT_MAX | |
/* | |
* proxy iovec only support one element and | |
* marsha/unmarshal doesn't do little endian conversion. | |
*/ | |
#define proxy_unmarshal(in_sg, offset, fmt, args...) \ | |
v9fs_unmarshal(in_sg, 1, offset, 0, fmt, ##args) | |
#define proxy_marshal(out_sg, offset, fmt, args...) \ | |
v9fs_marshal(out_sg, 1, offset, 0, fmt, ##args) | |
union MsgControl { | |
struct cmsghdr cmsg; | |
char control[CMSG_SPACE(sizeof(int))]; | |
}; | |
typedef struct { | |
uint32_t type; | |
uint32_t size; | |
} ProxyHeader; | |
#define PROXY_HDR_SZ (sizeof(ProxyHeader)) | |
enum { | |
T_SUCCESS = 0, | |
T_ERROR, | |
T_OPEN, | |
T_CREATE, | |
T_MKNOD, | |
T_MKDIR, | |
T_SYMLINK, | |
T_LINK, | |
T_LSTAT, | |
T_READLINK, | |
T_STATFS, | |
T_CHMOD, | |
T_CHOWN, | |
T_TRUNCATE, | |
T_UTIME, | |
T_RENAME, | |
T_REMOVE, | |
T_LGETXATTR, | |
T_LLISTXATTR, | |
T_LSETXATTR, | |
T_LREMOVEXATTR, | |
T_GETVERSION, | |
}; | |
typedef struct { | |
uint64_t st_dev; | |
uint64_t st_ino; | |
uint64_t st_nlink; | |
uint32_t st_mode; | |
uint32_t st_uid; | |
uint32_t st_gid; | |
uint64_t st_rdev; | |
uint64_t st_size; | |
uint64_t st_blksize; | |
uint64_t st_blocks; | |
uint64_t st_atim_sec; | |
uint64_t st_atim_nsec; | |
uint64_t st_mtim_sec; | |
uint64_t st_mtim_nsec; | |
uint64_t st_ctim_sec; | |
uint64_t st_ctim_nsec; | |
} ProxyStat; | |
typedef struct { | |
uint64_t f_type; | |
uint64_t f_bsize; | |
uint64_t f_blocks; | |
uint64_t f_bfree; | |
uint64_t f_bavail; | |
uint64_t f_files; | |
uint64_t f_ffree; | |
uint64_t f_fsid[2]; | |
uint64_t f_namelen; | |
uint64_t f_frsize; | |
} ProxyStatFS; | |
#endif |