| 
									
										
										
										
											2011-10-25 12:10:40 +05:30
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2015-11-18 18:25:29 +00:00
										 |  |  |  * 9p | 
					
						
							| 
									
										
										
										
											2011-10-25 12:10:40 +05:30
										 |  |  |  * | 
					
						
							|  |  |  |  * Copyright IBM, Corp. 2011 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Authors: | 
					
						
							|  |  |  |  *  Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This work is licensed under the terms of the GNU GPL, version 2.  See | 
					
						
							|  |  |  |  * the COPYING file in the top-level directory. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-29 10:12:57 +02:00
										 |  |  | #ifndef QEMU_9P_SYNTH_H
 | 
					
						
							|  |  |  | #define QEMU_9P_SYNTH_H
 | 
					
						
							| 
									
										
										
										
											2011-10-25 12:10:40 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | typedef struct V9fsSynthNode V9fsSynthNode; | 
					
						
							|  |  |  | typedef ssize_t (*v9fs_synth_read)(void *buf, int len, off_t offset, | 
					
						
							|  |  |  |                                    void *arg); | 
					
						
							|  |  |  | typedef ssize_t (*v9fs_synth_write)(void *buf, int len, off_t offset, | 
					
						
							|  |  |  |                                     void *arg); | 
					
						
							|  |  |  | typedef struct V9fsSynthNodeAttr { | 
					
						
							|  |  |  |     int mode; | 
					
						
							|  |  |  |     int inode; | 
					
						
							|  |  |  |     int nlink; | 
					
						
							|  |  |  |     v9fs_synth_read read; | 
					
						
							|  |  |  |     v9fs_synth_write write; | 
					
						
							|  |  |  | } V9fsSynthNodeAttr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct V9fsSynthNode { | 
					
						
							|  |  |  |     QLIST_HEAD(, V9fsSynthNode) child; | 
					
						
							|  |  |  |     QLIST_ENTRY(V9fsSynthNode) sibling; | 
					
						
							|  |  |  |     char name[NAME_MAX]; | 
					
						
							|  |  |  |     V9fsSynthNodeAttr *attr; | 
					
						
							|  |  |  |     V9fsSynthNodeAttr actual_attr; | 
					
						
							|  |  |  |     void *private; | 
					
						
							|  |  |  |     int open_count; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct V9fsSynthOpenState { | 
					
						
							|  |  |  |     off_t offset; | 
					
						
							|  |  |  |     V9fsSynthNode *node; | 
					
						
							| 
									
										
										
										
											2016-06-06 11:52:34 +02:00
										 |  |  |     struct dirent dent; | 
					
						
							| 
									
										
										
										
											2011-10-25 12:10:40 +05:30
										 |  |  | } V9fsSynthOpenState; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-17 14:13:58 +02:00
										 |  |  | int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, | 
					
						
							|  |  |  |                           const char *name, V9fsSynthNode **result); | 
					
						
							|  |  |  | int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode, | 
					
						
							|  |  |  |                              const char *name, v9fs_synth_read read, | 
					
						
							|  |  |  |                              v9fs_synth_write write, void *arg); | 
					
						
							| 
									
										
										
										
											2012-12-06 12:15:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-01 21:21:27 +01:00
										 |  |  | /* qtest stuff */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define QTEST_V9FS_SYNTH_WALK_FILE "WALK%d"
 | 
					
						
							| 
									
										
										
										
											2018-02-01 21:21:28 +01:00
										 |  |  | #define QTEST_V9FS_SYNTH_LOPEN_FILE "LOPEN"
 | 
					
						
							| 
									
										
										
										
											2018-02-01 21:21:28 +01:00
										 |  |  | #define QTEST_V9FS_SYNTH_WRITE_FILE "WRITE"
 | 
					
						
							| 
									
										
										
										
											2018-02-01 21:21:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-01 21:21:28 +01:00
										 |  |  | /* Any write to the "FLUSH" file is handled one byte at a time by the
 | 
					
						
							|  |  |  |  * backend. If the byte is zero, the backend returns success (ie, 1), | 
					
						
							|  |  |  |  * otherwise it forces the server to try again forever. Thus allowing | 
					
						
							|  |  |  |  * the client to cancel the request. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define QTEST_V9FS_SYNTH_FLUSH_FILE "FLUSH"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-06 12:15:58 +01:00
										 |  |  | #endif
 |