RTEMS
5.0.0
|
Constants/Data Structures/Prototypes on a Volume with FAT Filesystem. More...
#include <sys/param.h>
#include <sys/endian.h>
#include <string.h>
#include <rtems/seterr.h>
#include <errno.h>
#include <rtems/bdbuf.h>
Go to the source code of this file.
Data Structures | |
struct | fat_vol_s |
struct | fat_cache_s |
struct | fat_fs_info_s |
struct | fat_pos_s |
struct | fat_dir_pos_s |
Macros | |
#define | RC_OK 0 |
#define | CF_LE_W(v) le16toh(v) |
#define | CF_LE_L(v) le32toh(v) |
#define | CT_LE_W(v) htole16(v) |
#define | CT_LE_L(v) htole32(v) |
#define | FAT_HASH_SIZE 2 |
#define | FAT_HASH_MODULE FAT_HASH_SIZE |
#define | FAT_SECTOR512_SIZE 512 /* sector size (bytes) */ |
#define | FAT_SECTOR512_BITS 9 /* log2(SECTOR_SIZE) */ |
#define | FAT_FAT12_MAX_CLN 4085 |
#define | FAT_FAT16_MAX_CLN 65525 |
#define | FAT_FAT12 0x01 |
#define | FAT_FAT16 0x02 |
#define | FAT_FAT32 0x04 |
#define | FAT_UNDEFINED_VALUE (uint32_t)0xFFFFFFFF |
#define | FAT_FAT12_EOC 0x0FF8 |
#define | FAT_FAT16_EOC 0xFFF8 |
#define | FAT_FAT32_EOC (uint32_t)0x0FFFFFF8 |
#define | FAT_FAT12_FREE 0x0000 |
#define | FAT_FAT16_FREE 0x0000 |
#define | FAT_FAT32_FREE 0x00000000 |
#define | FAT_GENFAT_EOC (uint32_t)0xFFFFFFFF |
#define | FAT_GENFAT_FREE (uint32_t)0x00000000 |
#define | FAT_FAT12_SHIFT 0x04 |
#define | FAT_FAT12_MASK 0x00000FFF |
#define | FAT_FAT16_MASK 0x0000FFFF |
#define | FAT_FAT32_MASK (uint32_t)0x0FFFFFFF |
#define | FAT_MAX_BPB_SIZE 90 |
#define | FAT_TOTAL_MBR_SIZE 512 |
#define | FAT_USEFUL_INFO_SIZE 12 |
#define | FAT_GET_ADDR(x, ofs) ((uint8_t *)(x) + (ofs)) |
#define | FAT_GET_VAL8(x, ofs) (uint8_t)(*((uint8_t *)(x) + (ofs))) |
#define | FAT_GET_VAL16(x, ofs) |
#define | FAT_GET_VAL32(x, ofs) |
#define | FAT_SET_VAL8(x, ofs, val) (*((uint8_t *)(x)+(ofs))=(uint8_t)(val)) |
#define | FAT_SET_VAL16(x, ofs, val) |
#define | FAT_SET_VAL32(x, ofs, val) |
#define | FAT_GET_BR_JMPBOOT(x) FAT_GET_VAL8( x, 0) |
#define | FAT_SET_BR_JMPBOOT(x, val) FAT_SET_VAL8( x, 0,val) |
#define | FAT_GET_ADDR_BR_OEMNAME(x) FAT_GET_ADDR( x, 3) |
#define | FAT_BR_OEMNAME_SIZE (8) |
#define | FAT_GET_BR_BYTES_PER_SECTOR(x) FAT_GET_VAL16(x, 11) |
#define | FAT_SET_BR_BYTES_PER_SECTOR(x, val) FAT_SET_VAL16(x, 11,val) |
#define | FAT_GET_BR_SECTORS_PER_CLUSTER(x) FAT_GET_VAL8( x, 13) |
#define | FAT_SET_BR_SECTORS_PER_CLUSTER(x, val) FAT_SET_VAL8( x, 13,val) |
#define | FAT_GET_BR_RESERVED_SECTORS_NUM(x) FAT_GET_VAL16(x, 14) |
#define | FAT_SET_BR_RESERVED_SECTORS_NUM(x, val) FAT_SET_VAL16(x, 14,val) |
#define | FAT_GET_BR_FAT_NUM(x) FAT_GET_VAL8( x, 16) |
#define | FAT_SET_BR_FAT_NUM(x, val) FAT_SET_VAL8( x, 16,val) |
#define | FAT_GET_BR_FILES_PER_ROOT_DIR(x) FAT_GET_VAL16(x, 17) |
#define | FAT_SET_BR_FILES_PER_ROOT_DIR(x, val) FAT_SET_VAL16(x, 17,val) |
#define | FAT_GET_BR_TOTAL_SECTORS_NUM16(x) FAT_GET_VAL16(x, 19) |
#define | FAT_SET_BR_TOTAL_SECTORS_NUM16(x, val) FAT_SET_VAL16(x, 19,val) |
#define | FAT_GET_BR_MEDIA(x) FAT_GET_VAL8( x, 21) |
#define | FAT_SET_BR_MEDIA(x, val) FAT_SET_VAL8( x, 21,val) |
#define | FAT_GET_BR_SECTORS_PER_FAT(x) FAT_GET_VAL16(x, 22) |
#define | FAT_SET_BR_SECTORS_PER_FAT(x, val) FAT_SET_VAL16(x, 22,val) |
#define | FAT_GET_BR_SECTORS_PER_TRACK(x) FAT_GET_VAL16(x, 24) |
#define | FAT_SET_BR_SECTORS_PER_TRACK(x, val) FAT_SET_VAL16(x, 24,val) |
#define | FAT_GET_BR_NUMBER_OF_HEADS(x) FAT_GET_VAL16(x, 26) |
#define | FAT_SET_BR_NUMBER_OF_HEADS(x, val) FAT_SET_VAL16(x, 26,val) |
#define | FAT_GET_BR_HIDDEN_SECTORS(x) FAT_GET_VAL32(x, 28) |
#define | FAT_SET_BR_HIDDEN_SECTORS(x, val) FAT_SET_VAL32(x, 28,val) |
#define | FAT_GET_BR_TOTAL_SECTORS_NUM32(x) FAT_GET_VAL32(x, 32) |
#define | FAT_SET_BR_TOTAL_SECTORS_NUM32(x, val) FAT_SET_VAL32(x, 32,val) |
#define | FAT_GET_BR_DRVNUM(x) FAT_GET_VAL8( x, 36) |
#define | FAT_SET_BR_DRVNUM(x, val) FAT_SET_VAL8( x, 36,val) |
#define | FAT_GET_BR_RSVD1(x) FAT_GET_VAL8( x, 37) |
#define | FAT_SET_BR_RSVD1(x, val) FAT_SET_VAL8( x, 37,val) |
#define | FAT_GET_BR_BOOTSIG(x) FAT_GET_VAL8( x, 38) |
#define | FAT_SET_BR_BOOTSIG(x, val) FAT_SET_VAL8( x, 38,val) |
#define | FAT_BR_BOOTSIG_VAL (0x29) |
#define | FAT_GET_BR_VOLID(x) FAT_GET_VAL32(x, 39) |
#define | FAT_SET_BR_VOLID(x, val) FAT_SET_VAL32(x, 39,val) |
#define | FAT_GET_ADDR_BR_VOLLAB(x) FAT_GET_ADDR (x, 43) |
#define | FAT_BR_VOLLAB_SIZE (11) |
#define | FAT_GET_ADDR_BR_FILSYSTYPE(x) FAT_GET_ADDR (x, 54) |
#define | FAT_BR_FILSYSTYPE_SIZE (8) |
#define | FAT_GET_BR_SECTORS_PER_FAT32(x) FAT_GET_VAL32(x, 36) |
#define | FAT_SET_BR_SECTORS_PER_FAT32(x, val) FAT_SET_VAL32(x, 36,val) |
#define | FAT_GET_BR_EXT_FLAGS(x) FAT_GET_VAL16(x, 40) |
#define | FAT_SET_BR_EXT_FLAGS(x, val) FAT_SET_VAL16(x, 40,val) |
#define | FAT_GET_BR_FSVER(x) FAT_GET_VAL16(x, 42) |
#define | FAT_SET_BR_FSVER(x, val) FAT_SET_VAL16(x, 42,val) |
#define | FAT_GET_BR_FAT32_ROOT_CLUSTER(x) FAT_GET_VAL32(x, 44) |
#define | FAT_SET_BR_FAT32_ROOT_CLUSTER(x, val) FAT_SET_VAL32(x, 44,val) |
#define | FAT_GET_BR_FAT32_FS_INFO_SECTOR(x) FAT_GET_VAL16(x, 48) |
#define | FAT_SET_BR_FAT32_FS_INFO_SECTOR(x, val) FAT_SET_VAL16(x, 48,val) |
#define | FAT_GET_BR_FAT32_BK_BOOT_SECTOR(x) FAT_GET_VAL16(x, 50) |
#define | FAT_SET_BR_FAT32_BK_BOOT_SECTOR(x, val) FAT_SET_VAL16(x, 50,val) |
#define | FAT_GET_ADDR_BR_FAT32_RESERVED(x) FAT_GET_ADDR (x, 52) |
#define | FAT_BR_FAT32_RESERVED_SIZE (12) |
#define | FAT_GET_BR_FAT32_DRVNUM(x) FAT_GET_VAL8( x, 64) |
#define | FAT_SET_BR_FAT32_DRVNUM(x, val) FAT_SET_VAL8( x, 64,val) |
#define | FAT_GET_BR_FAT32_RSVD1(x) FAT_GET_VAL8( x, 65) |
#define | FAT_SET_BR_FAT32_RSVD1(x, val) FAT_SET_VAL8( x, 65,val) |
#define | FAT_GET_BR_FAT32_BOOTSIG(x) FAT_GET_VAL8( x, 66) |
#define | FAT_SET_BR_FAT32_BOOTSIG(x, val) FAT_SET_VAL8( x, 66,val) |
#define | FAT_BR_FAT32_BOOTSIG_VAL (0x29) |
#define | FAT_GET_BR_FAT32_VOLID(x) FAT_GET_VAL32(x, 67) |
#define | FAT_SET_BR_FAT32_VOLID(x, val) FAT_SET_VAL32(x, 67,val) |
#define | FAT_GET_ADDR_BR_FAT32_VOLLAB(x) FAT_GET_ADDR (x, 71) |
#define | FAT_BR_FAT32_VOLLAB_SIZE (11) |
#define | FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(x) FAT_GET_ADDR (x, 82) |
#define | FAT_BR_FAT32_FILSYSTYPE_SIZE (8) |
#define | FAT_GET_BR_SIGNATURE(x) FAT_GET_VAL16(x,510) |
#define | FAT_SET_BR_SIGNATURE(x, val) FAT_SET_VAL16(x,510,val) |
#define | FAT_BR_SIGNATURE_VAL (0xAA55) |
#define | FAT_GET_FSINFO_LEAD_SIGNATURE(x) FAT_GET_VAL32(x, 0) |
#define | FAT_SET_FSINFO_LEAD_SIGNATURE(x, val) FAT_SET_VAL32(x, 0,val) |
#define | FAT_FSINFO_LEAD_SIGNATURE_VALUE (0x41615252) |
#define | FAT_GET_FSINFO_STRUC_SIGNATURE(x) FAT_GET_VAL32(x,484) |
#define | FAT_SET_FSINFO_STRUC_SIGNATURE(x, val) FAT_SET_VAL32(x,484,val) |
#define | FAT_FSINFO_STRUC_SIGNATURE_VALUE (0x61417272) |
#define | FAT_GET_FSINFO_TRAIL_SIGNATURE(x) FAT_GET_VAL32(x,508) |
#define | FAT_SET_FSINFO_TRAIL_SIGNATURE(x, val) FAT_SET_VAL32(x,508,val) |
#define | FAT_FSINFO_TRAIL_SIGNATURE_VALUE (0xAA550000) |
#define | FAT_GET_FSINFO_FREE_CLUSTER_COUNT(x) FAT_GET_VAL32(x, 4) |
#define | FAT_SET_FSINFO_FREE_CLUSTER_COUNT(x, val) FAT_SET_VAL32(x, 4,val) |
#define | FAT_GET_FSINFO_NEXT_FREE_CLUSTER(x) FAT_GET_VAL32(x, 8) |
#define | FAT_SET_FSINFO_NEXT_FREE_CLUSTER(x, val) FAT_SET_VAL32(x, 8,val) |
#define | FAT_FSI_INFO 484 |
#define | FAT_FSINFO_STRUCT_OFFSET 488 |
#define | FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET (FAT_FSINFO_STRUCT_OFFSET+0) |
#define | FAT_FSINFO_NEXT_FREE_CLUSTER_OFFSET (FAT_FSINFO_STRUCT_OFFSET+4) |
#define | FAT_RSRVD_CLN 0x02 |
#define | FAT_FSI_LEADSIG_SIZE 0x04 |
#define | FAT_TOTAL_FSINFO_SIZE 512 |
#define | MS_BYTES_PER_CLUSTER_LIMIT 0x10000 /* 64K */ |
#define | MS_BYTES_PER_CLUSTER_LIMIT_FAT12 0x1000 /* 4K */ |
#define | FAT_BR_EXT_FLAGS_MIRROR 0x0080 |
#define | FAT_BR_EXT_FLAGS_FAT_NUM 0x000F |
#define | FAT_BR_MEDIA_FIXED 0xf8 |
#define | FAT_DIRENTRY_SIZE 32 |
#define | FAT_DIRENTRIES_PER_SEC512 16 |
#define | FAT_FILE_SHORT_NAME (0xffffffff) |
#define | FAT_FAT_OFFSET(fat_type, cln) |
#define | FAT_CLUSTER_IS_ODD(n) ((n) & 0x0001) |
#define | FAT12_SHIFT 0x4 /* half of a byte */ |
#define | FAT_UINO_POOL_INIT_SIZE 0x100 |
#define | FAT_CACHE_EMPTY 0x0 |
#define | FAT_CACHE_ACTUAL 0x1 |
#define | FAT_OP_TYPE_READ 0x1 |
#define | FAT_OP_TYPE_GET 0x2 |
Typedefs | |
typedef struct fat_vol_s | fat_vol_t |
typedef struct fat_cache_s | fat_cache_t |
typedef struct fat_fs_info_s | fat_fs_info_t |
typedef struct fat_pos_s | fat_pos_t |
typedef struct fat_dir_pos_s | fat_dir_pos_t |
Functions | |
int | fat_buf_access (fat_fs_info_t *fs_info, uint32_t sec_num, int op_type, uint8_t **sec_buf) |
int | fat_buf_release (fat_fs_info_t *fs_info) |
ssize_t | _fat_block_read (fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, void *buff) |
ssize_t | fat_cluster_write (fat_fs_info_t *fs_info, uint32_t start_cln, uint32_t offset, uint32_t count, const void *buff) |
ssize_t | fat_sector_write (fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, const void *buff) |
ssize_t | fat_cluster_set (fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, uint8_t pattern) |
int | fat_init_volume_info (fat_fs_info_t *fs_info, const char *device) |
int | fat_init_clusters_chain (fat_fs_info_t *fs_info, uint32_t start_cln) |
int | fat_shutdown_drive (fat_fs_info_t *fs_info) |
uint32_t | fat_get_unique_ino (fat_fs_info_t *fs_info) |
bool | fat_ino_is_unique (fat_fs_info_t *fs_info, uint32_t ino) |
void | fat_free_unique_ino (fat_fs_info_t *fs_info, uint32_t ino) |
int | fat_sync (fat_fs_info_t *fs_info) |
Constants/Data Structures/Prototypes on a Volume with FAT Filesystem.
Constants/Data Structures/Prototypes for Low-Level Operations on a Volume with FAT Filesystem