1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types io.encodings.utf8 io.encodings.string
4 kernel sequences unix.stat accessors unix combinators math
5 grouping system alien.strings math.bitwise alien.syntax
6 unix.types classes.struct unix.ffi literals ;
9 CONSTANT: MNT_RDONLY 0x00000001
10 CONSTANT: MNT_SYNCHRONOUS 0x00000002
11 CONSTANT: MNT_NOEXEC 0x00000004
12 CONSTANT: MNT_NOSUID 0x00000008
13 CONSTANT: MNT_NODEV 0x00000010
14 CONSTANT: MNT_UNION 0x00000020
15 CONSTANT: MNT_ASYNC 0x00000040
16 CONSTANT: MNT_EXPORTED 0x00000100
17 CONSTANT: MNT_QUARANTINE 0x00000400
18 CONSTANT: MNT_LOCAL 0x00001000
19 CONSTANT: MNT_QUOTA 0x00002000
20 CONSTANT: MNT_ROOTFS 0x00004000
21 CONSTANT: MNT_DOVOLFS 0x00008000
22 CONSTANT: MNT_DONTBROWSE 0x00100000
23 CONSTANT: MNT_IGNORE_OWNERSHIP 0x00200000
24 CONSTANT: MNT_AUTOMOUNTED 0x00400000
25 CONSTANT: MNT_JOURNALED 0x00800000
26 CONSTANT: MNT_NOUSERXATTR 0x01000000
27 CONSTANT: MNT_DEFWRITE 0x02000000
28 CONSTANT: MNT_MULTILABEL 0x04000000
29 CONSTANT: MNT_NOATIME 0x10000000
30 ALIAS: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
32 CONSTANT: MNT_VISFLAGMASK
34 MNT_RDONLY MNT_SYNCHRONOUS MNT_NOEXEC
35 MNT_NOSUID MNT_NODEV MNT_UNION
36 MNT_ASYNC MNT_EXPORTED MNT_QUARANTINE
38 MNT_ROOTFS MNT_DOVOLFS MNT_DONTBROWSE
39 MNT_IGNORE_OWNERSHIP MNT_AUTOMOUNTED MNT_JOURNALED
40 MNT_NOUSERXATTR MNT_DEFWRITE MNT_MULTILABEL MNT_NOATIME
43 CONSTANT: MNT_UPDATE 0x00010000
44 CONSTANT: MNT_RELOAD 0x00040000
45 CONSTANT: MNT_FORCE 0x00080000
47 CONSTANT: MNT_CMDFLAGS flags{ MNT_UPDATE MNT_RELOAD MNT_FORCE }
49 CONSTANT: VFS_GENERIC 0
50 CONSTANT: VFS_NUMMNTOPS 1
51 CONSTANT: VFS_MAXTYPENUM 1
53 CONSTANT: VFS_SET_PACKAGE_EXTS 3
56 CONSTANT: MNT_NOWAIT 2
58 CONSTANT: VFS_CTL_VERS1 0x01
60 CONSTANT: VFS_CTL_STATFS 0x00010001
61 CONSTANT: VFS_CTL_UMOUNT 0x00010002
62 CONSTANT: VFS_CTL_QUERY 0x00010003
63 CONSTANT: VFS_CTL_NEWADDR 0x00010004
64 CONSTANT: VFS_CTL_TIMEO 0x00010005
65 CONSTANT: VFS_CTL_NOLOCKS 0x00010006
69 { vq_spare uint32_t[31] } ;
71 CONSTANT: VQ_NOTRESP 0x0001
72 CONSTANT: VQ_NEEDAUTH 0x0002
73 CONSTANT: VQ_LOWDISK 0x0004
74 CONSTANT: VQ_MOUNT 0x0008
75 CONSTANT: VQ_UNMOUNT 0x0010
76 CONSTANT: VQ_DEAD 0x0020
77 CONSTANT: VQ_ASSIST 0x0040
78 CONSTANT: VQ_NOTRESPLOCK 0x0080
79 CONSTANT: VQ_UPDATE 0x0100
80 CONSTANT: VQ_FLAG0200 0x0200
81 CONSTANT: VQ_FLAG0400 0x0400
82 CONSTANT: VQ_FLAG0800 0x0800
83 CONSTANT: VQ_FLAG1000 0x1000
84 CONSTANT: VQ_FLAG2000 0x2000
85 CONSTANT: VQ_FLAG4000 0x4000
86 CONSTANT: VQ_FLAG8000 0x8000
88 CONSTANT: NFSV4_MAX_FH_SIZE 128
89 CONSTANT: NFSV3_MAX_FH_SIZE 64
90 CONSTANT: NFSV2_MAX_FH_SIZE 32
91 ALIAS: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
93 CONSTANT: MFSNAMELEN 15
95 CONSTANT: MFSTYPENAMELEN 16
103 { f_blocks uint64_t }
105 { f_bavail uint64_t }
112 { f_fssubtype uint32_t }
113 { f_fstypename { char MFSTYPENAMELEN } }
114 { f_mntonname { char MAXPATHLEN } }
115 { f_mntfromname { char MAXPATHLEN } }
116 { f_reserved uint32_t[8] } ;
118 FUNCTION: int statfs64 ( c-string path, statfs64* buf ) ;
119 FUNCTION: int getmntinfo64 ( statfs64** mntbufp, int flags ) ;