diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2016-02-23 09:31:25 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2016-02-23 09:31:25 +0000 |
commit | 430facf5652c09fee1d77ebad2fb1cca641de544 (patch) | |
tree | 1491d02fb14ef5bbd21ea1d464658a0332802d32 /os/common/abstractions/nasa-osal/include/osapi-os-filesys.h | |
parent | 2240934707a4e434c76329ad3051a6ba5c09e299 (diff) | |
download | ChibiOS-430facf5652c09fee1d77ebad2fb1cca641de544.tar.gz ChibiOS-430facf5652c09fee1d77ebad2fb1cca641de544.tar.bz2 ChibiOS-430facf5652c09fee1d77ebad2fb1cca641de544.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8931 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common/abstractions/nasa-osal/include/osapi-os-filesys.h')
-rw-r--r-- | os/common/abstractions/nasa-osal/include/osapi-os-filesys.h | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/os/common/abstractions/nasa-osal/include/osapi-os-filesys.h b/os/common/abstractions/nasa-osal/include/osapi-os-filesys.h new file mode 100644 index 000000000..c46800341 --- /dev/null +++ b/os/common/abstractions/nasa-osal/include/osapi-os-filesys.h @@ -0,0 +1,419 @@ +/* +** File: osapi-os-filesys.h +** +** Copyright (c) 2004-2006, United States government as represented by the +** administrator of the National Aeronautics Space Administration. +** All rights reserved. This software was created at NASAs Goddard +** Space Flight Center pursuant to government contracts. +** +** This is governed by the NASA Open Source Agreement and may be used, +** distributed and modified only pursuant to the terms of that agreement. +** +** Author: Alan Cudmore Code 582 +** +** Purpose: Contains functions prototype definitions and variables declarations +** for the OS Abstraction Layer, File System module +** +** $Revision: 1.11 $ +** +** $Date: 2013/12/16 12:57:41GMT-05:00 $ +** +** $Log: osapi-os-filesys.h $ +** Revision 1.11 2013/12/16 12:57:41GMT-05:00 acudmore +** Added macros for Volume name length and physical device name length +** Revision 1.10 2013/07/29 12:05:48GMT-05:00 acudmore +** Added define for device and volume name length +** Revision 1.9 2013/07/25 14:31:21GMT-05:00 acudmore +** Added prototype and datatype for OS_GetFsInfo +** Revision 1.8 2011/12/05 12:04:21GMT-05:00 acudmore +** Added OS_rewinddir API +** Revision 1.7 2011/04/05 16:01:12EDT acudmore +** Added OS_CloseFileByName and OS_CloseAllFiles +** Revision 1.6 2010/11/15 11:04:38EST acudmore +** Added OS_FileOpenCheck function. +** Revision 1.5 2010/11/12 12:00:18EST acudmore +** replaced copyright character with (c) and added open source notice where needed. +** Revision 1.4 2010/02/01 12:28:57EST acudmore +** Added OS_fsBytesFree API +** Revision 1.3 2010/01/25 14:44:26EST acudmore +** renamed "new" variable to avoid C++ reserved name conflict. +** Revision 1.2 2009/07/14 15:16:05EDT acudmore +** Added OS_TranslatePath to the API +** Revision 1.1 2008/04/20 22:36:01EDT ruperera +** Initial revision +** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj +** Revision 1.1 2007/10/16 16:14:52EDT apcudmore +** Initial revision +** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/os/inc/project.pj +** Revision 1.1 2007/08/24 13:43:24EDT apcudmore +** Initial revision +** Member added to project d:/mksdata/MKS-CFE-PROJECT/fsw/cfe-core/os/inc/project.pj +** Revision 1.17 2007/06/07 09:59:14EDT njyanchik +** I replaced the second OS_cp definition with OS_mv +** Revision 1.16 2007/06/05 16:25:33EDT apcudmore +** Increased Number of volume table entries from 10 to 14. +** Added 2 extra EEPROM disk mappings to RAD750 Volume table + 2 spares +** Added 4 spares to every other volume table. +** Revision 1.15 2007/05/25 09:17:56EDT njyanchik +** I added the rmfs call to the OSAL and updated the unit test stubs to match +** Revision 1.14 2007/03/21 10:15:29EST njyanchik +** I mistakenly put the wrong length in for the path in the OS_FDTableEntry structure, and I added +** some code that will set and out of range file descriptors .IsValid flag to false in OS_FDGetInfo +** Revision 1.13 2007/03/06 11:52:46EST njyanchik +** This change goes with the previous CP, I forgot to include it +** Revision 1.12 2007/02/28 14:57:45EST njyanchik +** The updates for supporting copying and moving files are now supported +** Revision 1.11 2007/02/27 15:22:11EST njyanchik +** This CP has the initial import of the new file descripor table mechanism +** Revision 1.10 2006/12/20 10:27:09EST njyanchik +** This change package incorporates all the changes necessary for the addition +** of a new API to get the real physical drive undernieth a mount point +** Revision 1.9 2006/11/14 14:44:28GMT-05:00 njyanchik +** Checks were added to the OS fs calls that look at the return of a function that +** changes the name of paths from abstracted to local path names. +** Revision 1.8 2006/10/30 16:12:19GMT-05:00 apcudmore +** Updated Compact flash and RAM device names for vxWorks 6.2 changes. +** Revision 1.7 2006/10/25 11:31:18EDT njyanchik +** This CP incorporates changes to every bsp_voltab.c file. I increased the number +** entries in the volume table to 10. I also changed the #define in the os_filesys.h +** file for the number of entries to match. +** +** This update also includes adding the prototype for OS_initfs in os_filesys.h +** Revision 1.6 2006/09/26 09:03:46GMT-05:00 njyanchik +** Contains the initial import of the ES Shell commands interface +** Revision 1.5 2006/07/25 15:37:52EDT njyanchik +** It turns out the both the FS app and the OSAL were incorrect where file descriptors are +** concerned. the file descriptors should be int32 across the board. +** Revision 1.4 2006/01/20 11:56:18EST njyanchik +** Fixed header file information to match api document +** Revision 1.26 2005/07/12 17:13:56 nyanchik +** Moved the Volume table to a bsp table in the arch directories. +** +** Revision 1.2 2005/07/11 16:26:57EDT apcudmore +** OSAPI 2.0 integration +** Revision 1.25 2005/07/06 16:11:17 nyanchik +** *** empty log message *** +** +** Revision 1.24 2005/07/05 18:34:55 nyanchik +** fixed issues found in code walkthrogh. Also removed the OS_Info* functions that are going in the BSP +** +** Revision 1.23 2005/06/17 19:46:34 nyanchik +** added new file system style to linux and rtems. +** +** Revision 1.22 2005/06/15 16:43:48 nyanchik +** added extra parenthesis for the .h file # defines +** +** Revision 1.21 2005/06/06 14:17:42 nyanchik +** added headers to osapi-os-core.h and osapi-os-filesys.h +** +** Revision 1.20 2005/06/02 18:04:24 nyanchik +** *** empty log message *** +** +** Revision 1.1 2005/03/15 18:26:32 nyanchik +** *** empty log message *** +** +** +** Date Written: +** +** +*/ + +#ifndef _osapi_filesys_ +#define _osapi_filesys_ +#include <stdio.h> +#include <stdlib.h> +#include <dirent.h> +#include <sys/stat.h> + +#define OS_READ_ONLY 0 +#define OS_WRITE_ONLY 1 +#define OS_READ_WRITE 2 + +#define OS_SEEK_SET 0 +#define OS_SEEK_CUR 1 +#define OS_SEEK_END 2 + +#define OS_CHK_ONLY 0 +#define OS_REPAIR 1 + +#define FS_BASED 0 +#define RAM_DISK 1 +#define EEPROM_DISK 2 +#define ATA_DISK 3 + + +/* +** Number of entries in the internal volume table +*/ +#define NUM_TABLE_ENTRIES 14 + +/* +** Length of a Device and Volume name +*/ +#define OS_FS_DEV_NAME_LEN 32 +#define OS_FS_PHYS_NAME_LEN 64 +#define OS_FS_VOL_NAME_LEN 32 + + +/* +** Defines for File System Calls +*/ +#define OS_FS_SUCCESS 0 +#define OS_FS_ERROR (-1) +#define OS_FS_ERR_INVALID_POINTER (-2) +#define OS_FS_ERR_PATH_TOO_LONG (-3) +#define OS_FS_ERR_NAME_TOO_LONG (-4) +#define OS_FS_UNIMPLEMENTED (-5) +#define OS_FS_ERR_DRIVE_NOT_CREATED (-6) +#define OS_FS_ERR_DEVICE_NOT_FREE (-7) +#define OS_FS_ERR_PATH_INVALID (-8) +#define OS_FS_ERR_NO_FREE_FDS (-9) +#define OS_FS_ERR_INVALID_FD (-10) + +/* This typedef is for the OS_FS_GetErrorName function, to ensure + * everyone is making an array of the same length */ + +typedef char os_fs_err_name_t[35]; + + +/* +** Internal structure of the OS volume table for +** mounted file systems and path translation +*/ +typedef struct +{ + char DeviceName [OS_FS_DEV_NAME_LEN]; + char PhysDevName [OS_FS_PHYS_NAME_LEN]; + uint32 VolumeType; + uint8 VolatileFlag; + uint8 FreeFlag; + uint8 IsMounted; + char VolumeName [OS_FS_VOL_NAME_LEN]; + char MountPoint [OS_MAX_PATH_LEN]; + uint32 BlockSize; + +}OS_VolumeInfo_t; + +typedef struct +{ + int32 OSfd; /* The underlying OS's file descriptor */ + char Path[OS_MAX_PATH_LEN]; /* The path of the file opened */ + uint32 User; /* The task id of the task who opened the file*/ + uint8 IsValid; /* Whether or not this entry is valid */ +}OS_FDTableEntry; + +typedef struct +{ + uint32 MaxFds; /* Total number of file descriptors */ + uint32 FreeFds; /* Total number that are free */ + uint32 MaxVolumes; /* Maximum number of volumes */ + uint32 FreeVolumes; /* Total number of volumes free */ +} os_fsinfo_t; + +/* modified to posix calls, since all of the + * applicable OSes use the posix calls */ + +typedef struct stat os_fstat_t; +typedef DIR* os_dirp_t; +typedef struct dirent os_dirent_t; +/* still don't know what this should be*/ +typedef unsigned long int os_fshealth_t; + +/* + * Exported Functions +*/ + + +/****************************************************************************** +** Standard File system API +******************************************************************************/ +/* + * Initializes the File System functions +*/ + +int32 OS_FS_Init(void); + +/* + * Creates a file specified by path +*/ +int32 OS_creat (const char *path, int32 access); + +/* + * Opend a file for reading/writing. Returns file descriptor +*/ +int32 OS_open (const char *path, int32 access, uint32 mode); + +/* + * Closes an open file. +*/ +int32 OS_close (int32 filedes); + +/* + * Reads nbytes bytes from file into buffer +*/ +int32 OS_read (int32 filedes, void *buffer, uint32 nbytes); + +/* + * Write nybytes bytes of buffer into the file +*/ +int32 OS_write (int32 filedes, void *buffer, uint32 nbytes); + +/* + * Changes the permissions of a file +*/ +int32 OS_chmod (const char *path, uint32 access); + +/* + * Returns file status information in filestats +*/ +int32 OS_stat (const char *path, os_fstat_t *filestats); + +/* + * Seeks to the specified position of an open file +*/ +int32 OS_lseek (int32 filedes, int32 offset, uint32 whence); + +/* + * Removes a file from the file system +*/ +int32 OS_remove (const char *path); + +/* + * Renames a file in the file system +*/ +int32 OS_rename (const char *old_filename, const char *new_filename); + +/* + * copies a single file from src to dest +*/ +int32 OS_cp (const char *src, const char *dest); + +/* + * moves a single file from src to dest +*/ +int32 OS_mv (const char *src, const char *dest); + +/* + * Copies the info of an open file to the structure +*/ +int32 OS_FDGetInfo (int32 filedes, OS_FDTableEntry *fd_prop); + +/* +** Check to see if a file is open +*/ +int32 OS_FileOpenCheck(char *Filename); + +/* +** Close all open files +*/ +int32 OS_CloseAllFiles(void); + +/* +** Close a file by filename +*/ +int32 OS_CloseFileByName(char *Filename); + + +/****************************************************************************** +** Directory API +******************************************************************************/ + +/* + * Makes a new directory +*/ +int32 OS_mkdir (const char *path, uint32 access); + +/* + * Opens a directory for searching +*/ +os_dirp_t OS_opendir (const char *path); + +/* + * Closes an open directory +*/ +int32 OS_closedir(os_dirp_t directory); + +/* + * Rewinds an open directory +*/ +void OS_rewinddir(os_dirp_t directory); + +/* + * Reads the next object in the directory +*/ +os_dirent_t * OS_readdir (os_dirp_t directory); + +/* + * Removes an empty directory from the file system. +*/ +int32 OS_rmdir (const char *path); + +/****************************************************************************** +** System Level API +******************************************************************************/ +/* + * Makes a file system +*/ +int32 OS_mkfs (char *address,char *devname, char *volname, + uint32 blocksize, uint32 numblocks); +/* + * Mounts a file system +*/ +int32 OS_mount (const char *devname, char *mountpoint); + +/* + * Initializes an existing file system +*/ +int32 OS_initfs (char *address,char *devname, char *volname, + uint32 blocksize, uint32 numblocks); + +/* + * removes a file system +*/ +int32 OS_rmfs (char *devname); + +/* + * Unmounts a mounted file system +*/ +int32 OS_unmount (const char *mountpoint); + +/* + * Returns the number of free blocks in a file system +*/ +int32 OS_fsBlocksFree (const char *name); + +/* +** Returns the number of free bytes in a file system +** Note the 64 bit data type to support filesystems that +** are greater than 4 Gigabytes +*/ +int32 OS_fsBytesFree (const char *name, uint64 *bytes_free); + +/* + * Checks the health of a file system and repairs it if neccesary +*/ +os_fshealth_t OS_chkfs (const char *name, boolean repair); + +/* + * Returns in the parameter the physical drive underneith the mount point +*/ +int32 OS_FS_GetPhysDriveName (char * PhysDriveName, char * MountPoint); + +/* +** Translates a OSAL Virtual file system path to a host Local path +*/ +int32 OS_TranslatePath ( const char *VirtualPath, char *LocalPath); + +/* +** Returns information about the file system in an os_fsinfo_t +*/ +int32 OS_GetFsInfo(os_fsinfo_t *filesys_info); + +/****************************************************************************** +** Shell API +******************************************************************************/ + +/* executes the shell command passed into is and writes the output of that + * command to the file specified by the given OSAPI file descriptor */ +int32 OS_ShellOutputToFile(char* Cmd, int32 OS_fd); +#endif |