#include <sys/attr.h>
sys/attr.h
macroFSOPT_NOFOLLOW
#define FSOPT_NOFOLLOW 0x00000001
macroFSOPT_NOINMEMUPDATE
#define FSOPT_NOINMEMUPDATE 0x00000002
macroFSOPT_REPORT_FULLSIZE
#define FSOPT_REPORT_FULLSIZE 0x00000004
macroFSOPT_PACK_INVAL_ATTRS
The following option only valid when requesting ATTR_CMN_RETURNED_ATTRS
#define FSOPT_PACK_INVAL_ATTRS 0x00000008
macroFSOPT_ATTR_CMN_EXTENDED
#define FSOPT_ATTR_CMN_EXTENDED 0x00000020
macroFSOPT_RETURN_REALDEV
#define FSOPT_RETURN_REALDEV 0x00000200
macroFSOPT_NOFOLLOW_ANY
#define FSOPT_NOFOLLOW_ANY 0x00000800
macroFSOPT_RESOLVE_BENEATH
#define FSOPT_RESOLVE_BENEATH 0x00001000
macroFSOPT_UNIQUE
#define FSOPT_UNIQUE 0x00002000
macroSEARCHFS_MAX_SEARCHPARMS
we currently aren't anywhere near this amount for a valid
fssearchblock.sizeofsearchparams1 or fssearchblock.sizeofsearchparams2
but we put a sanity check in to avoid abuse of the value passed in from
user land.
#define SEARCHFS_MAX_SEARCHPARMS 4096
typedeftext_encoding_t
typedef u_int32_t text_encoding_t
typedeffsobj_type_t
typedef u_int32_t fsobj_type_t
typedeffsobj_tag_t
typedef u_int32_t fsobj_tag_t
typedeffsfile_type_t
typedef u_int32_t fsfile_type_t
typedefattrgroup_t
typedef u_int32_t attrgroup_t
structattrlist
| u_short | bitmapcount | number of attr. bit sets in list (should be 5) |
| u_int16_t | reserved | (to maintain 4-byte alignment) |
| attrgroup_t | commonattr | common attribute group |
| attrgroup_t | volattr | Volume attribute group |
| attrgroup_t | dirattr | directory attribute group |
| attrgroup_t | fileattr | file attribute group |
| attrgroup_t | forkattr | fork attribute group |
macroATTR_BIT_MAP_COUNT
#define ATTR_BIT_MAP_COUNT 5
structattribute_set
| attrgroup_t | commonattr | common attribute group |
| attrgroup_t | volattr | Volume attribute group |
| attrgroup_t | dirattr | directory attribute group |
| attrgroup_t | fileattr | file attribute group |
| attrgroup_t | forkattr | fork attribute group |
typedefattribute_set_t
typedef struct attribute_set attribute_set_t;
macroATTRIBUTE_SET_INIT
#define ATTRIBUTE_SET_INIT(a) do {(a)->commonattr = (a)->volattr = (a)->dirattr = (a)->fileattr = (a)->forkattr = 0; } while(0)structattrreference
| int32_t | attr_dataoffset | |
| u_int32_t | attr_length |
typedefattrreference_t
typedef struct attrreference attrreference_t;
structdiskextent
| u_int32_t | startblock | first block allocated |
| u_int32_t | blockcount | number of blocks allocated |
typedefextentrecord
typedef struct diskextent extentrecord[8]
typedefvol_capabilities_set_t
typedef u_int32_t vol_capabilities_set_t[4]
macroVOL_CAPABILITIES_FORMAT
#define VOL_CAPABILITIES_FORMAT 0
macroVOL_CAPABILITIES_INTERFACES
#define VOL_CAPABILITIES_INTERFACES 1
macroVOL_CAPABILITIES_RESERVED1
#define VOL_CAPABILITIES_RESERVED1 2
macroVOL_CAPABILITIES_RESERVED2
#define VOL_CAPABILITIES_RESERVED2 3
structvol_capabilities_attr
| vol_capabilities_set_t | capabilities | |
| vol_capabilities_set_t | valid |
typedefvol_capabilities_attr_t
typedef struct vol_capabilities_attr vol_capabilities_attr_t;
macroATTR_MAX_BUFFER_LONGPATHS
Max size of attribute buffer if IOPOL_TYPE_VFS_SUPPORT_LONG_PATHS is enabled
#define ATTR_MAX_BUFFER_LONGPATHS (ATTR_MAX_BUFFER - MAXPATHLEN + MAXLONGPATHLEN)
macroVOL_CAP_FMT_PERSISTENTOBJECTIDS
VOL_CAP_FMT_PERSISTENTOBJECTIDS: When set, the volume has object IDs
that are persistent (retain their values even when the volume is
unmounted and remounted), and a file or directory can be looked up
by ID. Volumes that support VolFS and can support Carbon File ID
references should set this bit.
VOL_CAP_FMT_SYMBOLICLINKS: When set, the volume supports symbolic
links. The symlink(), readlink(), and lstat() calls all use this
symbolic link.
VOL_CAP_FMT_HARDLINKS: When set, the volume supports hard links.
The link() call creates hard links.
VOL_CAP_FMT_JOURNAL: When set, the volume is capable of supporting
a journal used to speed recovery in case of unplanned shutdown
(such as a power outage or crash). This bit does not necessarily
mean the volume is actively using a journal for recovery.
VOL_CAP_FMT_JOURNAL_ACTIVE: When set, the volume is currently using
a journal for use in speeding recovery after an unplanned shutdown.
This bit can be set only if VOL_CAP_FMT_JOURNAL is also set.
VOL_CAP_FMT_NO_ROOT_TIMES: When set, the volume format does not
store reliable times for the root directory, so you should not
depend on them to detect changes, etc.
VOL_CAP_FMT_SPARSE_FILES: When set, the volume supports sparse files.
That is, files which can have "holes" that have never been written
to, and are not allocated on disk. Sparse files may have an
allocated size that is less than the file's logical length.
VOL_CAP_FMT_ZERO_RUNS: For security reasons, parts of a file (runs)
that have never been written to must appear to contain zeroes. When
this bit is set, the volume keeps track of allocated but unwritten
runs of a file so that it can substitute zeroes without actually
writing zeroes to the media. This provides performance similar to
sparse files, but not the space savings.
VOL_CAP_FMT_CASE_SENSITIVE: When set, file and directory names are
case sensitive (upper and lower case are different). When clear,
an upper case character is equivalent to a lower case character,
and you can't have two names that differ solely in the case of
the characters.
VOL_CAP_FMT_CASE_PRESERVING: When set, file and directory names
preserve the difference between upper and lower case. If clear,
the volume may change the case of some characters (typically
making them all upper or all lower case). A volume that sets
VOL_CAP_FMT_CASE_SENSITIVE should also set VOL_CAP_FMT_CASE_PRESERVING.
VOL_CAP_FMT_FAST_STATFS: This bit is used as a hint to upper layers
(especially Carbon) that statfs() is fast enough that its results
need not be cached by those upper layers. A volume that caches
the statfs information in its in-memory structures should set this bit.
A volume that must always read from disk or always perform a network
transaction should not set this bit.
VOL_CAP_FMT_2TB_FILESIZE: If this bit is set the volume format supports
file sizes larger than 4GB, and potentially up to 2TB; it does not
indicate whether the filesystem supports files larger than that.
VOL_CAP_FMT_OPENDENYMODES: When set, the volume supports open deny
modes (e.g. "open for read write, deny write"; effectively, mandatory
file locking based on open modes).
VOL_CAP_FMT_HIDDEN_FILES: When set, the volume supports the UF_HIDDEN
file flag, and the UF_HIDDEN flag is mapped to that volume's native
"hidden" or "invisible" bit (which may be the invisible bit from the
Finder Info extended attribute).
VOL_CAP_FMT_PATH_FROM_ID: When set, the volume supports the ability
to derive a pathname to the root of the file system given only the
id of an object. This also implies that object ids on this file
system are persistent and not recycled. This is a very specialized
capability and it is assumed that most file systems will not support
it. Its use is for legacy non-posix APIs like ResolveFileIDRef.
VOL_CAP_FMT_NO_VOLUME_SIZES: When set, the volume does not support
returning values for total data blocks, available blocks, or free blocks
(as in f_blocks, f_bavail, or f_bfree in "struct statfs"). Historically,
those values were set to 0xFFFFFFFF for volumes that did not support them.
VOL_CAP_FMT_DECMPFS_COMPRESSION: When set, the volume supports transparent
decompression of compressed files using decmpfs.
VOL_CAP_FMT_64BIT_OBJECT_IDS: When set, the volume uses object IDs that
are 64-bit. This means that ATTR_CMN_FILEID and ATTR_CMN_PARENTID are the
only legitimate attributes for obtaining object IDs from this volume and the
32-bit fid_objno fields of the fsobj_id_t returned by ATTR_CMN_OBJID,
ATTR_CMN_OBJPERMID, and ATTR_CMN_PAROBJID are undefined.
VOL_CAP_FMT_DIR_HARDLINKS: When set, the volume supports directory
hard links.
VOL_CAP_FMT_DOCUMENT_ID: When set, the volume supports document IDs
(an ID which persists across object ID changes) for document revisions.
VOL_CAP_FMT_WRITE_GENERATION_COUNT: When set, the volume supports write
generation counts (a count of how many times an object has been modified)
VOL_CAP_FMT_NO_IMMUTABLE_FILES: When set, the volume does not support
setting the UF_IMMUTABLE flag.
VOL_CAP_FMT_NO_PERMISSIONS: When set, the volume does not support setting
permissions.
VOL_CAP_FMT_SHARED_SPACE: When set, the volume supports sharing space with
other filesystems i.e. multiple logical filesystems can exist in the same
"partition". An implication of this is that the filesystem which sets
this capability treats waitfor arguments to VFS_SYNC as bit flags.
VOL_CAP_FMT_VOL_GROUPS: When set, this volume is part of a volume-group
that implies multiple volumes must be mounted in order to boot and root the
operating system. Typically, this means a read-only system volume and a
writable data volume.
VOL_CAP_FMT_SEALED: When set, this volume is cryptographically sealed.
Any modifications to volume data or metadata will be detected and may
render the volume unusable.
VOL_CAP_FMT_CLONE_MAPPING: When set, this volume supports full clone tracking.
See ATTR_CMNEXT_CLONE_REFCNT and ATTR_CMNEXT_CLONEID for more details.
Other features like extended directory statistics, for fast directory sizing,
and attribution tags may be supported as well.
See VOL_CAP_INT_ATTRIBUTION_TAG for more details related to tagging.
#define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001
macroVOL_CAP_FMT_SYMBOLICLINKS
#define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002
macroVOL_CAP_FMT_HARDLINKS
#define VOL_CAP_FMT_HARDLINKS 0x00000004
macroVOL_CAP_FMT_JOURNAL
#define VOL_CAP_FMT_JOURNAL 0x00000008
macroVOL_CAP_FMT_JOURNAL_ACTIVE
#define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010
macroVOL_CAP_FMT_NO_ROOT_TIMES
#define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020
macroVOL_CAP_FMT_SPARSE_FILES
#define VOL_CAP_FMT_SPARSE_FILES 0x00000040
macroVOL_CAP_FMT_ZERO_RUNS
#define VOL_CAP_FMT_ZERO_RUNS 0x00000080
macroVOL_CAP_FMT_CASE_SENSITIVE
#define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100
macroVOL_CAP_FMT_CASE_PRESERVING
#define VOL_CAP_FMT_CASE_PRESERVING 0x00000200
macroVOL_CAP_FMT_FAST_STATFS
#define VOL_CAP_FMT_FAST_STATFS 0x00000400
macroVOL_CAP_FMT_2TB_FILESIZE
#define VOL_CAP_FMT_2TB_FILESIZE 0x00000800
macroVOL_CAP_FMT_OPENDENYMODES
#define VOL_CAP_FMT_OPENDENYMODES 0x00001000
macroVOL_CAP_FMT_HIDDEN_FILES
#define VOL_CAP_FMT_HIDDEN_FILES 0x00002000
macroVOL_CAP_FMT_PATH_FROM_ID
#define VOL_CAP_FMT_PATH_FROM_ID 0x00004000
macroVOL_CAP_FMT_NO_VOLUME_SIZES
#define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000
macroVOL_CAP_FMT_DECMPFS_COMPRESSION
#define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000
macroVOL_CAP_FMT_64BIT_OBJECT_IDS
#define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000
macroVOL_CAP_FMT_DIR_HARDLINKS
#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000
macroVOL_CAP_FMT_DOCUMENT_ID
#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000
macroVOL_CAP_FMT_WRITE_GENERATION_COUNT
#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000
macroVOL_CAP_FMT_NO_IMMUTABLE_FILES
#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000
macroVOL_CAP_FMT_NO_PERMISSIONS
#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000
macroVOL_CAP_FMT_SHARED_SPACE
#define VOL_CAP_FMT_SHARED_SPACE 0x00800000
macroVOL_CAP_FMT_VOL_GROUPS
#define VOL_CAP_FMT_VOL_GROUPS 0x01000000
macroVOL_CAP_FMT_SEALED
#define VOL_CAP_FMT_SEALED 0x02000000
macroVOL_CAP_FMT_CLONE_MAPPING
#define VOL_CAP_FMT_CLONE_MAPPING 0x04000000
macroVOL_CAP_INT_SEARCHFS
VOL_CAP_INT_SEARCHFS: When set, the volume implements the
searchfs() system call (the vnop_searchfs vnode operation).
VOL_CAP_INT_ATTRLIST: When set, the volume implements the
getattrlist() and setattrlist() system calls (vnop_getattrlist
and vnop_setattrlist vnode operations) for the volume, files,
and directories. The volume may or may not implement the
readdirattr() system call. XXX Is there any minimum set
of attributes that should be supported? To determine the
set of supported attributes, get the ATTR_VOL_ATTRIBUTES
attribute of the volume.
VOL_CAP_INT_NFSEXPORT: When set, the volume implements exporting
of NFS volumes.
VOL_CAP_INT_READDIRATTR: When set, the volume implements the
readdirattr() system call (vnop_readdirattr vnode operation).
VOL_CAP_INT_EXCHANGEDATA: When set, the volume implements the
exchangedata() system call (VNOP_EXCHANGE vnode operation).
VOL_CAP_INT_COPYFILE: When set, the volume implements the
VOP_COPYFILE vnode operation. (XXX There should be a copyfile()
system call in <unistd.h>.)
VOL_CAP_INT_ALLOCATE: When set, the volume implements the
VNOP_ALLOCATE vnode operation, which means it implements the
F_PREALLOCATE selector of fcntl(2).
VOL_CAP_INT_VOL_RENAME: When set, the volume implements the
ATTR_VOL_NAME attribute for both getattrlist() and setattrlist().
The volume can be renamed by setting ATTR_VOL_NAME with setattrlist().
VOL_CAP_INT_ADVLOCK: When set, the volume implements POSIX style
byte range locks via vnop_advlock (accessible from fcntl(2)).
VOL_CAP_INT_FLOCK: When set, the volume implements whole-file flock(2)
style locks via vnop_advlock. This includes the O_EXLOCK and O_SHLOCK
flags of the open(2) call.
VOL_CAP_INT_EXTENDED_SECURITY: When set, the volume implements
extended security (ACLs).
VOL_CAP_INT_USERACCESS: When set, the volume supports the
ATTR_CMN_USERACCESS attribute (used to get the user's access
mode to the file).
VOL_CAP_INT_MANLOCK: When set, the volume supports AFP-style
mandatory byte range locks via an ioctl().
VOL_CAP_INT_EXTENDED_ATTR: When set, the volume implements
native extended attribues.
VOL_CAP_INT_NAMEDSTREAMS: When set, the volume supports
native named streams.
VOL_CAP_INT_CLONE: When set, the volume supports clones.
VOL_CAP_INT_SNAPSHOT: When set, the volume supports snapshots.
VOL_CAP_INT_RENAME_SWAP: When set, the volume supports swapping
file system objects.
VOL_CAP_INT_RENAME_EXCL: When set, the volume supports an
exclusive rename operation.
VOL_CAP_INT_RENAME_OPENFAIL: When set, the volume may fail rename
operations on files that are open.
VOL_CAP_INT_RENAME_SECLUDE: When set, the volume supports a
seclude rename operation.
VOL_CAP_INT_ATTRIBUTION_TAG: When set, the volume supports establishing
an owner relationship between a file (excluding small files) and a process
on the first read/write/truncate/clone operation.
VOL_CAP_INT_PUNCHHOLE: When set, the volume supports the F_PUNCHHOLE
fcntl.
VOL_CAP_INT_BARRIERFSYNC: When set, the volume supports the F_BARRIERFSYNC
fcntl.
#define VOL_CAP_INT_SEARCHFS 0x00000001
macroVOL_CAP_INT_ATTRLIST
#define VOL_CAP_INT_ATTRLIST 0x00000002
macroVOL_CAP_INT_NFSEXPORT
#define VOL_CAP_INT_NFSEXPORT 0x00000004
macroVOL_CAP_INT_READDIRATTR
#define VOL_CAP_INT_READDIRATTR 0x00000008
macroVOL_CAP_INT_EXCHANGEDATA
#define VOL_CAP_INT_EXCHANGEDATA 0x00000010
macroVOL_CAP_INT_COPYFILE
#define VOL_CAP_INT_COPYFILE 0x00000020
macroVOL_CAP_INT_ALLOCATE
#define VOL_CAP_INT_ALLOCATE 0x00000040
macroVOL_CAP_INT_VOL_RENAME
#define VOL_CAP_INT_VOL_RENAME 0x00000080
macroVOL_CAP_INT_ADVLOCK
#define VOL_CAP_INT_ADVLOCK 0x00000100
macroVOL_CAP_INT_FLOCK
#define VOL_CAP_INT_FLOCK 0x00000200
macroVOL_CAP_INT_EXTENDED_SECURITY
#define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400
macroVOL_CAP_INT_USERACCESS
#define VOL_CAP_INT_USERACCESS 0x00000800
macroVOL_CAP_INT_MANLOCK
#define VOL_CAP_INT_MANLOCK 0x00001000
macroVOL_CAP_INT_NAMEDSTREAMS
#define VOL_CAP_INT_NAMEDSTREAMS 0x00002000
macroVOL_CAP_INT_EXTENDED_ATTR
#define VOL_CAP_INT_EXTENDED_ATTR 0x00004000
macroVOL_CAP_INT_CLONE
#define VOL_CAP_INT_CLONE 0x00010000
macroVOL_CAP_INT_SNAPSHOT
#define VOL_CAP_INT_SNAPSHOT 0x00020000
macroVOL_CAP_INT_RENAME_SWAP
#define VOL_CAP_INT_RENAME_SWAP 0x00040000
macroVOL_CAP_INT_RENAME_EXCL
#define VOL_CAP_INT_RENAME_EXCL 0x00080000
macroVOL_CAP_INT_RENAME_OPENFAIL
#define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000
macroVOL_CAP_INT_RENAME_SECLUDE
#define VOL_CAP_INT_RENAME_SECLUDE 0x00200000
macroVOL_CAP_INT_ATTRIBUTION_TAG
#define VOL_CAP_INT_ATTRIBUTION_TAG 0x00400000
macroVOL_CAP_INT_PUNCHHOLE
#define VOL_CAP_INT_PUNCHHOLE 0x00800000
macroVOL_CAP_INT_BARRIERFSYNC
#define VOL_CAP_INT_BARRIERFSYNC 0x01000000
structvol_attributes_attr
| attribute_set_t | validattr | |
| attribute_set_t | nativeattr |
typedefvol_attributes_attr_t
typedef struct vol_attributes_attr vol_attributes_attr_t;
macroATTR_CMN_NAME
#define ATTR_CMN_NAME 0x00000001
macroATTR_CMN_DEVID
#define ATTR_CMN_DEVID 0x00000002
macroATTR_CMN_FSID
#define ATTR_CMN_FSID 0x00000004
macroATTR_CMN_OBJTYPE
#define ATTR_CMN_OBJTYPE 0x00000008
macroATTR_CMN_OBJTAG
#define ATTR_CMN_OBJTAG 0x00000010
macroATTR_CMN_OBJID
#define ATTR_CMN_OBJID 0x00000020
macroATTR_CMN_OBJPERMANENTID
#define ATTR_CMN_OBJPERMANENTID 0x00000040
macroATTR_CMN_PAROBJID
#define ATTR_CMN_PAROBJID 0x00000080
macroATTR_CMN_SCRIPT
#define ATTR_CMN_SCRIPT 0x00000100
macroATTR_CMN_CRTIME
#define ATTR_CMN_CRTIME 0x00000200
macroATTR_CMN_MODTIME
#define ATTR_CMN_MODTIME 0x00000400
macroATTR_CMN_CHGTIME
#define ATTR_CMN_CHGTIME 0x00000800
macroATTR_CMN_ACCTIME
#define ATTR_CMN_ACCTIME 0x00001000
macroATTR_CMN_BKUPTIME
#define ATTR_CMN_BKUPTIME 0x00002000
macroATTR_CMN_FNDRINFO
#define ATTR_CMN_FNDRINFO 0x00004000
macroATTR_CMN_OWNERID
#define ATTR_CMN_OWNERID 0x00008000
macroATTR_CMN_GRPID
#define ATTR_CMN_GRPID 0x00010000
macroATTR_CMN_ACCESSMASK
#define ATTR_CMN_ACCESSMASK 0x00020000
macroATTR_CMN_FLAGS
#define ATTR_CMN_FLAGS 0x00040000
macroATTR_CMN_GEN_COUNT
#define ATTR_CMN_GEN_COUNT 0x00080000
macroATTR_CMN_DOCUMENT_ID
#define ATTR_CMN_DOCUMENT_ID 0x00100000
macroATTR_CMN_USERACCESS
#define ATTR_CMN_USERACCESS 0x00200000
macroATTR_CMN_EXTENDED_SECURITY
#define ATTR_CMN_EXTENDED_SECURITY 0x00400000
macroATTR_CMN_UUID
#define ATTR_CMN_UUID 0x00800000
macroATTR_CMN_GRPUUID
#define ATTR_CMN_GRPUUID 0x01000000
macroATTR_CMN_FILEID
#define ATTR_CMN_FILEID 0x02000000
macroATTR_CMN_PARENTID
#define ATTR_CMN_PARENTID 0x04000000
macroATTR_CMN_FULLPATH
#define ATTR_CMN_FULLPATH 0x08000000
macroATTR_CMN_ADDEDTIME
#define ATTR_CMN_ADDEDTIME 0x10000000
macroATTR_CMN_ERROR
#define ATTR_CMN_ERROR 0x20000000
macroATTR_CMN_DATA_PROTECT_FLAGS
#define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000
macroATTR_CMN_RETURNED_ATTRS
ATTR_CMN_RETURNED_ATTRS is only valid with getattrlist(2) and
getattrlistbulk(2). It is always the first attribute in the return buffer.
#define ATTR_CMN_RETURNED_ATTRS 0x80000000
macroATTR_CMN_VALIDMASK
#define ATTR_CMN_VALIDMASK 0xFFFFFFFF
macroATTR_CMN_SETMASK
The settable ATTR_CMN_* attributes include the following:
ATTR_CMN_SCRIPT
ATTR_CMN_CRTIME
ATTR_CMN_MODTIME
ATTR_CMN_CHGTIME
ATTR_CMN_ACCTIME
ATTR_CMN_BKUPTIME
ATTR_CMN_FNDRINFO
ATTR_CMN_OWNERID
ATTR_CMN_GRPID
ATTR_CMN_ACCESSMASK
ATTR_CMN_FLAGS
ATTR_CMN_EXTENDED_SECURITY
ATTR_CMN_UUID
ATTR_CMN_GRPUUID
ATTR_CMN_DATA_PROTECT_FLAGS
#define ATTR_CMN_SETMASK 0x51C7FF00
macroATTR_CMN_VOLSETMASK
#define ATTR_CMN_VOLSETMASK 0x00006700
macroATTR_VOL_FSTYPE
#define ATTR_VOL_FSTYPE 0x00000001
macroATTR_VOL_SIGNATURE
#define ATTR_VOL_SIGNATURE 0x00000002
macroATTR_VOL_SIZE
#define ATTR_VOL_SIZE 0x00000004
macroATTR_VOL_SPACEFREE
#define ATTR_VOL_SPACEFREE 0x00000008
macroATTR_VOL_SPACEAVAIL
#define ATTR_VOL_SPACEAVAIL 0x00000010
macroATTR_VOL_MINALLOCATION
#define ATTR_VOL_MINALLOCATION 0x00000020
macroATTR_VOL_ALLOCATIONCLUMP
#define ATTR_VOL_ALLOCATIONCLUMP 0x00000040
macroATTR_VOL_IOBLOCKSIZE
#define ATTR_VOL_IOBLOCKSIZE 0x00000080
macroATTR_VOL_OBJCOUNT
#define ATTR_VOL_OBJCOUNT 0x00000100
macroATTR_VOL_FILECOUNT
#define ATTR_VOL_FILECOUNT 0x00000200
macroATTR_VOL_DIRCOUNT
#define ATTR_VOL_DIRCOUNT 0x00000400
macroATTR_VOL_MAXOBJCOUNT
#define ATTR_VOL_MAXOBJCOUNT 0x00000800
macroATTR_VOL_MOUNTPOINT
#define ATTR_VOL_MOUNTPOINT 0x00001000
macroATTR_VOL_NAME
#define ATTR_VOL_NAME 0x00002000
macroATTR_VOL_MOUNTFLAGS
#define ATTR_VOL_MOUNTFLAGS 0x00004000
macroATTR_VOL_MOUNTEDDEVICE
#define ATTR_VOL_MOUNTEDDEVICE 0x00008000
macroATTR_VOL_ENCODINGSUSED
#define ATTR_VOL_ENCODINGSUSED 0x00010000
macroATTR_VOL_CAPABILITIES
#define ATTR_VOL_CAPABILITIES 0x00020000
macroATTR_VOL_UUID
#define ATTR_VOL_UUID 0x00040000
macroATTR_VOL_MOUNTEXTFLAGS
#define ATTR_VOL_MOUNTEXTFLAGS 0x00080000
macroATTR_VOL_FSTYPENAME
#define ATTR_VOL_FSTYPENAME 0x00100000
macroATTR_VOL_FSSUBTYPE
#define ATTR_VOL_FSSUBTYPE 0x00200000
macroATTR_VOL_OWNER
#define ATTR_VOL_OWNER 0x00400000
macroATTR_VOL_SPACEUSED
#define ATTR_VOL_SPACEUSED 0x00800000
macroATTR_VOL_QUOTA_SIZE
#define ATTR_VOL_QUOTA_SIZE 0x10000000
macroATTR_VOL_RESERVED_SIZE
#define ATTR_VOL_RESERVED_SIZE 0x20000000
macroATTR_VOL_ATTRIBUTES
#define ATTR_VOL_ATTRIBUTES 0x40000000
macroATTR_VOL_INFO
#define ATTR_VOL_INFO 0x80000000
macroATTR_VOL_VALIDMASK
#define ATTR_VOL_VALIDMASK 0xF0FFFFFF
macroATTR_VOL_SETMASK
The list of settable ATTR_VOL_* attributes include the following:
ATTR_VOL_NAME
ATTR_VOL_INFO
#define ATTR_VOL_SETMASK 0x80002000
macroATTR_DIR_ENTRYCOUNT
#define ATTR_DIR_ENTRYCOUNT 0x00000002
macroATTR_DIR_MOUNTSTATUS
#define ATTR_DIR_MOUNTSTATUS 0x00000004
macroATTR_DIR_ALLOCSIZE
#define ATTR_DIR_ALLOCSIZE 0x00000008
macroATTR_DIR_IOBLOCKSIZE
#define ATTR_DIR_IOBLOCKSIZE 0x00000010
macroATTR_DIR_DATALENGTH
#define ATTR_DIR_DATALENGTH 0x00000020
macroDIR_MNTSTATUS_TRIGGER
#define DIR_MNTSTATUS_TRIGGER 0x00000002
macroATTR_DIR_VALIDMASK
#define ATTR_DIR_VALIDMASK 0x0000003f
macroATTR_DIR_SETMASK
#define ATTR_DIR_SETMASK 0x00000000
macroATTR_FILE_LINKCOUNT
#define ATTR_FILE_LINKCOUNT 0x00000001
macroATTR_FILE_TOTALSIZE
#define ATTR_FILE_TOTALSIZE 0x00000002
macroATTR_FILE_ALLOCSIZE
#define ATTR_FILE_ALLOCSIZE 0x00000004
macroATTR_FILE_IOBLOCKSIZE
#define ATTR_FILE_IOBLOCKSIZE 0x00000008
macroATTR_FILE_DEVTYPE
#define ATTR_FILE_DEVTYPE 0x00000020
macroATTR_FILE_FORKCOUNT
#define ATTR_FILE_FORKCOUNT 0x00000080
macroATTR_FILE_FORKLIST
#define ATTR_FILE_FORKLIST 0x00000100
macroATTR_FILE_DATALENGTH
#define ATTR_FILE_DATALENGTH 0x00000200
macroATTR_FILE_DATAALLOCSIZE
#define ATTR_FILE_DATAALLOCSIZE 0x00000400
macroATTR_FILE_RSRCLENGTH
#define ATTR_FILE_RSRCLENGTH 0x00001000
macroATTR_FILE_RSRCALLOCSIZE
#define ATTR_FILE_RSRCALLOCSIZE 0x00002000
macroATTR_FILE_VALIDMASK
#define ATTR_FILE_VALIDMASK 0x000037FF
macroATTR_FILE_SETMASK
Settable ATTR_FILE_* attributes include:
ATTR_FILE_DEVTYPE
#define ATTR_FILE_SETMASK 0x00000020
macroATTR_CMNEXT_RELPATH
CMNEXT attributes extend the common attributes, but in the forkattr field
#define ATTR_CMNEXT_RELPATH 0x00000004
macroATTR_CMNEXT_PRIVATESIZE
#define ATTR_CMNEXT_PRIVATESIZE 0x00000008
macroATTR_CMNEXT_LINKID
#define ATTR_CMNEXT_LINKID 0x00000010
macroATTR_CMNEXT_NOFIRMLINKPATH
#define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020
macroATTR_CMNEXT_REALDEVID
#define ATTR_CMNEXT_REALDEVID 0x00000040
macroATTR_CMNEXT_REALFSID
#define ATTR_CMNEXT_REALFSID 0x00000080
macroATTR_CMNEXT_CLONEID
#define ATTR_CMNEXT_CLONEID 0x00000100
macroATTR_CMNEXT_EXT_FLAGS
#define ATTR_CMNEXT_EXT_FLAGS 0x00000200
macroATTR_CMNEXT_RECURSIVE_GENCOUNT
#define ATTR_CMNEXT_RECURSIVE_GENCOUNT 0x00000400
macroATTR_CMNEXT_ATTRIBUTION_TAG
#define ATTR_CMNEXT_ATTRIBUTION_TAG 0x00000800
macroATTR_CMNEXT_CLONE_REFCNT
#define ATTR_CMNEXT_CLONE_REFCNT 0x00001000
macroATTR_CMNEXT_VALIDMASK
#define ATTR_CMNEXT_VALIDMASK 0x00001ffc
macroATTR_CMNEXT_SETMASK
#define ATTR_CMNEXT_SETMASK 0x00000000
macroATTR_FORK_ALLOCSIZE
#define ATTR_FORK_ALLOCSIZE 0x00000002
macroATTR_FORK_RESERVED
#define ATTR_FORK_RESERVED 0xffffffff
macroATTR_FORK_VALIDMASK
#define ATTR_FORK_VALIDMASK 0x00000003
macroATTR_FORK_SETMASK
#define ATTR_FORK_SETMASK 0x00000000
macroATTR_CMN_NAMEDATTRCOUNT
Obsolete, implemented, not supported
#define ATTR_CMN_NAMEDATTRCOUNT 0x00080000
macroATTR_CMN_NAMEDATTRLIST
#define ATTR_CMN_NAMEDATTRLIST 0x00100000
macroATTR_BULK_REQUIRED
Required attributes for getattrlistbulk(2)
#define ATTR_BULK_REQUIRED (ATTR_CMN_NAME | ATTR_CMN_RETURNED_ATTRS)
macroSRCHFS_MATCHPARTIALNAMES
#define SRCHFS_MATCHPARTIALNAMES 0x00000002
macroSRCHFS_MATCHDIRS
#define SRCHFS_MATCHDIRS 0x00000004
macroSRCHFS_MATCHFILES
#define SRCHFS_MATCHFILES 0x00000008
macroSRCHFS_SKIPLINKS
#define SRCHFS_SKIPLINKS 0x00000010
macroSRCHFS_SKIPINVISIBLE
#define SRCHFS_SKIPINVISIBLE 0x00000020
macroSRCHFS_SKIPPACKAGES
#define SRCHFS_SKIPPACKAGES 0x00000040
macroSRCHFS_SKIPINAPPROPRIATE
#define SRCHFS_SKIPINAPPROPRIATE 0x00000080
macroSRCHFS_NOFOLLOW
#define SRCHFS_NOFOLLOW 0x00000100
macroSRCHFS_NOFOLLOW_ANY
#define SRCHFS_NOFOLLOW_ANY 0x00000200
macroSRCHFS_NEGATEPARAMS
#define SRCHFS_NEGATEPARAMS 0x80000000
macroSRCHFS_VALIDOPTIONSMASK
#define SRCHFS_VALIDOPTIONSMASK 0x800003FF
structfssearchblock
| struct attrlist * | returnattrs | |
| void * | returnbuffer | |
| size_t | returnbuffersize | |
| u_long | maxmatches | |
| struct timeval | timelimit | |
| void * | searchparams1 | |
| size_t | sizeofsearchparams1 | |
| void * | searchparams2 | |
| size_t | sizeofsearchparams2 | |
| struct attrlist | searchattrs |
structsearchstate
| uint32_t | ss_union_flags | for SRCHFS_START |
| uint32_t | ss_union_layer | 0 = top |
| u_char[548] | ss_fsstate | fs private |