RTEMS CPU Kit with SuperCore
4.11.3
|
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 |
The inode. More... | |
struct | _rtems_rfs_inode_handle |
RFS Inode Handle. More... | |
Macros | |
#define | RTEMS_RFS_S_ISUID S_ISUID |
The RFS mode definitions. More... | |
#define | RTEMS_RFS_S_ISGID S_ISGID |
Set group id on execution. | |
#define | RTEMS_RFS_S_ISVTX S_ISVTX |
Save swapped text even after use. | |
#define | RTEMS_RFS_S_IREAD S_IREAD |
Read permission, owner. | |
#define | RTEMS_RFS_S_IWRITE S_IWRITE |
Write permission, owner. | |
#define | RTEMS_RFS_S_IEXEC S_IEXEC |
Execute/search permission, owner. | |
#define | RTEMS_RFS_S_ENFMT S_ENFMT |
Enforcement-mode locking. | |
#define | RTEMS_RFS_S_IFMT S_IFMT |
Type of file. | |
#define | RTEMS_RFS_S_IFDIR S_IFDIR |
Directory. | |
#define | RTEMS_RFS_S_IFCHR S_IFCHR |
Character special. | |
#define | RTEMS_RFS_S_IFBLK S_IFBLK |
Block special. | |
#define | RTEMS_RFS_S_IFREG S_IFREG |
Regular. | |
#define | RTEMS_RFS_S_IFLNK S_IFLNK |
Symbolic link. | |
#define | RTEMS_RFS_S_IFSOCK S_IFSOCK |
Socket. | |
#define | RTEMS_RFS_S_IFIFO S_IFIFO |
Fifo. | |
#define | RTEMS_RFS_S_IRWXU S_IRWXU |
#define | RTEMS_RFS_S_IRUSR S_IRUSR |
Read permission, owner. | |
#define | RTEMS_RFS_S_IWUSR S_IWUSR |
Write permission, owner. | |
#define | RTEMS_RFS_S_IXUSR S_IXUSR |
Execute/search permission, owner. | |
#define | RTEMS_RFS_S_IRWXG S_IRWXG |
#define | RTEMS_RFS_S_IRGRP S_IRGRP |
Read permission, group. | |
#define | RTEMS_RFS_S_IWGRP S_IWGRP |
Write permission, grougroup. | |
#define | RTEMS_RFS_S_IXGRP S_IXGRP |
Execute/search permission, group. | |
#define | RTEMS_RFS_S_IRWXO S_IRWXO |
#define | RTEMS_RFS_S_IROTH S_IROTH |
Read permission, other. | |
#define | RTEMS_RFS_S_IWOTH S_IWOTH |
Write permission, other. | |
#define | RTEMS_RFS_S_IXOTH S_IXOTH |
Execute/search permission, other. | |
#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 |
Permissions of a symlink. | |
#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_SIZE (sizeof (rtems_rfs_inode)) |
The size of an inode. | |
#define | rtems_rfs_inode_is_loaded(_h) ((_h)->node) |
Is the inode loaded ? | |
#define | rtems_rfs_inode_ino(_h) ((_h)->ino) |
Get the inode ino for a handle. | |
Typedefs | |
typedef uint32_t | rtems_rfs_ino |
The inode number or ino. | |
typedef uint32_t | rtems_rfs_time |
The time in the file system. | |
typedef uint32_t | rtems_rfs_inode_block |
The size of a block value on disk. More... | |
typedef struct _rtems_rfs_inode | rtems_rfs_inode |
The inode. | |
typedef struct _rtems_rfs_inode_handle | rtems_rfs_inode_handle |
RFS Inode Handle. | |
Functions | |
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. More... | |
int | rtems_rfs_inode_free (rtems_rfs_file_system *fs, rtems_rfs_ino ino) |
Free an inode. More... | |
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. More... | |
int | rtems_rfs_inode_close (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle) |
The close inode handle. More... | |
int | rtems_rfs_inode_load (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle) |
Load the inode into memory. More... | |
int | rtems_rfs_inode_unload (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle, bool update_ctime) |
Unload the inode from memory. More... | |
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. More... | |
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. More... | |
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. More... | |
int | rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle *handle, bool atime, bool mtime) |
Time stamp the inode with the current time. More... | |
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. More... | |
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_S_ISUID S_ISUID |
The RFS mode definitions.
Currently map to the C library ones.Set user id on execution
typedef uint32_t rtems_rfs_inode_block |
The size of a block value on disk.
This include the inodes and indirect tables.
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. |