RTEMS CPU Kit with SuperCore  4.10.99.0
Data Structures | Defines | Typedefs | Functions
rtems/rfs/rtems-rfs-inode.h File Reference

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>
Include dependency graph for rtems-rfs-inode.h:
This graph shows which files directly or indirectly include this file:

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...

Defines

#define RTEMS_RFS_S_ISUID   S_ISUID
 The RFS mode definitions.
#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.
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.
int rtems_rfs_inode_free (rtems_rfs_file_system *fs, rtems_rfs_ino ino)
 Free an inode.
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.
int rtems_rfs_inode_close (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)
 The close inode handle.
int rtems_rfs_inode_load (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)
 Load the inode into memory.
int rtems_rfs_inode_unload (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle, bool update_ctime)
 Unload the inode from memory.
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.
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.
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.
int rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle *handle, bool atime, bool mtime)
 Time stamp the inode with the current time.
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.

Detailed Description

RTEMS File System Information Node.

RTEMS File System Information Node.

The information nodes hold the data about all nodes in the file system.


Define Documentation

#define RTEMS_RFS_S_ISUID   S_ISUID

The RFS mode definitions.

Currently map to the C library ones. Set user id on execution


Typedef Documentation

typedef uint32_t rtems_rfs_inode_block

The size of a block value on disk.

This include the inodes and indirect tables.


Function Documentation

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.

Parameters:
[in]fsis the file system data.
[out]inowill contain the ino.
Return values:
0Successful operation.
error_codeAn 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.

Parameters:
[in]fsis the file system.
[in]handleis the handle to close.
Return values:
0Successful operation.
error_codeAn 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.

Parameters:
[in]fsis the file system data.
[in]parentis the parent inode number to add the directory entry to.
[in]nameis 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.

Parameters:
[in]fsis the file system.
[in]handleis the inode handle to erase.
Return values:
0Successful operation.
error_codeAn error occurred.
int rtems_rfs_inode_free ( rtems_rfs_file_system fs,
rtems_rfs_ino  ino 
)

Free an inode.

Parameters:
[in]fsis the file system data.
[in]inois the ino too free.
Return values:
0Successful operation.
error_codeAn 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.

Parameters:
[in]fsis the file system data.
[in]handleis the inode handle.
Return values:
sizeThe 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.

Parameters:
[in]handleis the inode handle to initialise.
[in]linksare the number of links to the inode.
[in]modeis the inode mode.
[in]uidis the user id.
[in]gidis the group id.
Return values:
0Successful operation.
error_codeAn error occurred.
int rtems_rfs_inode_load ( rtems_rfs_file_system fs,
rtems_rfs_inode_handle handle 
)

Load the inode into memory.

Parameters:
[in]fsis the file system.
[in]handleis the inode handle to load.
Return values:
0Successful operation.
error_codeAn 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.

Parameters:
[in]fsis the file system.
[in]inois the inode number.
[in]handleis the handle to the inode we are opening.
[in]loadIf true load the inode into memory from the media.
Return values:
0Successful operation.
error_codeAn 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.

Parameters:
[in]handleis the inode handle.
[in]atimeUpdate the atime field.
[in]mtimeUPdate the mtime field.
Return values:
0Successful operation.
ENXIONo inode is loaded.
error_codeAn 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.

Parameters:
[in]fsis the file system.
[in]handleis the inode handle to unload.
[in]update_ctimeUpdate the ctime field of the inode.
Return values:
0Successful operation.
error_codeAn error occurred.