9p.h (2149675b195f2d9a1a4e3b966d45aba234def69b) 9p.h (d2c5cf7ca15490b4737a5393e51abf0301b98971)
1#ifndef QEMU_9P_H
2#define QEMU_9P_H
3
4#include <dirent.h>
5#include <utime.h>
6#include <sys/resource.h>
7#include "fsdev/file-op-9p.h"
8#include "fsdev/9p-iov-marshal.h"

--- 183 unchanged lines hidden (view full) ---

192 void *value;
193 V9fsString name;
194 int flags;
195 bool xattrwalk_fid;
196} V9fsXattr;
197
198typedef struct V9fsDir {
199 DIR *stream;
1#ifndef QEMU_9P_H
2#define QEMU_9P_H
3
4#include <dirent.h>
5#include <utime.h>
6#include <sys/resource.h>
7#include "fsdev/file-op-9p.h"
8#include "fsdev/9p-iov-marshal.h"

--- 183 unchanged lines hidden (view full) ---

192 void *value;
193 V9fsString name;
194 int flags;
195 bool xattrwalk_fid;
196} V9fsXattr;
197
198typedef struct V9fsDir {
199 DIR *stream;
200 CoMutex readdir_mutex;
200 P9ProtoVersion proto_version;
201 /* readdir mutex type used for 9P2000.u protocol variant */
202 CoMutex readdir_mutex_u;
203 /* readdir mutex type used for 9P2000.L protocol variant */
204 QemuMutex readdir_mutex_L;
201} V9fsDir;
202
203static inline void v9fs_readdir_lock(V9fsDir *dir)
204{
205} V9fsDir;
206
207static inline void v9fs_readdir_lock(V9fsDir *dir)
208{
205 qemu_co_mutex_lock(&dir->readdir_mutex);
209 if (dir->proto_version == V9FS_PROTO_2000U) {
210 qemu_co_mutex_lock(&dir->readdir_mutex_u);
211 } else {
212 qemu_mutex_lock(&dir->readdir_mutex_L);
213 }
206}
207
208static inline void v9fs_readdir_unlock(V9fsDir *dir)
209{
214}
215
216static inline void v9fs_readdir_unlock(V9fsDir *dir)
217{
210 qemu_co_mutex_unlock(&dir->readdir_mutex);
218 if (dir->proto_version == V9FS_PROTO_2000U) {
219 qemu_co_mutex_unlock(&dir->readdir_mutex_u);
220 } else {
221 qemu_mutex_unlock(&dir->readdir_mutex_L);
222 }
211}
212
223}
224
213static inline void v9fs_readdir_init(V9fsDir *dir)
225static inline void v9fs_readdir_init(P9ProtoVersion proto_version, V9fsDir *dir)
214{
226{
215 qemu_co_mutex_init(&dir->readdir_mutex);
227 dir->proto_version = proto_version;
228 if (proto_version == V9FS_PROTO_2000U) {
229 qemu_co_mutex_init(&dir->readdir_mutex_u);
230 } else {
231 qemu_mutex_init(&dir->readdir_mutex_L);
232 }
216}
217
218/**
219 * Type for 9p fs drivers' (a.k.a. 9p backends) result of readdir requests,
220 * which is a chained list of directory entries.
221 */
222typedef struct V9fsDirEnt {
223 /* mandatory (must not be NULL) information for all readdir requests */

--- 245 unchanged lines hidden ---
233}
234
235/**
236 * Type for 9p fs drivers' (a.k.a. 9p backends) result of readdir requests,
237 * which is a chained list of directory entries.
238 */
239typedef struct V9fsDirEnt {
240 /* mandatory (must not be NULL) information for all readdir requests */

--- 245 unchanged lines hidden ---