RTEMS: cpukit/include/rtems/rfs/rtems-rfs-inode.h File Reference

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
rtems-rfs-inode.h File Reference
IO Library » File System Types and Mount » RTEMS File System Group Management

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

## Functions
int | rtems_rfs_inode_alloc (rtems_rfs_file_system *fs, rtems_rfs_bitmap_bit goal, rtems_rfs_ino *ino)
int | rtems_rfs_inode_free (rtems_rfs_file_system *fs, rtems_rfs_ino ino)
int | rtems_rfs_inode_open (rtems_rfs_file_system *fs, rtems_rfs_ino ino, rtems_rfs_inode_handle *handle, bool load)
int | rtems_rfs_inode_close (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)
int | rtems_rfs_inode_load (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)
int | rtems_rfs_inode_unload (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle, bool update_ctime)
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)
int | rtems_rfs_inode_delete (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)
int | rtems_rfs_inode_initialise (rtems_rfs_inode_handle *handle, uint16_t links, uint16_t mode, uid_t uid, gid_t gid)
int | rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle *handle, bool atime, bool mtime)
rtems_rfs_pos | rtems_rfs_inode_get_size (rtems_rfs_file_system *fs, rtems_rfs_inode_handle *handle)

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

## Macro Definition Documentation

## ◆ RTEMS_RFS_INODE_DATA_NAME_SIZE

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

## ◆ rtems_rfs_inode_ino

#define rtems_rfs_inode_ino | ( |  | _h | ) | ((_h)->ino)

Get the inode ino for a handle.

## ◆ rtems_rfs_inode_is_loaded

#define rtems_rfs_inode_is_loaded | ( |  | _h | ) | ((_h)->node)

Is the inode loaded ?

## ◆ RTEMS_RFS_INODE_SIZE

#define RTEMS_RFS_INODE_SIZE (sizeof (rtems_rfs_inode))

The size of an inode.

## ◆ RTEMS_RFS_S_ENFMT

#define RTEMS_RFS_S_ENFMT S_ENFMT

Enforcement-mode locking

## ◆ RTEMS_RFS_S_IEXEC

#define RTEMS_RFS_S_IEXEC S_IEXEC

Execute/search permission, owner

## ◆ RTEMS_RFS_S_IFBLK

#define RTEMS_RFS_S_IFBLK S_IFBLK

Block special

## ◆ RTEMS_RFS_S_IFCHR

#define RTEMS_RFS_S_IFCHR S_IFCHR

Character special

## ◆ RTEMS_RFS_S_IFDIR

#define RTEMS_RFS_S_IFDIR S_IFDIR

Directory

## ◆ RTEMS_RFS_S_IFIFO

#define RTEMS_RFS_S_IFIFO S_IFIFO

Fifo

## ◆ RTEMS_RFS_S_IFLNK

#define RTEMS_RFS_S_IFLNK S_IFLNK

Symbolic link

## ◆ RTEMS_RFS_S_IFMT

#define RTEMS_RFS_S_IFMT S_IFMT

Type of file

## ◆ RTEMS_RFS_S_IFREG

#define RTEMS_RFS_S_IFREG S_IFREG

Regular

## ◆ RTEMS_RFS_S_IFSOCK

#define RTEMS_RFS_S_IFSOCK S_IFSOCK

Socket

## ◆ RTEMS_RFS_S_IREAD

#define RTEMS_RFS_S_IREAD S_IREAD

Read permission, owner

## ◆ RTEMS_RFS_S_IRGRP

#define RTEMS_RFS_S_IRGRP S_IRGRP

Read permission, group

## ◆ RTEMS_RFS_S_IROTH

#define RTEMS_RFS_S_IROTH S_IROTH

Read permission, other

## ◆ RTEMS_RFS_S_IRUSR

#define RTEMS_RFS_S_IRUSR S_IRUSR

Read permission, owner

## ◆ RTEMS_RFS_S_ISGID

#define RTEMS_RFS_S_ISGID S_ISGID

Set group id on execution

## ◆ RTEMS_RFS_S_ISUID

#define RTEMS_RFS_S_ISUID S_ISUID

The RFS mode definitions. Currently map to the C library ones. Set user id on execution

## ◆ RTEMS_RFS_S_ISVTX

#define RTEMS_RFS_S_ISVTX S_ISVTX

Save swapped text even after use

## ◆ RTEMS_RFS_S_IWGRP

#define RTEMS_RFS_S_IWGRP S_IWGRP

Write permission, grougroup

## ◆ RTEMS_RFS_S_IWOTH

#define RTEMS_RFS_S_IWOTH S_IWOTH

Write permission, other

## ◆ RTEMS_RFS_S_IWRITE

#define RTEMS_RFS_S_IWRITE S_IWRITE

Write permission, owner

## ◆ RTEMS_RFS_S_IWUSR

#define RTEMS_RFS_S_IWUSR S_IWUSR

Write permission, owner

## ◆ RTEMS_RFS_S_IXGRP

#define RTEMS_RFS_S_IXGRP S_IXGRP

Execute/search permission, group

## ◆ RTEMS_RFS_S_IXOTH

#define RTEMS_RFS_S_IXOTH S_IXOTH

Execute/search permission, other

## ◆ RTEMS_RFS_S_IXUSR

#define RTEMS_RFS_S_IXUSR S_IXUSR

Execute/search permission, owner

## ◆ RTEMS_RFS_S_SYMLINK

#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 Documentation

## ◆ rtems_rfs_ino

typedef uint32_t rtems_rfs_ino

The inode number or ino.

## ◆ rtems_rfs_inode

typedef struct _rtems_rfs_inode rtems_rfs_inode

The inode.

## ◆ rtems_rfs_inode_block

typedef uint32_t rtems_rfs_inode_block

The size of a block value on disk. This include the inodes and indirect tables.

## ◆ rtems_rfs_inode_handle

typedef struct _rtems_rfs_inode_handle rtems_rfs_inode_handle

RFS Inode Handle.

## ◆ rtems_rfs_time

typedef uint32_t rtems_rfs_time

The time in the file system.

## Function Documentation

## ◆ rtems_rfs_inode_alloc()

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] | fs | is the file system data.
  [out] | ino | will contain the ino.

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_close()

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] | fs | is the file system.
  [in] | handle | is the handle to close.

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_create()

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

## ◆ rtems_rfs_inode_delete()

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] | fs | is the file system.
  [in] | handle | is the inode handle to erase.

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_free()

int rtems_rfs_inode_free | ( | rtems_rfs_file_system * | fs,
|  | rtems_rfs_ino | ino
| ) |  |

Free an inode.

Parameters

  [in] | fs | is the file system data.
  [in] | ino | is the ino too free.

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_get_size()

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] | fs | is the file system data.
  [in] | handle | is the inode handle.

Return values

  size | The data size in bytes in the block map attched to the inode.

## ◆ rtems_rfs_inode_initialise()

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

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_load()

int rtems_rfs_inode_load | ( | rtems_rfs_file_system * | fs,
|  | rtems_rfs_inode_handle * | handle
| ) |  |

Load the inode into memory.

Parameters

  [in] | fs | is the file system.
  [in] | handle | is the inode handle to load.

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_open()

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

Return values

  0 | Successful operation.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_time_stamp_now()

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] | handle | is the inode handle.
  [in] | atime | Update the atime field.
  [in] | mtime | UPdate the mtime field.

Return values

  0 | Successful operation.
  ENXIO | No inode is loaded.
  error_code | An error occurred.

## ◆ rtems_rfs_inode_unload()

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] | fs | is the file system.
  [in] | handle | is the inode handle to unload.
  [in] | update_ctime | Update the ctime field of the inode.

Return values

  0 | Successful operation.
  error_code | An error occurred.