]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/hfs/hfscommon/headers/FileMgrInternal.h
xnu-792.25.20.tar.gz
[apple/xnu.git] / bsd / hfs / hfscommon / headers / FileMgrInternal.h
index ed67a4cf1f8bc09d7de09aaf1d0a2be154519b8a..15ccb6e63d3125b14b8f4bba1fb332ce23222568 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2001 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 #ifndef __FILEMGRINTERNAL__
 #define __FILEMGRINTERNAL__
 
+#include <sys/appleapiopts.h>
+
+#ifdef KERNEL
+#ifdef __APPLE_API_PRIVATE
+
 #include <sys/param.h>
 #include <sys/vnode.h>
 
 #include "../../hfs.h"
 #include "../../hfs_macos_defs.h"
 #include "../../hfs_format.h"
+#include "../../hfs_cnode.h"
 
 
 #if PRAGMA_ONCE
@@ -104,10 +110,13 @@ enum {
 /* internal flags*/
 
 enum {
-       kEFContigBit                            = 1,                                                    /*      force contiguous allocation*/
-       kEFContigMask                           = 0x02,
-       kEFAllBit                                       = 0,                                                    /*      allocate all requested bytes or none*/
-       kEFAllMask                                      = 0x01,                                                 /*      TruncateFile option flags*/
+       kEFAllMask      = 0x01,   /* allocate all requested bytes or none */
+       kEFContigMask   = 0x02,   /* force contiguous allocation */
+       kEFReserveMask  = 0x04,   /* keep block reserve */
+       kEFDeferMask    = 0x08,   /* defer file block allocations */
+       kEFNoClumpMask  = 0x10,   /* don't round up to clump size */
+       kEFMetadataMask  = 0x20,  /* metadata allocation */
+
        kTFTrunExtBit                           = 0,                                                    /*      truncate to the extent containing new PEOF*/
        kTFTrunExtMask                          = 1
 };
@@ -121,12 +130,6 @@ enum {
 };
 
 
-enum {
-       kInvalidMRUCacheKey                     = -1L,                                                  /* flag to denote current MRU cache key is invalid*/
-       kDefaultNumMRUCacheBlocks       = 16                                                    /* default number of blocks in each cache*/
-};
-
-
 /* Universal Extent Key */
 
 union ExtentKey {
@@ -148,25 +151,6 @@ union ExtentRecord {
        HFSPlusExtentRecord                     hfsPlus;
 };
 typedef union ExtentRecord                             ExtentRecord;
-/* Universal catalog key */
-
-union CatalogKey {
-       HFSCatalogKey                                   hfs;
-       HFSPlusCatalogKey                               hfsPlus;
-};
-typedef union CatalogKey                               CatalogKey;
-/* Universal catalog data record */
-
-union CatalogRecord {
-       SInt16                                                  recordType;
-       HFSCatalogFolder                                hfsFolder;
-       HFSCatalogFile                                  hfsFile;
-       HFSCatalogThread                                hfsThread;
-       HFSPlusCatalogFolder                    hfsPlusFolder;
-       HFSPlusCatalogFile                              hfsPlusFile;
-       HFSPlusCatalogThread                    hfsPlusThread;
-};
-typedef union CatalogRecord                            CatalogRecord;
 
 
 enum {
@@ -174,16 +158,6 @@ enum {
 };
 
 
-enum {
-       vcbMaxNam                                       = 27,                                                   /* volumes currently have a 27 byte max name length*/
-                                                                                                                               /* VCB flags*/
-       vcbManualEjectMask                      = 0x0001,                                               /* bit 0        manual-eject bit: set if volume is in a manual-eject drive*/
-       vcbFlushCriticalInfoMask        = 0x0002,                                               /* bit 1        critical info bit: set if critical MDB information needs to flush*/
-                                                                                                                               /*      IoParam->ioVAtrb*/
-       kDefaultVolumeMask                      = 0x0020,
-       kFilesOpenMask                          = 0x0040
-};
-
 
 /* Universal catalog name*/
 
@@ -197,8 +171,8 @@ typedef union CatalogName CatalogName;
 /*
  * MacOS accessor routines
  */
-#define GetFileControlBlock(fref)                      ((FCB *)((fref)->v_data))
-#define GetFileRefNumFromFCB(filePtr)          ((filePtr)->h_vp)
+#define GetFileControlBlock(fref)              VTOF((fref))
+#define GetFileRefNumFromFCB(fcb)              FTOV((fcb))
 
 
 /*     The following macro marks a VCB as dirty by setting the upper 8 bits of the flags*/
@@ -212,12 +186,8 @@ EXTERN_API_C( Boolean )
 IsVCBDirty                                             (ExtendedVCB *vcb);
 
 
-#define VCB_LOCK_INIT(vcb)             simple_lock_init(&vcb->vcbSimpleLock)
-#define VCB_LOCK(vcb)                  simple_lock(&vcb->vcbSimpleLock)
-#define VCB_UNLOCK(vcb)                        simple_unlock(&vcb->vcbSimpleLock)
-
-#define        MarkVCBDirty(vcb)               { VCB_LOCK((vcb)); ((vcb)->vcbFlags |= 0xFF00); VCB_UNLOCK((vcb)); }
-#define        MarkVCBClean(vcb)               { VCB_LOCK((vcb)); ((vcb)->vcbFlags &= 0x00FF); VCB_UNLOCK((vcb)); }
+#define        MarkVCBDirty(vcb)               { ((vcb)->vcbFlags |= 0xFF00); }
+#define        MarkVCBClean(vcb)               { ((vcb)->vcbFlags &= 0x00FF); }
 #define        IsVCBDirty(vcb)                 ((Boolean) ((vcb->vcbFlags & 0xFF00) != 0))
 
 
@@ -226,12 +196,7 @@ EXTERN_API_C( void )
 ReturnIfError                                  (OSErr                                  result);
 
 #define        ReturnIfError(result)                                   if ( (result) != noErr ) return (result); else ;
-/*     Test for passed condition and return if true*/
-EXTERN_API_C( void )
-ReturnErrorIf                                  (Boolean                                condition,
-                                                                OSErr                                  result);
 
-#define        ReturnErrorIf(condition, error)                 if ( (condition) )      return( (error) );
 /*     Exit function on error*/
 EXTERN_API_C( void )
 ExitOnError                                            (OSErr                                  result);
@@ -242,62 +207,6 @@ ExitOnError                                                (OSErr                                  result);
 
 /* Catalog Manager Routines (IPI)*/
 
-EXTERN_API_C( OSErr )
-CreateCatalogNode                              (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                                                UInt32                                 nodeType,
-                                                                HFSCatalogNodeID *             catalogNodeID,
-                                                                UInt32 *                               catalogHint,
-                                                                UInt32                                 teHint);
-
-EXTERN_API_C( OSErr )
-DeleteCatalogNode                              (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                                                UInt32                                 hint);
-
-EXTERN_API_C( OSErr )
-GetCatalogNode                                 (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                 UInt32                                length,
-                                 UInt32                                hint,
-                                                                CatalogNodeData *              nodeData,
-                                                                UInt32 *                               newHint);
-
-EXTERN_API_C( OSErr )
-GetCatalogOffspring                            (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               folderID,
-                                                                UInt16                                 index,
-                                                                CatalogNodeData *              nodeData,
-                                                                HFSCatalogNodeID *             nodeID,
-                                                                SInt16 *                       nodeType);
-
-EXTERN_API_C( OSErr )
-MoveRenameCatalogNode                  (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               srcParentID,
-                                                                ConstUTF8Param                 srcName,
-                                                                UInt32                                 srcHint,
-                                                                HFSCatalogNodeID               dstParentID,
-                                                                ConstUTF8Param                 dstName,
-                                                                UInt32 *                               newHint,
-                                                                UInt32                                 teHint);
-
-EXTERN_API_C( OSErr )
-UpdateCatalogNode                              (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                                                UInt32                                 catalogHint, 
-                                                                const CatalogNodeData * nodeData);
-
-EXTERN_API_C( OSErr )
-CreateFileIDRef                                        (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                                                UInt32                                 hint,
-                                                                HFSCatalogNodeID *             threadID);
-
 EXTERN_API_C( OSErr )
 ExchangeFileIDs                                        (ExtendedVCB *                  volume,
                                                                 ConstUTF8Param                 srcName,
@@ -307,53 +216,6 @@ ExchangeFileIDs                                    (ExtendedVCB *                  volume,
                                                                 UInt32                                 srcHint,
                                                                 UInt32                                 destHint );
 
-EXTERN_API_C( OSErr )
-LinkCatalogNode                                        (ExtendedVCB *                  volume,
-                                                                HFSCatalogNodeID               parentID,
-                                                                ConstUTF8Param                 name,
-                                                                HFSCatalogNodeID               linkParentID,
-                                                                ConstUTF8Param                 linkName);
-
-EXTERN_API_C( SInt32 )
-CompareCatalogKeys                             (HFSCatalogKey *                searchKey,
-                                                                HFSCatalogKey *                trialKey);
-
-EXTERN_API_C( SInt32 )
-CompareExtendedCatalogKeys             (HFSPlusCatalogKey *    searchKey,
-                                                                HFSPlusCatalogKey *    trialKey);
-
-EXTERN_API_C( OSErr )
-InitCatalogCache                               (void);
-
-EXTERN_API_C( void )
-InvalidateCatalogCache                 (ExtendedVCB *                  volume);
-
-
-/* GenericMRUCache Routines*/
-EXTERN_API_C( OSErr )
-InitMRUCache                                   (UInt32                                 bufferSize,
-                                                                UInt32                                 numCacheBlocks,
-                                                                Ptr *                                  cachePtr);
-
-EXTERN_API_C( OSErr )
-DisposeMRUCache                                        (Ptr                                    cachePtr);
-
-EXTERN_API_C( void )
-TrashMRUCache                                  (Ptr                                    cachePtr);
-
-EXTERN_API_C( OSErr )
-GetMRUCacheBlock                               (UInt32                                 key,
-                                                                Ptr                                    cachePtr,
-                                                                Ptr *                                  buffer);
-
-EXTERN_API_C( void )
-InvalidateMRUCacheBlock                        (Ptr                                    cachePtr,
-                                                                Ptr                                    buffer);
-
-EXTERN_API_C( void )
-InsertMRUCacheBlock                            (Ptr                                    cachePtr,
-                                                                UInt32                                 key,
-                                                                Ptr                                    buffer);
 
 /* BTree Manager Routines*/
 
@@ -369,17 +231,6 @@ SearchBTreeRecord                          (FileReference                          refNum,
                                                                 UInt16 *                               dataSize,
                                                                 UInt32 *                               newHint);
 
-EXTERN_API_C( OSErr )
-InsertBTreeRecord                              (FileReference                          refNum,
-                                                                void *                                 key,
-                                                                void *                                 data,
-                                                                UInt16                                 dataSize,
-                                                                UInt32 *                               newHint);
-
-EXTERN_API_C( OSErr )
-DeleteBTreeRecord                              (FileReference                          refNum,
-                                                                void *                                 key);
-
 EXTERN_API_C( OSErr )
 ReplaceBTreeRecord                             (FileReference                          refNum,
                                                                 const void *                   key,
@@ -393,9 +244,10 @@ ReplaceBTreeRecord                         (FileReference                          refNum,
 EXTERN_API_C( OSErr )
 BlockAllocate                                  (ExtendedVCB *                  vcb,
                                                                 UInt32                                 startingBlock,
-                                                                SInt64                                 bytesRequested,
-                                                                SInt64                                 bytesMaximum,
+                                                                UInt32                                 minBlocks,
+                                                                UInt32                                 maxBlocks,
                                                                 Boolean                                forceContiguous,
+                                                                Boolean                                useMetaZone,
                                                                 UInt32 *                               startBlock,
                                                                 UInt32 *                               actualBlocks);
 
@@ -404,9 +256,14 @@ BlockDeallocate                                    (ExtendedVCB *                  vcb,
                                                                 UInt32                                 firstBlock,
                                                                 UInt32                                 numBlocks);
 
+EXTERN_API_C( OSErr )
+BlockMarkAllocated(ExtendedVCB *vcb, UInt32 startingBlock, UInt32 numBlocks);
+
+EXTERN_API_C( OSErr )
+BlockMarkFree( ExtendedVCB *vcb, UInt32 startingBlock, UInt32 numBlocks);
+
 EXTERN_API_C( UInt32 )
-FileBytesToBlocks                              (SInt64                                 numerator,
-                                                                UInt32                                 denominator);
+MetaZoneFreeBlocks(ExtendedVCB *vcb);
 
 /*     File Extent Mapping routines*/
 EXTERN_API_C( OSErr )
@@ -420,12 +277,6 @@ EXTERN_API_C( SInt32 )
 CompareExtentKeysPlus                  (const HFSPlusExtentKey *searchKey,
                                                                 const HFSPlusExtentKey *trialKey);
 
-EXTERN_API_C( OSErr )
-DeleteFile                                             (ExtendedVCB *                  vcb,
-                                                                HFSCatalogNodeID               parDirID,
-                                                                ConstUTF8Param                 catalogName,
-                                                                UInt32                                 catalogHint);
-
 EXTERN_API_C( OSErr )
 TruncateFileC                                  (ExtendedVCB *                  vcb,
                                                                 FCB *                                  fcb,
@@ -445,9 +296,14 @@ MapFileBlockC                                      (ExtendedVCB *                  vcb,
                                                                 FCB *                                  fcb,
                                                                 size_t                                 numberOfBytes,
                                                                 off_t                                  offset,
-                                                                daddr_t *                              startBlock,
+                                                                daddr64_t *                            startBlock,
                                                                 size_t *                               availableBytes);
 
+OSErr HeadTruncateFile(ExtendedVCB  *vcb, FCB  *fcb, UInt32  headblks);
+
+EXTERN_API_C( int )
+AddFileExtent (ExtendedVCB *vcb, FCB *fcb, UInt32 startBlock, UInt32 blockCount);
+
 #if TARGET_API_MACOS_X
 EXTERN_API_C( Boolean )
 NodesAreContiguous                             (ExtendedVCB *                  vcb,
@@ -455,24 +311,12 @@ NodesAreContiguous                                (ExtendedVCB *                  vcb,
                                                                 UInt32                                 nodeSize);
 #endif
 
-/*     Utility routines*/
-
-EXTERN_API_C( void )
-ClearMemory                                            (void *                                 start,
-                                                                UInt32                                 length);
-
-EXTERN_API_C( OSErr )
-VolumeWritable                                 (ExtendedVCB *  vcb);
 
 
 /*     Get the current time in UTC (GMT)*/
 EXTERN_API_C( UInt32 )
 GetTimeUTC                                             (void);
 
-/*     Get the current local time*/
-EXTERN_API_C( UInt32 )
-GetTimeLocal                                   (Boolean forHFS);
-
 EXTERN_API_C( UInt32 )
 LocalToUTC                                             (UInt32                                 localTime);
 
@@ -480,14 +324,6 @@ EXTERN_API_C( UInt32 )
 UTCToLocal                                             (UInt32                                 utcTime);
 
 
-/*     Volumes routines*/
-EXTERN_API_C( OSErr )
-FlushVolumeControlBlock                        (ExtendedVCB *                  vcb);
-
-EXTERN_API_C( OSErr )
-ValidVolumeHeader                              (HFSPlusVolumeHeader *                  volumeHeader);
-
-
 #if PRAGMA_STRUCT_ALIGN
        #pragma options align=reset
 #elif PRAGMA_STRUCT_PACKPUSH
@@ -506,5 +342,7 @@ ValidVolumeHeader                           (HFSPlusVolumeHeader *                  volumeHeader);
 }
 #endif
 
+#endif /* __APPLE_API_PRIVATE */
+#endif /* KERNEL */
 #endif /* __FILEMGRINTERNAL__ */