123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- /*
- ** 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
|