FreeCalypso > hg > fc-magnetite
diff src/condat2/com/include/ffs_pc_api.h @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/condat2/com/include/ffs_pc_api.h Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,178 @@ +/********************************************************************************/ +/* */ +/* File Name: ffs_pc_api.h */ +/* */ +/* Purpose: This header file contains the external constants and */ +/* prototypes related to the Flash File System. */ +/* */ +/* Note: None. */ +/* */ +/* Revision History: */ +/* 02/27/02 Pascal Pompei */ +/* - Create. */ +/* */ +/* (C) Copyright 2002 by Texas Instruments Incorporated, All Rights Reserved. */ +/* */ +/********************************************************************************/ +#ifndef _FFS_PC_API_ +#define _FFS_PC_API_ + +#include <windows.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + + +/******************************** FILE DESCRIPTOR *******************************/ +/* */ +/* Define the file descriptor. */ +typedef INT32 T_FFS_FD; + + +/*********************************** FILE SIZE **********************************/ +/* */ +/* Define the file size. */ +typedef INT32 T_FFS_SIZE; + + +/************************************ OFFSET ************************************/ +/* */ +/* Define the offset. */ +typedef UINT32 T_FFS_OFFSET; + +/************************************* FLAGS ************************************/ +/* */ +/* Define the modes used to open the file. */ +typedef UINT32 T_FFS_OPEN_FLAGS; + +#define FFS_O_CREATE (0x00000001) +#define FFS_O_APPEND (0x00000002) +#define FFS_O_EXCL (0x00000004) +#define FFS_O_TRUNC (0x00000008) +#define FFS_O_RDONLY (0x00000010) +#define FFS_O_WRONLY (0x00000020) +#define FFS_O_RDWR (FFS_O_RDONLY | FFS_O_WRONLY) + +/* Define the starting point for the file pointer move. */ +typedef UINT32 T_FFS_WHENCE; + +#define FFS_SEEK_SET (FILE_BEGIN) +#define FFS_SEEK_CUR (FILE_CURRENT) +#define FFS_SEEK_END (FILE_END) + + +/*********************************** META-DATA **********************************/ +/* */ +/* Define object types. */ +typedef enum +{ + OT_FILE = 0x00000001, + OT_DIR, + OT_LINK +} T_FFS_OBJECT_TYPE; + +/* Define a structure used to gather information (meta-data) about an object. */ +typedef struct +{ + T_FFS_OBJECT_TYPE type; /* Object type: file, folder, ... */ + T_FFS_SIZE size; /* Size of data space occupied by object. */ +} T_FFS_STAT; + + +/*********************************** DIRECTORY **********************************/ +/* */ +/* Define a structure used to gather information about a directory. */ +typedef struct +{ + WIN32_FIND_DATA find_data; + HANDLE search_handle; +} T_FFS_DIR; + + +/***************************** INTERNAL ERROR CODES *****************************/ +/* */ +/* Define the internal error codes. */ +typedef enum +{ + EFFS_OK = 0, /* OK. */ + + EFFS_NODEVICE = -1, /* Flash device unknown. */ + EFFS_CORRUPTED = -2, /* File system corrupted. */ + EFFS_NOPREFORMAT = -3, /* Flash File System not preformatted. */ + EFFS_NOFORMAT = -4, /* Flash File System not formatted. */ + EFFS_BADFORMAT = -5, /* Format not recognized. */ + EFFS_MAGIC = -6, /* Bad magic. */ + EFFS_AGAIN = -7, /* Not ready, try again later on. */ + EFFS_NOSYS = -8, /* Function not implemented. */ + EFFS_DRIVER = -9, /* Driver error. */ + + EFFS_NOSPACE = -10, /* Out of file space (no free data space). */ + EFFS_FSFULL = -11, /* File system full (no free inodes). */ + EFFS_BADNAME = -12, /* Bad filename. */ + EFFS_NOTFOUND = -13, /* Not found. */ + EFFS_EXISTS = -14, /* Object already exists. */ + EFFS_ACCESS = -15, /* File access permission violation. */ + EFFS_NAMETOOLONG = -16, /* Filename too long. */ + EFFS_INVALID = -17, /* Invalid argument. */ + EFFS_DIRNOTEMPTY = -18, /* Directory not empty. */ + EFFS_NOTADIR = -19, /* Object is not a directory. */ + EFFS_SPARE = -20, /* Spare. */ + + EFFS_FILETOOBIG = -21, /* File too big. */ + EFFS_NOTAFILE = -22, /* Object is not a file. */ + EFFS_PATHTOODEEP = -23, /* Path too deep. */ + EFFS_NUMFD = -24, /* Maximum number of open files reached. */ + EFFS_BADFD = -25, /* Bad file descriptor. */ + EFFS_BADOP = -26, /* Bad options. */ + EFFS_LOCKED = -27, /* File locked by another file descriptor. */ + + EFFS_TOOBIG = -30, /* Too big (buffer overflow). */ + EFFS_MSGALLOC = -31, /* Message allocation failed. */ + EFFS_MSGSEND = -32, /* Message send failed. */ + + EFFS_SIBLINGLOOP = -40, /* Directory sibling loop. */ + EFFS_NOBLOCKS = -41, /* No more blocks. */ + EFFS_DBR = -42, /* Data reclaim did not finish. */ +} T_FFS_RET; + + +/* + * Prototypes for functions provided by the FFS simulation on the PC + */ +T_FFS_FD ffs_open (const char *pathname_p, + T_FFS_OPEN_FLAGS flags); +T_FFS_RET ffs_close (T_FFS_FD fd); +T_FFS_SIZE ffs_write (T_FFS_FD fd, + void *buffer_p, + T_FFS_SIZE size); +T_FFS_SIZE ffs_read (T_FFS_FD fd, + void *buffer_p, + T_FFS_SIZE size); +T_FFS_SIZE ffs_seek (T_FFS_FD fd, + T_FFS_SIZE offset, + T_FFS_WHENCE whence); +T_FFS_RET ffs_ftruncate (T_FFS_FD fd, + T_FFS_OFFSET length); +T_FFS_RET ffs_stat (const char *pathname_p, + T_FFS_STAT *stat_p); +T_FFS_RET ffs_remove (const char *pathname_p); +T_FFS_RET ffs_mkdir (const char *pathname_p); +T_FFS_SIZE ffs_opendir (const char *pathname_p, + T_FFS_DIR *dir_p); +T_FFS_SIZE ffs_readdir (T_FFS_DIR *dir_p, + char *buffer_p, + T_FFS_SIZE size); +T_FFS_RET ffs_rename (const char *old_pathname_p, + const char *new_pathname_p); + +T_FFS_SIZE ffs_file_read(const char *name, void *addr, T_FFS_SIZE size); + +T_FFS_SIZE ffs_init (void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _FFS_PC_API_ */