RTEMS 6.1-rc1
|
RTEMS File System Information Node. More...
#include <sys/stat.h>
#include <rtems/rfs/rtems-rfs-data.h>
#include <rtems/rfs/rtems-rfs-file-system.h>
Go to the source code of this file.
Data Structures | |
struct | _rtems_rfs_inode |
struct | _rtems_rfs_inode_handle |
Macros | |
#define | RTEMS_RFS_S_ISUID S_ISUID |
#define | RTEMS_RFS_S_ISGID S_ISGID |
#define | RTEMS_RFS_S_ISVTX S_ISVTX |
#define | RTEMS_RFS_S_IREAD S_IREAD |
#define | RTEMS_RFS_S_IWRITE S_IWRITE |
#define | RTEMS_RFS_S_IEXEC S_IEXEC |
#define | RTEMS_RFS_S_ENFMT S_ENFMT |
#define | RTEMS_RFS_S_IFMT S_IFMT |
#define | RTEMS_RFS_S_IFDIR S_IFDIR |
#define | RTEMS_RFS_S_IFCHR S_IFCHR |
#define | RTEMS_RFS_S_IFBLK S_IFBLK |
#define | RTEMS_RFS_S_IFREG S_IFREG |
#define | RTEMS_RFS_S_IFLNK S_IFLNK |
#define | RTEMS_RFS_S_IFSOCK S_IFSOCK |
#define | RTEMS_RFS_S_IFIFO S_IFIFO |
#define | RTEMS_RFS_S_IRWXU S_IRWXU |
#define | RTEMS_RFS_S_IRUSR S_IRUSR |
#define | RTEMS_RFS_S_IWUSR S_IWUSR |
#define | RTEMS_RFS_S_IXUSR S_IXUSR |
#define | RTEMS_RFS_S_IRWXG S_IRWXG |
#define | RTEMS_RFS_S_IRGRP S_IRGRP |
#define | RTEMS_RFS_S_IWGRP S_IWGRP |
#define | RTEMS_RFS_S_IXGRP S_IXGRP |
#define | RTEMS_RFS_S_IRWXO S_IRWXO |
#define | RTEMS_RFS_S_IROTH S_IROTH |
#define | RTEMS_RFS_S_IWOTH S_IWOTH |
#define | RTEMS_RFS_S_IXOTH S_IXOTH |
#define | RTEMS_RFS_S_ISBLK(m) S_ISBLK(m) |
#define | RTEMS_RFS_S_ISCHR(m) S_ISCHR(m) |
#define | RTEMS_RFS_S_ISDIR(m) S_ISDIR(m) |
#define | RTEMS_RFS_S_ISFIFO(m) S_ISFIFO(m) |
#define | RTEMS_RFS_S_ISREG(m) S_ISREG(m) |
#define | RTEMS_RFS_S_ISLNK(m) S_ISLNK(m) |
#define | RTEMS_RFS_S_ISSOCK(m) S_ISSOCK(m) |
#define | RTEMS_RFS_S_SYMLINK RTEMS_RFS_S_IFLNK | RTEMS_RFS_S_IRWXU | RTEMS_RFS_S_IRWXG | RTEMS_RFS_S_IRWXO |
#define | RTEMS_RFS_INODE_DATA_NAME_SIZE (RTEMS_RFS_INODE_BLOCKS * sizeof (rtems_rfs_inode_block)) |
#define | RTEMS_RFS_INODE_SIZE (sizeof (rtems_rfs_inode)) |
#define | rtems_rfs_inode_is_loaded(_h) ((_h)->node) |
#define | rtems_rfs_inode_ino(_h) ((_h)->ino) |
Typedefs | |
typedef uint32_t | rtems_rfs_ino |
typedef uint32_t | rtems_rfs_time |
typedef uint32_t | rtems_rfs_inode_block |
typedef struct _rtems_rfs_inode | rtems_rfs_inode |
typedef struct _rtems_rfs_inode_handle | rtems_rfs_inode_handle |
RTEMS File System Information Node.
RTEMS File System Information Node.
The information nodes hold the data about all nodes in the file system.
#define RTEMS_RFS_INODE_DATA_NAME_SIZE (RTEMS_RFS_INODE_BLOCKS * sizeof (rtems_rfs_inode_block)) |
The size of the data name field in the inode.
#define rtems_rfs_inode_ino | ( | _h | ) | ((_h)->ino) |
Get the inode ino for a handle.
#define rtems_rfs_inode_is_loaded | ( | _h | ) | ((_h)->node) |
Is the inode loaded ?
#define RTEMS_RFS_INODE_SIZE (sizeof (rtems_rfs_inode)) |
The size of an inode.
#define RTEMS_RFS_S_ENFMT S_ENFMT |
Enforcement-mode locking
#define RTEMS_RFS_S_IEXEC S_IEXEC |
Execute/search permission, owner
#define RTEMS_RFS_S_IFBLK S_IFBLK |
Block special
#define RTEMS_RFS_S_IFCHR S_IFCHR |
Character special
#define RTEMS_RFS_S_IFDIR S_IFDIR |
Directory
#define RTEMS_RFS_S_IFIFO S_IFIFO |
Fifo
#define RTEMS_RFS_S_IFLNK S_IFLNK |
Symbolic link
#define RTEMS_RFS_S_IFMT S_IFMT |
Type of file
#define RTEMS_RFS_S_IFREG S_IFREG |
Regular
#define RTEMS_RFS_S_IFSOCK S_IFSOCK |
Socket
#define RTEMS_RFS_S_IREAD S_IREAD |
Read permission, owner
#define RTEMS_RFS_S_IRGRP S_IRGRP |
Read permission, group
#define RTEMS_RFS_S_IROTH S_IROTH |
Read permission, other
#define RTEMS_RFS_S_IRUSR S_IRUSR |
Read permission, owner
#define RTEMS_RFS_S_ISGID S_ISGID |
Set group id on execution
#define RTEMS_RFS_S_ISUID S_ISUID |
The RFS mode definitions. Currently map to the C library ones. Set user id on execution
#define RTEMS_RFS_S_ISVTX S_ISVTX |
Save swapped text even after use
#define RTEMS_RFS_S_IWGRP S_IWGRP |
Write permission, grougroup
#define RTEMS_RFS_S_IWOTH S_IWOTH |
Write permission, other
#define RTEMS_RFS_S_IWRITE S_IWRITE |
Write permission, owner
#define RTEMS_RFS_S_IWUSR S_IWUSR |
Write permission, owner
#define RTEMS_RFS_S_IXGRP S_IXGRP |
Execute/search permission, group
#define RTEMS_RFS_S_IXOTH S_IXOTH |
Execute/search permission, other
#define RTEMS_RFS_S_IXUSR S_IXUSR |
Execute/search permission, owner
#define RTEMS_RFS_S_SYMLINK RTEMS_RFS_S_IFLNK | RTEMS_RFS_S_IRWXU | RTEMS_RFS_S_IRWXG | RTEMS_RFS_S_IRWXO |
Permissions of a symlink.
typedef uint32_t rtems_rfs_ino |
The inode number or ino.
typedef struct _rtems_rfs_inode rtems_rfs_inode |
The inode.
typedef uint32_t rtems_rfs_inode_block |
The size of a block value on disk. This include the inodes and indirect tables.
typedef struct _rtems_rfs_inode_handle rtems_rfs_inode_handle |
RFS Inode Handle.
typedef uint32_t rtems_rfs_time |
The time in the file system.
int rtems_rfs_inode_alloc | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_bitmap_bit | goal, | ||
rtems_rfs_ino * | ino | ||
) |
Allocate an inode number and return it.
[in] | fs | is the file system data. |
[out] | ino | will contain the ino. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_close | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_inode_handle * | handle | ||
) |
The close inode handle. All opened inodes need to be closed.
[in] | fs | is the file system. |
[in] | handle | is the handle to close. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_create | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_ino | parent, | ||
const char * | name, | ||
size_t | length, | ||
uint16_t | mode, | ||
uint16_t | links, | ||
uid_t | uid, | ||
gid_t | gid, | ||
rtems_rfs_ino * | ino | ||
) |
Create an inode allocating, initialising and adding an entry to the parent directory.
[in] | fs | is the file system data. |
[in] | parent | is the parent inode number to add the directory entry to. |
[in] | name | is a pointer to the name of the directory entryinode to create. |
int rtems_rfs_inode_delete | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_inode_handle * | handle | ||
) |
Delete the inode eraseing it and release the buffer to commit the write. You need to load the inode again if you wish to use it again.
[in] | fs | is the file system. |
[in] | handle | is the inode handle to erase. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_free | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_ino | ino | ||
) |
Free an inode.
[in] | fs | is the file system data. |
[in] | ino | is the ino too free. |
0 | Successful operation. |
error_code | An error occurred. |
rtems_rfs_pos rtems_rfs_inode_get_size | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_inode_handle * | handle | ||
) |
Calculate the size of data attached to the inode.
[in] | fs | is the file system data. |
[in] | handle | is the inode handle. |
size | The data size in bytes in the block map attched to the inode. |
int rtems_rfs_inode_initialise | ( | rtems_rfs_inode_handle * | handle, |
uint16_t | links, | ||
uint16_t | mode, | ||
uid_t | uid, | ||
gid_t | gid | ||
) |
Initialise a new inode.
[in] | handle | is the inode handle to initialise. |
[in] | links | are the number of links to the inode. |
[in] | mode | is the inode mode. |
[in] | uid | is the user id. |
[in] | gid | is the group id. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_load | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_inode_handle * | handle | ||
) |
Load the inode into memory.
[in] | fs | is the file system. |
[in] | handle | is the inode handle to load. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_open | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_ino | ino, | ||
rtems_rfs_inode_handle * | handle, | ||
bool | load | ||
) |
Open the inode handle. This reads the inode into the buffer and sets the data pointer. All data is in media byte order and needs to be accessed via the supporting calls.
[in] | fs | is the file system. |
[in] | ino | is the inode number. |
[in] | handle | is the handle to the inode we are opening. |
[in] | load | If true load the inode into memory from the media. |
0 | Successful operation. |
error_code | An error occurred. |
int rtems_rfs_inode_time_stamp_now | ( | rtems_rfs_inode_handle * | handle, |
bool | atime, | ||
bool | mtime | ||
) |
Time stamp the inode with the current time. The ctime field is hanlded automatically.
[in] | handle | is the inode handle. |
[in] | atime | Update the atime field. |
[in] | mtime | UPdate the mtime field. |
0 | Successful operation. |
ENXIO | No inode is loaded. |
error_code | An error occurred. |
int rtems_rfs_inode_unload | ( | rtems_rfs_file_system * | fs, |
rtems_rfs_inode_handle * | handle, | ||
bool | update_ctime | ||
) |
Unload the inode from memory.
[in] | fs | is the file system. |
[in] | handle | is the inode handle to unload. |
[in] | update_ctime | Update the ctime field of the inode. |
0 | Successful operation. |
error_code | An error occurred. |