X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/3e170ce000f1506b7b5d2c5c7faec85ceabb573d..5ba3f43ea354af8ad55bea84372a2bc834d8757c:/bsd/sys/attr.h diff --git a/bsd/sys/attr.h b/bsd/sys/attr.h index ebfeb6091..45540a9aa 100644 --- a/bsd/sys/attr.h +++ b/bsd/sys/attr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2010 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2016 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -54,6 +54,9 @@ #endif #define FSOPT_ATTR_CMN_EXTENDED 0x00000020 +#ifdef PRIVATE +#define FSOPT_LIST_SNAPSHOT 0x00000040 +#endif /* PRIVATE */ /* we currently aren't anywhere near this amount for a valid * fssearchblock.sizeofsearchparams1 or fssearchblock.sizeofsearchparams2 @@ -72,10 +75,7 @@ typedef u_int32_t fsfile_type_t; typedef u_int32_t fsvolid_t; -typedef struct fsobj_id { - u_int32_t fid_objno; - u_int32_t fid_generation; -} fsobj_id_t; +#include /* file object id type */ typedef u_int32_t attrgroup_t; @@ -220,6 +220,21 @@ typedef struct vol_capabilities_attr { * 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. */ #define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001 #define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002 @@ -239,6 +254,11 @@ typedef struct vol_capabilities_attr { #define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000 #define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000 #define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000 +#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000 +#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000 +#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000 +#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000 +#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000 /* @@ -297,6 +317,17 @@ typedef struct vol_capabilities_attr { * * 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. + * */ #define VOL_CAP_INT_SEARCHFS 0x00000001 #define VOL_CAP_INT_ATTRLIST 0x00000002 @@ -317,6 +348,10 @@ typedef struct vol_capabilities_attr { /* Volume supports kqueue notifications for remote events */ #define VOL_CAP_INT_REMOTE_EVENT 0x00008000 #endif /* PRIVATE */ +#define VOL_CAP_INT_CLONE 0x00010000 +#define VOL_CAP_INT_SNAPSHOT 0x00020000 +#define VOL_CAP_INT_RENAME_SWAP 0x00040000 +#define VOL_CAP_INT_RENAME_EXCL 0x00080000 typedef struct vol_attributes_attr { attribute_set_t validattr; @@ -393,8 +428,10 @@ typedef struct vol_attributes_attr { * ATTR_CMN_UUID * * ATTR_CMN_GRPUUID + * + * ATTR_CMN_DATA_PROTECT_FLAGS */ -#define ATTR_CMN_SETMASK 0x01C7FF00 +#define ATTR_CMN_SETMASK 0x51C7FF00 #define ATTR_CMN_VOLSETMASK 0x00006700 #define ATTR_VOL_FSTYPE 0x00000001 @@ -416,10 +453,12 @@ typedef struct vol_attributes_attr { #define ATTR_VOL_ENCODINGSUSED 0x00010000 #define ATTR_VOL_CAPABILITIES 0x00020000 #define ATTR_VOL_UUID 0x00040000 +#define ATTR_VOL_QUOTA_SIZE 0x10000000 +#define ATTR_VOL_RESERVED_SIZE 0x20000000 #define ATTR_VOL_ATTRIBUTES 0x40000000 #define ATTR_VOL_INFO 0x80000000 -#define ATTR_VOL_VALIDMASK 0xC007FFFF +#define ATTR_VOL_VALIDMASK 0xF007FFFF /* * The list of settable ATTR_VOL_* attributes include the following: @@ -433,11 +472,15 @@ typedef struct vol_attributes_attr { #define ATTR_DIR_LINKCOUNT 0x00000001 #define ATTR_DIR_ENTRYCOUNT 0x00000002 #define ATTR_DIR_MOUNTSTATUS 0x00000004 +#define ATTR_DIR_ALLOCSIZE 0x00000008 +#define ATTR_DIR_IOBLOCKSIZE 0x00000010 +#define ATTR_DIR_DATALENGTH 0x00000020 + /* ATTR_DIR_MOUNTSTATUS Flags: */ #define DIR_MNTSTATUS_MNTPOINT 0x00000001 #define DIR_MNTSTATUS_TRIGGER 0x00000002 -#define ATTR_DIR_VALIDMASK 0x00000007 +#define ATTR_DIR_VALIDMASK 0x0000003f #define ATTR_DIR_SETMASK 0x00000000 #define ATTR_FILE_LINKCOUNT 0x00000001 @@ -459,8 +502,18 @@ typedef struct vol_attributes_attr { */ #define ATTR_FILE_SETMASK 0x00000020 +/* CMNEXT attributes extend the common attributes, but in the forkattr field */ +#define ATTR_CMNEXT_RELPATH 0x00000004 +#define ATTR_CMNEXT_PRIVATESIZE 0x00000008 +#define ATTR_CMNEXT_LINKID 0x00000010 + +#define ATTR_CMNEXT_VALIDMASK 0x0000001c +#define ATTR_CMNEXT_SETMASK 0x00000000 + +/* Deprecated fork attributes */ #define ATTR_FORK_TOTALSIZE 0x00000001 #define ATTR_FORK_ALLOCSIZE 0x00000002 +#define ATTR_FORK_RESERVED 0xffffffff #define ATTR_FORK_VALIDMASK 0x00000003 #define ATTR_FORK_SETMASK 0x00000000