RTEMS  5.1
Files | Data Structures | Macros | Typedefs | Enumerations | Functions | Variables

Files

file  msdos.h
 The MSDOS Filesystem Constants/Data Structures/Prototypes.
 
file  msdos_conv.c
 MDOS Date Conversion.
 
file  msdos_create.c
 Create a new MSDOS FileSystem node.
 
file  msdos_dir.c
 MSDOS Directory Handlers Implementation.
 
file  msdos_free.c
 Call Fat-File Close Routine.
 
file  msdos_fsunmount.c
 Shut Down MSDOS FileSystem.
 
file  msdos_initsupp.c
 MSDOS Filesystem Initialization.
 
file  msdos_mknod.c
 Routine for Node Creation in MSDOS Filesystem.
 
file  msdos_rename.c
 Rename a MSDOS FileSystem Node.
 
file  msdos_rmnod.c
 Remove Node from MSDOS Directory.
 
file  msdos_statvfs.c
 Obtain MS-DOS filesystem information.
 

Data Structures

struct  msdos_fs_info_s
 

Macros

#define MSDOS_NAME_NOT_FOUND_ERR   0x7D01
 
#define MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE   32 /* 32 bytes */
 
#define MSDOS_DIR_NAME(x)   (char *)((x) + 0)
 
#define MSDOS_DIR_ENTRY_TYPE(x)   (uint8_t *)((x) + 0)
 
#define MSDOS_DIR_ATTR(x)   (uint8_t *)((x) + 11)
 
#define MSDOS_DIR_NT_RES(x)   (uint8_t *)((x) + 12)
 
#define MSDOS_DIR_LFN_CHECKSUM(x)   (uint8_t *)((x) + 13)
 
#define MSDOS_DIR_CRT_TIME_TENTH(x)   (uint8_t *)((x) + 13)
 
#define MSDOS_DIR_CRT_TIME(x)   (uint16_t *)((x) + 14)
 
#define MSDOS_DIR_CRT_DATE(x)   (uint16_t *)((x) + 16)
 
#define MSDOS_DIR_LAST_ACCESS_DATE(x)   (uint16_t *)((x) + 18)
 
#define MSDOS_DIR_FIRST_CLUSTER_HI(x)   (uint16_t *)((x) + 20)
 
#define MSDOS_DIR_WRITE_TIME(x)   (uint16_t *)((x) + 22)
 
#define MSDOS_DIR_WRITE_DATE(x)   (uint16_t *)((x) + 24)
 
#define MSDOS_DIR_FIRST_CLUSTER_LOW(x)   (uint16_t *)((x) + 26)
 
#define MSDOS_DIR_FILE_SIZE(x)   (uint32_t *)((x) + 28)
 
#define MSDOS_EXTRACT_CLUSTER_NUM(p)
 
#define MSDOS_FILE_SIZE_OFFSET   28
 
#define MSDOS_FILE_NAME_OFFSET   0
 
#define MSDOS_FIRST_CLUSTER_HI_OFFSET   20
 
#define MSDOS_FIRST_CLUSTER_LOW_OFFSET   26
 
#define MSDOS_FILE_WDATE_OFFSET   24
 
#define MSDOS_FILE_WTIME_OFFSET   22
 
#define MSDOS_FILE_ADATE_OFFSET   18
 
#define MSDOS_FILE_CDATE_OFFSET   16
 
#define MSDOS_FILE_CTIME_OFFSET   14
 
#define MSDOS_ATTR_READ_ONLY   0x01
 
#define MSDOS_ATTR_HIDDEN   0x02
 
#define MSDOS_ATTR_SYSTEM   0x04
 
#define MSDOS_ATTR_VOLUME_ID   0x08
 
#define MSDOS_ATTR_DIRECTORY   0x10
 
#define MSDOS_ATTR_ARCHIVE   0x20
 
#define MSDOS_ATTR_LFN
 
#define MSDOS_ATTR_LFN_MASK
 
#define MSDOS_LAST_LONG_ENTRY   0x40
 
#define MSDOS_LAST_LONG_ENTRY_MASK   0x3F
 
#define MSDOS_DT_2SECONDS_MASK   0x1F /* seconds divided by 2 */
 
#define MSDOS_DT_2SECONDS_SHIFT   0
 
#define MSDOS_DT_MINUTES_MASK   0x7E0 /* minutes */
 
#define MSDOS_DT_MINUTES_SHIFT   5
 
#define MSDOS_DT_HOURS_MASK   0xF800 /* hours */
 
#define MSDOS_DT_HOURS_SHIFT   11
 
#define MSDOS_DD_DAY_MASK   0x1F /* day of month */
 
#define MSDOS_DD_DAY_SHIFT   0
 
#define MSDOS_DD_MONTH_MASK   0x1E0 /* month */
 
#define MSDOS_DD_MONTH_SHIFT   5
 
#define MSDOS_DD_YEAR_MASK   0xFE00 /* year - 1980 */
 
#define MSDOS_DD_YEAR_SHIFT   9
 
#define MSDOS_THIS_DIR_ENTRY_EMPTY   0xE5
 
#define MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY   0x00
 
#define MSDOS_LFN_LEN_PER_ENTRY   (13)
 
#define MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR   4
 
#define MSDOS_NAME_MIN_UTF8_BYTES_PER_CHAR   1
 
#define MSDOS_SHORT_BASE_LEN   8 /* 8 characters */
 
#define MSDOS_SHORT_EXT_LEN   3 /* 3 characters */
 
#define MSDOS_SHORT_NAME_LEN
 
#define MSDOS_NAME_MAX_LNF_LEN   (255)
 
#define MSDOS_NAME_MAX   MSDOS_SHORT_NAME_LEN
 
#define MSDOS_NAME_MAX_UTF8_SFN_BYTES
 
#define MSDOS_NAME_MAX_WITH_DOT   (MSDOS_NAME_MAX + 1)
 
#define MSDOS_SFN_MAX_WITH_DOT_UTF8_BYTES
 
#define MSDOS_NAME_MAX_LFN_WITH_DOT   (260)
 
#define MSDOS_NAME_LFN_BYTES_PER_CHAR   (2)
 
#define MSDOS_NAME_MAX_LFN_BYTES
 
#define MSDOS_NAME_MAX_UTF8_LFN_BYTES
 
#define MSDOS_ENTRY_LFN_UTF8_BYTES
 
#define MSDOS_RES_NT_VALUE   0x00
 
#define MSDOS_INIT_DIR_SIZE   0x00
 
#define MSDOS_DOT_DIR_ENTRY_OFFSET   0x00 /* first entry in directory */
 
#define MSDOS_DOTDOT_DIR_ENTRY_OFFSET   0x20 /* second entry in directory */
 
#define DOT_NODE_P(p)   ((char *)(p))
 
#define DOTDOT_NODE_P(p)   ((char *)((p) + MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE))
 
#define MSDOS_MAX_DIR_LENGTH   0x200000 /* 2,097,152 bytes */
 
#define MSDOS_MAX_FILE_SIZE   0xFFFFFFFF /* 4 Gb */
 
#define MSDOS_DPS512_NUM   16
 
#define __need_getopt_newlib
 Obtain MS-DOS filesystem information. More...
 

Typedefs

typedef struct msdos_fs_info_s msdos_fs_info_t
 
typedef enum msdos_name_types_e msdos_name_type_t
 
typedef enum msdos_token_types_e msdos_token_types_t
 

Enumerations

enum  msdos_name_types_e { MSDOS_NAME_INVALID = 0, MSDOS_NAME_SHORT, MSDOS_NAME_LONG }
 
enum  msdos_token_types_e {
  MSDOS_NO_MORE_PATH, MSDOS_CURRENT_DIR, MSDOS_UP_DIR, MSDOS_NAME,
  MSDOS_INVALID_TOKEN
}
 

Functions

RTEMS_INLINE_ROUTINE void msdos_fs_lock (msdos_fs_info_t *fs_info)
 
RTEMS_INLINE_ROUTINE void msdos_fs_unlock (msdos_fs_info_t *fs_info)
 
void msdos_shut_down (rtems_filesystem_mount_table_entry_t *temp_mt_entry)
 Shut down the MSDOS filesystem. More...
 
void msdos_eval_path (rtems_filesystem_eval_path_context_t *ctx)
 
void msdos_free_node_info (const rtems_filesystem_location_info_t *pathloc)
 Call the Fat-File close routine. More...
 
int msdos_mknod (const rtems_filesystem_location_info_t *loc, const char *name, size_t namelen, mode_t mode, dev_t dev)
 Routine for node creation in a MSDOS filesystem. More...
 
int msdos_rmnod (const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc)
 Remove node from MSDOS directory. More...
 
int msdos_rename (const rtems_filesystem_location_info_t *old_parent_loc, const rtems_filesystem_location_info_t *old_loc, const rtems_filesystem_location_info_t *new_parent_loc, const char *new_name, size_t new_namelen)
 Rename a MSDOS filesystem node. More...
 
int msdos_statvfs (const rtems_filesystem_location_info_t *root_loc, struct statvfs *sb)
 
void msdos_lock (const rtems_filesystem_mount_table_entry_t *mt_entry)
 
void msdos_unlock (const rtems_filesystem_mount_table_entry_t *mt_entry)
 
int msdos_initialize_support (rtems_filesystem_mount_table_entry_t *temp_mt_entry, const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *file_handlers, const rtems_filesystem_file_handlers_r *directory_handlers, rtems_dosfs_convert_control *converter)
 MSDOS filesystem initialization routine. More...
 
ssize_t msdos_file_read (rtems_libio_t *iop, void *buffer, size_t count)
 
ssize_t msdos_file_write (rtems_libio_t *iop, const void *buffer, size_t count)
 
int msdos_file_stat (const rtems_filesystem_location_info_t *loc, struct stat *buf)
 
int msdos_file_ftruncate (rtems_libio_t *iop, off_t length)
 
int msdos_file_sync (rtems_libio_t *iop)
 
ssize_t msdos_dir_read (rtems_libio_t *iop, void *buffer, size_t count)
 
int msdos_dir_sync (rtems_libio_t *iop)
 
int msdos_dir_stat (const rtems_filesystem_location_info_t *loc, struct stat *buf)
 
int msdos_creat_node (const rtems_filesystem_location_info_t *parent_loc, fat_file_type_t type, const char *name, int name_len, mode_t mode, const fat_file_fd_t *link_fd)
 Implements wake up version of the "signal" operation. More...
 
int msdos_find_name (rtems_filesystem_location_info_t *parent_loc, const char *name, int name_len)
 
int msdos_get_name_node (const rtems_filesystem_location_info_t *parent_loc, bool create_node, const char *name, int name_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry)
 
int msdos_dir_info_remove (rtems_filesystem_location_info_t *pathloc)
 
ssize_t msdos_format_dirent_with_dot (char *dst, const char *src)
 
msdos_name_type_t msdos_long_to_short (rtems_dosfs_convert_control *converter, const char *lfn, int lfn_len, char *sfn, int sfn_len)
 
ssize_t msdos_filename_utf8_to_short_name_for_compare (rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, void *short_name, const size_t short_name_size)
 
ssize_t msdos_filename_utf8_to_short_name_for_save (rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, void *short_name, const size_t short_name_size)
 
ssize_t msdos_filename_utf8_to_long_name_for_compare (rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, uint8_t *long_name, const size_t long_name_size)
 
ssize_t msdos_filename_utf8_to_long_name_for_save (rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, uint16_t *long_name, const size_t long_name_size)
 
ssize_t msdos_get_utf16_string_from_long_entry (const char *entry, uint16_t *entry_string_buf, const size_t buf_size, bool is_first_entry)
 
void msdos_date_unix2dos (unsigned int tsp, uint16_t *ddp, uint16_t *dtp)
 
unsigned int msdos_date_dos2unix (unsigned int dd, unsigned int dt)
 
int msdos_set_first_char4file_name (rtems_filesystem_mount_table_entry_t *mt_entry, fat_dir_pos_t *dir_pos, unsigned char first_char)
 
int msdos_dir_is_empty (rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd, bool *ret_val)
 
int msdos_find_name_in_fat_file (rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd, bool create_node, const uint8_t *name_utf8, int name_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry)
 
int msdos_find_node_by_cluster_num_in_fat_file (rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd, uint32_t cl4find, fat_dir_pos_t *dir_pos, char *dir_entry)
 
int msdos_get_dotdot_dir_info_cluster_num_and_offset (rtems_filesystem_mount_table_entry_t *mt_entry, uint32_t cln, fat_dir_pos_t *dir_pos, char *dir_entry)
 
int msdos_sync (rtems_libio_t *iop)
 
uint8_t msdos_lfn_checksum (const void *entry)
 

Variables

const rtems_filesystem_file_handlers_r msdos_dir_handlers
 
const rtems_filesystem_file_handlers_r msdos_file_handlers
 
const char *const MSDOS_DOT_NAME
 
const char *const MSDOS_DOTDOT_NAME
 

Detailed Description

Macro Definition Documentation

◆ __need_getopt_newlib

#define __need_getopt_newlib

Obtain MS-DOS filesystem information.

df Shell Command Implmentation

◆ MSDOS_ATTR_LFN

#define MSDOS_ATTR_LFN
Value:
(MSDOS_ATTR_READ_ONLY | \
MSDOS_ATTR_HIDDEN | \
MSDOS_ATTR_SYSTEM | \
MSDOS_ATTR_VOLUME_ID)

◆ MSDOS_ATTR_LFN_MASK

#define MSDOS_ATTR_LFN_MASK
Value:
(MSDOS_ATTR_READ_ONLY | \
MSDOS_ATTR_HIDDEN | \
MSDOS_ATTR_SYSTEM | \
MSDOS_ATTR_VOLUME_ID | \
MSDOS_ATTR_DIRECTORY | \
MSDOS_ATTR_ARCHIVE)

◆ MSDOS_ENTRY_LFN_UTF8_BYTES

#define MSDOS_ENTRY_LFN_UTF8_BYTES
Value:
(MSDOS_LFN_LEN_PER_ENTRY *\
MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR)

◆ MSDOS_EXTRACT_CLUSTER_NUM

#define MSDOS_EXTRACT_CLUSTER_NUM (   p)
Value:
(uint32_t)( (CF_LE_W(*MSDOS_DIR_FIRST_CLUSTER_LOW(p))) | \
((uint32_t)(CF_LE_W((*MSDOS_DIR_FIRST_CLUSTER_HI(p))))<<16) )
unsigned p
Definition: tte.h:90

◆ MSDOS_NAME_MAX_LFN_BYTES

#define MSDOS_NAME_MAX_LFN_BYTES
Value:
(MSDOS_NAME_MAX_LFN_WITH_DOT *\
MSDOS_NAME_LFN_BYTES_PER_CHAR)

◆ MSDOS_NAME_MAX_UTF8_LFN_BYTES

#define MSDOS_NAME_MAX_UTF8_LFN_BYTES
Value:
(MSDOS_NAME_MAX_LFN_WITH_DOT *\
MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR)

◆ MSDOS_NAME_MAX_UTF8_SFN_BYTES

#define MSDOS_NAME_MAX_UTF8_SFN_BYTES
Value:
(MSDOS_NAME_MAX *\
MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR)

◆ MSDOS_SFN_MAX_WITH_DOT_UTF8_BYTES

#define MSDOS_SFN_MAX_WITH_DOT_UTF8_BYTES
Value:
(MSDOS_NAME_MAX_WITH_DOT *\
MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR)

◆ MSDOS_SHORT_NAME_LEN

#define MSDOS_SHORT_NAME_LEN
Value:
(MSDOS_SHORT_BASE_LEN+\
MSDOS_SHORT_EXT_LEN) /* 11 chars */

Function Documentation

◆ msdos_creat_node()

int msdos_creat_node ( const rtems_filesystem_location_info_t parent_loc,
fat_file_type_t  type,
const char *  name,
int  name_len,
mode_t  mode,
const fat_file_fd_t link_fd 
)

Implements wake up version of the "signal" operation.

Routine to create a new MSDOS filesystem node

◆ msdos_free_node_info()

void msdos_free_node_info ( const rtems_filesystem_location_info_t pathloc)

Call the Fat-File close routine.

Free node handler implementation for the filesystem operations table.

◆ msdos_initialize_support()

int msdos_initialize_support ( rtems_filesystem_mount_table_entry_t temp_mt_entry,
const rtems_filesystem_operations_table op_table,
const rtems_filesystem_file_handlers_r file_handlers,
const rtems_filesystem_file_handlers_r directory_handlers,
rtems_dosfs_convert_control converter 
)

MSDOS filesystem initialization routine.

MSDOS Initialization support routine implementation

◆ msdos_mknod()

int msdos_mknod ( const rtems_filesystem_location_info_t loc,
const char *  name,
size_t  namelen,
mode_t  mode,
dev_t  dev 
)

Routine for node creation in a MSDOS filesystem.

MSDOS Directory Handlers Implementation

◆ msdos_rename()

int msdos_rename ( const rtems_filesystem_location_info_t old_parent_loc,
const rtems_filesystem_location_info_t old_loc,
const rtems_filesystem_location_info_t new_parent_loc,
const char *  new_name,
size_t  new_namelen 
)

Rename a MSDOS filesystem node.

Routine to rename a MSDOS filesystem node

◆ msdos_rmnod()

int msdos_rmnod ( const rtems_filesystem_location_info_t parentloc,
const rtems_filesystem_location_info_t loc 
)

Remove node from MSDOS directory.

MSDOS Directory Handlers Implementation

◆ msdos_shut_down()

void msdos_shut_down ( rtems_filesystem_mount_table_entry_t temp_mt_entry)

Shut down the MSDOS filesystem.

MSDOS shut down handler implementation