18typedef struct VFSDir VFSDir;
20typedef struct VFS_WeakRef VFS_WeakRef;
21typedef struct VFSMount VFSMount;
22typedef struct VFSMount_WeakRef VFSMount_WeakRef;
25#define _sti_VFS _sti_object
27#define STStorageType_VFS VFS*
28#define STypeArg_VFS(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(VFS, val))
29#define STypeArgPtr_VFS(type, val) (stgeneric*)objInstCheckClassPtr(VFS, val)
30#define STypeCheckedArg_VFS(type, val) stType(type), stArg(type, val)
31#define STypeCheckedPtrArg_VFS(type, val) stType(type), stArgPtr(type, val)
34#define _sti_VFSMount _sti_object
35#define SType_VFSMount VFSMount*
36#define STStorageType_VFSMount VFSMount*
37#define STypeArg_VFSMount(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(VFSMount, val))
38#define STypeArgPtr_VFSMount(type, val) (stgeneric*)objInstCheckClassPtr(VFSMount, val)
39#define STypeCheckedArg_VFSMount(type, val) stType(type), stArg(type, val)
40#define STypeCheckedPtrArg_VFSMount(type, val) stType(type), stArgPtr(type, val)
83#define VFS(inst) objInstCheckClass(VFS, inst)
84#define VFSNone ((VFS*)NULL)
86typedef struct VFS_WeakRef {
89 void* _is_VFS_WeakRef;
90 void* _is_ObjInst_WeakRef;
95#define VFS_WeakRef(inst) objWeakRefCheckClass(VFS, inst)
115#define vfsCreate(flags) VFS_create(flags)
144#define vfsCreateFromFS() VFS_createFromFS()
147typedef struct VFSMount {
154 atomic(uintptr) _ref;
155 atomic(ptr) _weakref;
161#define VFSMount(inst) objInstCheckClass(VFSMount, inst)
162#define VFSMountNone ((VFSMount*)NULL)
164typedef struct VFSMount_WeakRef {
167 void* _is_VFSMount_WeakRef;
168 void* _is_ObjInst_WeakRef;
170 atomic(uintptr) _ref;
173#define VFSMount_WeakRef(inst) objWeakRefCheckClass(VFSMount, inst)
177#define vfsmountCreate(provider, flags) VFSMount_create(ObjInst(provider), flags)
#define saDeclarePtr(name)
#define _objfactory_check
#define _objfactory_guaranteed
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Reader-writer lock synchronization primitive.
Directory cache accounting. See vfsSetCacheLimits().
uint32 maxdirs
node count above which a prune is allowed to run
atomic(uint32) dircount
VFSDir nodes currently in the tree.
atomic(int64) lastprune
clockTimer() when the last prune ran
int64 ttl
how long an unused directory survives, in microseconds
VFSDir * root
Root for namespaceless paths.
string curdir
Current working directory of the VFS.
hashtable namespaces
Hashtable of string/VFSDir.
VFSDirCache dcache
directory cache size accounting