]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/attr.h
xnu-4570.1.46.tar.gz
[apple/xnu.git] / bsd / sys / attr.h
index ebfeb60912de4831e04b8a61c0a1d89c0f73fa21..45540a9aaaf3d06fb2cad7718011dce34e304772 100644 (file)
@@ -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 <sys/_types/_fsobj_id_t.h> /* 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