Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / sdk / include / reactos / libs / fullfat / ff_ioman.h
diff --git a/reactos/sdk/include/reactos/libs/fullfat/ff_ioman.h b/reactos/sdk/include/reactos/libs/fullfat/ff_ioman.h
deleted file mode 100644 (file)
index 92d62eb..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*****************************************************************************
- *  FullFAT - High Performance, Thread-Safe Embedded FAT File-System         *
- *  Copyright (C) 2009  James Walmsley (james@worm.me.uk)                    *
- *                                                                           *
- *  This program is free software: you can redistribute it and/or modify     *
- *  it under the terms of the GNU General Public License as published by     *
- *  the Free Software Foundation, either version 3 of the License, or        *
- *  (at your option) any later version.                                      *
- *                                                                           *
- *  This program is distributed in the hope that it will be useful,          *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
- *  GNU General Public License for more details.                             *
- *                                                                           *
- *  You should have received a copy of the GNU General Public License        *
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.    *
- *                                                                           *
- *  IMPORTANT NOTICE:                                                        *
- *  =================                                                        *
- *  Alternative Licensing is available directly from the Copyright holder,   *
- *  (James Walmsley). For more information consult LICENSING.TXT to obtain   *
- *  a Commercial license.                                                    *
- *                                                                           *
- *  See RESTRICTIONS.TXT for extra restrictions on the use of FullFAT.       *
- *                                                                           *
- *  Removing the above notice is illegal and will invalidate this license.   *
- *****************************************************************************
- *  See http://worm.me.uk/fullfat for more information.                      *
- *  Or  http://fullfat.googlecode.com/ for latest releases and the wiki.     *
- *****************************************************************************/
-
-/**
- *     @file           ff_ioman.h
- *     @author         James Walmsley
- *     @ingroup        IOMAN
- **/
-
-#ifndef _FF_IOMAN_H_
-#define _FF_IOMAN_H_
-
-#include <stdlib.h>                                                    // Use of malloc()
-#include "ff_error.h"
-#include "ff_config.h"
-#include "ff_types.h"
-#include "ff_safety.h"                                         // Provide thread-safety via semaphores.
-#include "ff_memory.h"                                         // Memory access routines for ENDIAN independence.
-#include "ff_hash.h"
-
-//#define      FF_MAX_PARTITION_NAME   5               ///< Partition name length.
-
-#define FF_T_FAT12                             0x0A
-#define FF_T_FAT16                             0x0B
-#define FF_T_FAT32                             0x0C
-
-#define FF_MODE_READ                   0x01            ///< Buffer / FILE Mode for Read Access.
-#define        FF_MODE_WRITE                   0x02            ///< Buffer / FILE Mode for Write Access.
-#define FF_MODE_APPEND                 0x04            ///< FILE Mode Append Access.
-#define        FF_MODE_CREATE                  0x08            ///< FILE Mode Create file if not existing.
-#define FF_MODE_TRUNCATE               0x10            ///< FILE Mode Truncate an Existing file.
-#define FF_MODE_DIR                            0x80            ///< Special Mode to open a Dir. (Internal use ONLY!)
-
-#define FF_BUF_MAX_HANDLES             0xFFFF          ///< Maximum number handles sharing a buffer. (16 bit integer, we don't want to overflow it!)
-
-/**
- *     I/O Driver Definitions
- *     Provide access to any Block Device via the following interfaces.
- *     Returns the number of blocks actually read or written.
- **/
-
-/**
- *     A special information structure for the FullFAT mass storage device
- *     driver model.
- **/
-typedef struct {
-       FF_T_UINT16 BlkSize;
-       FF_T_UINT32     TotalBlocks;
-} FF_DEVICE_INFO;
-
-typedef FF_T_SINT32 (*FF_WRITE_BLOCKS) (FF_T_UINT8 *pBuffer, FF_T_UINT32 SectorAddress, FF_T_UINT32 Count, void *pParam);
-typedef FF_T_SINT32 (*FF_READ_BLOCKS)  (FF_T_UINT8 *pBuffer, FF_T_UINT32 SectorAddress, FF_T_UINT32 Count, void *pParam);
-
-#define FF_ERR_DRIVER_BUSY                     -10
-#define FF_ERR_DRIVER_FATAL_ERROR      -11
-
-/**
- *     @public
- *     @brief  Describes the block device driver interface to FullFAT.
- **/
-typedef struct {
-       FF_WRITE_BLOCKS fnpWriteBlocks; ///< Function Pointer, to write a block(s) from a block device.
-       FF_READ_BLOCKS  fnpReadBlocks;  ///< Function Pointer, to read a block(s) from a block device.
-       FF_T_UINT16             devBlkSize;             ///< Block size that the driver deals with.
-       void                    *pParam;                ///< Pointer to some parameters e.g. for a Low-Level Driver Handle
-} FF_BLK_DEVICE;
-
-/**
- *     @private
- *     @brief  FullFAT handles memory with buffers, described as below.
- *     @note   This may change throughout development.
- **/
-typedef struct {
-       FF_T_UINT32             Sector;                 ///< The LBA of the Cached sector.
-       FF_T_UINT32             LRU;                    ///< For the Least Recently Used algorithm.
-       FF_T_UINT16             NumHandles;             ///< Number of objects using this buffer.
-       FF_T_UINT16             Persistance;    ///< For the persistance algorithm.
-       FF_T_UINT8              Mode;                   ///< Read or Write mode.
-       FF_T_BOOL               Modified;               ///< If the sector was modified since read.
-       FF_T_BOOL               Valid;                  ///< Initially FALSE.
-       FF_T_UINT8              *pBuffer;               ///< Pointer to the cache block.
-} FF_BUFFER;
-
-typedef struct {
-#ifdef FF_UNICODE_SUPPORT
-       FF_T_WCHAR      Path[FF_MAX_PATH];
-#else
-       FF_T_INT8       Path[FF_MAX_PATH];
-#endif
-       FF_T_UINT32     DirCluster;
-} FF_PATHCACHE;
-
-#ifdef FF_HASH_CACHE
-typedef struct {
-       FF_T_UINT32             ulDirCluster;   ///< The Starting Cluster of the dir that the hash represents.
-       FF_HASH_TABLE   pHashTable;             ///< Pointer to the Hash Table object.
-       FF_T_UINT32             ulNumHandles;   ///< Number of active Handles using this hash table.
-       FF_T_UINT32             ulMisses;               ///< Number of times this Hash Table was missed, (i.e. how redundant it is).
-} FF_HASHCACHE;
-#endif
-
-/**
- *     @private
- *     @brief  FullFAT identifies a partition with the following data.
- *     @note   This may shrink as development and optimisation goes on.
- **/
-typedef struct {
-       //FF_T_UINT8            ID;                                     ///< Partition Incremental ID number.
-       FF_T_UINT8              Type;                           ///< Partition Type Identifier.
-       FF_T_UINT16             BlkSize;                        ///< Size of a Sector Block in bytes.
-       FF_T_UINT8      BlkFactor;                      ///< Scale Factor for blocksizes above 512!
-       //FF_T_INT8             Name[FF_MAX_PARTITION_NAME];    ///< Partition Identifier e.g. c: sd0: etc.
-       FF_T_INT8               VolLabel[12];           ///< Volume Label of the partition.
-       FF_T_UINT32             BeginLBA;                       ///< LBA start address of the partition.
-       FF_T_UINT32             PartSize;                       ///< Size of Partition in number of sectors.
-       FF_T_UINT32             FatBeginLBA;            ///< LBA of the FAT tables.
-       FF_T_UINT8              NumFATS;                        ///< Number of FAT tables.
-       FF_T_UINT32             SectorsPerFAT;          ///< Number of sectors per Fat.
-       FF_T_UINT8              SectorsPerCluster;      ///< Number of sectors per Cluster.
-       FF_T_UINT32             TotalSectors;
-       FF_T_UINT32             DataSectors;
-       FF_T_UINT32             RootDirSectors;
-       FF_T_UINT32             FirstDataSector;
-       FF_T_UINT16             ReservedSectors;
-       FF_T_UINT32             ClusterBeginLBA;        ///< LBA of first cluster.
-       FF_T_UINT32             NumClusters;            ///< Number of clusters.
-       FF_T_UINT32             RootDirCluster;         ///< Cluster number of the root directory entry.
-       FF_T_UINT32             LastFreeCluster;
-       FF_T_UINT32             FreeClusterCount;       ///< Records free space on mount.
-       FF_T_BOOL               PartitionMounted;       ///< FF_TRUE if the partition is mounted, otherwise FF_FALSE.
-#ifdef FF_PATH_CACHE
-       FF_PATHCACHE    PathCache[FF_PATH_CACHE_DEPTH];
-       FF_T_UINT32             PCIndex;
-#endif
-} FF_PARTITION;
-
-
-
-/**
- *     @public
- *     @brief  FF_IOMAN Object description.
- *
- *     FullFAT functions around an object like this.
- **/
-#define FF_FAT_LOCK                    0x01    ///< Lock bit mask for FAT table locking.
-#define FF_DIR_LOCK                    0x02    ///< Lock bit mask for DIR modification locking.
-//#define FF_PATHCACHE_LOCK    0x04
-
-/**
- *     @public
- *     @brief  FF_IOMAN Object. A developer should not touch these values.
- *     
- *     In the commercial version these values are encapsulated. In the open-source
- *     version they are left completely open, in case someone really "needs" :P to
- *     do something stupid and access their members themselves. Also to help the
- *     open-source community help me improve FullFAT, and aid understanding.
- *
- *     THIS WOULD BE VERY STUPID, SO DON'T DO IT. Unless your're writing a patch or
- *     something!
- *
- **/
-typedef struct {
-       FF_BLK_DEVICE   *pBlkDevice;            ///< Pointer to a Block device description.
-       FF_PARTITION    *pPartition;            ///< Pointer to a partition description.
-       FF_BUFFER               *pBuffers;                      ///< Pointer to the first buffer description.
-       void                    *pSemaphore;            ///< Pointer to a Semaphore object. (For buffer description modifications only!).
-#ifdef FF_BLKDEV_USES_SEM
-       void                    *pBlkDevSemaphore;      ///< Semaphore to guarantee Atomic access to the underlying block device, if required.
-#endif
-       void                    *FirstFile;                     ///< Pointer to the first File object.
-       FF_T_UINT8              *pCacheMem;                     ///< Pointer to a block of memory for the cache.
-       FF_T_UINT32             LastReplaced;           ///< Marks which sector was last replaced in the cache.
-       FF_T_UINT16             BlkSize;                        ///< The Block size that IOMAN is configured to.
-       FF_T_UINT16             CacheSize;                      ///< Size of the cache in number of Sectors.
-       FF_T_UINT8              PreventFlush;           ///< Flushing to disk only allowed when 0
-       FF_T_UINT8              MemAllocation;          ///< Bit-Mask identifying allocated pointers.
-       FF_T_UINT8              Locks;                          ///< Lock Flag for FAT & DIR Locking etc (This must be accessed via a semaphore).
-#ifdef FF_HASH_CACHE
-       FF_HASHCACHE    HashCache[FF_HASH_CACHE_DEPTH];
-#endif
-} FF_IOMAN;
-
-// Bit-Masks for Memory Allocation testing.
-#define FF_IOMAN_ALLOC_BLKDEV  0x01    ///< Flags the pBlkDevice pointer is allocated.
-#define FF_IOMAN_ALLOC_PART            0x02    ///< Flags the pPartition pointer is allocated.
-#define        FF_IOMAN_ALLOC_BUFDESCR 0x04    ///< Flags the pBuffers pointer is allocated.
-#define        FF_IOMAN_ALLOC_BUFFERS  0x08    ///< Flags the pCacheMem pointer is allocated.
-#define FF_IOMAN_ALLOC_RESERVED        0xF0    ///< Reserved Section.
-
-
-//---------- PROTOTYPES (in order of appearance)
-
-// PUBLIC (Interfaces):
-FF_IOMAN       *FF_CreateIOMAN                 (FF_T_UINT8 *pCacheMem, FF_T_UINT32 Size, FF_T_UINT16 BlkSize, FF_ERROR *pError);
-FF_ERROR       FF_DestroyIOMAN                 (FF_IOMAN *pIoman);
-FF_ERROR       FF_RegisterBlkDevice    (FF_IOMAN *pIoman, FF_T_UINT16 BlkSize, FF_WRITE_BLOCKS fnWriteBlocks, FF_READ_BLOCKS fnReadBlocks, void *pParam);
-FF_ERROR       FF_UnregisterBlkDevice  (FF_IOMAN *pIoman);
-FF_ERROR       FF_MountPartition               (FF_IOMAN *pIoman, FF_T_UINT8 PartitionNumber);
-FF_ERROR       FF_UnmountPartition             (FF_IOMAN *pIoman);
-FF_ERROR       FF_FlushCache                   (FF_IOMAN *pIoman);
-FF_T_SINT32 FF_GetPartitionBlockSize(FF_IOMAN *pIoman);
-
-#ifdef FF_64_NUM_SUPPORT
-FF_T_UINT64 FF_GetVolumeSize(FF_IOMAN *pIoman);
-#else
-FF_T_UINT32 FF_GetVolumeSize(FF_IOMAN *pIoman);
-#endif
-
-// PUBLIC  (To FullFAT Only):
-FF_T_SINT32 FF_BlockRead                       (FF_IOMAN *pIoman, FF_T_UINT32 ulSectorLBA, FF_T_UINT32 ulNumSectors, void *pBuffer);
-FF_T_SINT32 FF_BlockWrite                      (FF_IOMAN *pIoman, FF_T_UINT32 ulSectorLBA, FF_T_UINT32 ulNumSectors, void *pBuffer);
-FF_ERROR       FF_IncreaseFreeClusters (FF_IOMAN *pIoman, FF_T_UINT32 Count);
-FF_ERROR       FF_DecreaseFreeClusters (FF_IOMAN *pIoman, FF_T_UINT32 Count);
-FF_BUFFER      *FF_GetBuffer                   (FF_IOMAN *pIoman, FF_T_UINT32 Sector, FF_T_UINT8 Mode);
-void           FF_ReleaseBuffer                (FF_IOMAN *pIoman, FF_BUFFER *pBuffer);
-
-// PRIVATE (For this module only!):
-
-
-#endif
-
-