19db221aeSAneesh Kumar K.V /* 2364031f1SWei Liu * 9p 39db221aeSAneesh Kumar K.V * 49db221aeSAneesh Kumar K.V * Copyright IBM, Corp. 2011 59db221aeSAneesh Kumar K.V * 69db221aeSAneesh Kumar K.V * Authors: 79db221aeSAneesh Kumar K.V * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> 89db221aeSAneesh Kumar K.V * 99db221aeSAneesh Kumar K.V * This work is licensed under the terms of the GNU GPL, version 2. See 109db221aeSAneesh Kumar K.V * the COPYING file in the top-level directory. 119db221aeSAneesh Kumar K.V * 129db221aeSAneesh Kumar K.V */ 13364031f1SWei Liu #ifndef HW_9PFS_SYNTH_H 14364031f1SWei Liu #define HW_9PFS_SYNTH_H 1 159db221aeSAneesh Kumar K.V 169db221aeSAneesh Kumar K.V 179db221aeSAneesh Kumar K.V typedef struct V9fsSynthNode V9fsSynthNode; 189db221aeSAneesh Kumar K.V typedef ssize_t (*v9fs_synth_read)(void *buf, int len, off_t offset, 199db221aeSAneesh Kumar K.V void *arg); 209db221aeSAneesh Kumar K.V typedef ssize_t (*v9fs_synth_write)(void *buf, int len, off_t offset, 219db221aeSAneesh Kumar K.V void *arg); 229db221aeSAneesh Kumar K.V typedef struct V9fsSynthNodeAttr { 239db221aeSAneesh Kumar K.V int mode; 249db221aeSAneesh Kumar K.V int inode; 259db221aeSAneesh Kumar K.V int nlink; 269db221aeSAneesh Kumar K.V v9fs_synth_read read; 279db221aeSAneesh Kumar K.V v9fs_synth_write write; 289db221aeSAneesh Kumar K.V } V9fsSynthNodeAttr; 299db221aeSAneesh Kumar K.V 309db221aeSAneesh Kumar K.V struct V9fsSynthNode { 319db221aeSAneesh Kumar K.V QLIST_HEAD(, V9fsSynthNode) child; 329db221aeSAneesh Kumar K.V QLIST_ENTRY(V9fsSynthNode) sibling; 339db221aeSAneesh Kumar K.V char name[NAME_MAX]; 349db221aeSAneesh Kumar K.V V9fsSynthNodeAttr *attr; 359db221aeSAneesh Kumar K.V V9fsSynthNodeAttr actual_attr; 369db221aeSAneesh Kumar K.V void *private; 379db221aeSAneesh Kumar K.V int open_count; 389db221aeSAneesh Kumar K.V }; 399db221aeSAneesh Kumar K.V 409db221aeSAneesh Kumar K.V typedef struct V9fsSynthOpenState { 419db221aeSAneesh Kumar K.V off_t offset; 429db221aeSAneesh Kumar K.V V9fsSynthNode *node; 43*635324e8SGreg Kurz struct dirent dent; 449db221aeSAneesh Kumar K.V } V9fsSynthOpenState; 459db221aeSAneesh Kumar K.V 469db221aeSAneesh Kumar K.V extern int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, 479db221aeSAneesh Kumar K.V const char *name, V9fsSynthNode **result); 489db221aeSAneesh Kumar K.V extern int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode, 499db221aeSAneesh Kumar K.V const char *name, v9fs_synth_read read, 509db221aeSAneesh Kumar K.V v9fs_synth_write write, void *arg); 51cb9c377fSPaolo Bonzini 52cb9c377fSPaolo Bonzini #endif 53