RTEMS CPU Kit with SuperCore  4.11.3
Data Structures | Macros | Typedefs | Functions

Maps Blocks to the Media Interface Layers. More...

#include <errno.h>
#include <rtems/rfs/rtems-rfs-file-system-fwd.h>
#include <rtems/rfs/rtems-rfs-trace.h>
Include dependency graph for rtems-rfs-buffer.h:

Go to the source code of this file.

Data Structures

struct  _rtems_rfs_buffer
 
struct  rtems_rfs_buffer_handle_t
 RFS Buffer handle. More...
 

Macros

#define rtems_rfs_buffer_io_request   rtems_rfs_buffer_deviceio_request
 
#define rtems_rfs_buffer_io_release   rtems_rfs_buffer_deviceio_release
 
#define rtems_rfs_buffer_link(_h)   (&(_h)->buffer->link)
 The buffer linkage.
 
#define rtems_rfs_buffer_data(_h)   ((void*)((_h)->buffer->buffer))
 Return the start of the data area of the buffer given a handle.
 
#define rtems_rfs_buffer_size(_h)   ((_h)->buffer->size)
 Return the size of the buffer given a handle.
 
#define rtems_rfs_buffer_bnum(_h)   ((_h)->bnum)
 Return the block number.
 
#define rtems_rfs_buffer_dirty(_h)   ((_h)->dirty)
 Return the buffer dirty status.
 
#define rtems_rfs_buffer_handle_has_block(_h)   ((_h)->buffer ? true : false)
 Does the handle have a valid block attached ?
 
#define rtems_rfs_buffer_mark_dirty(_h)   ((_h)->dirty = true)
 Mark the buffer as dirty.
 
#define rtems_rfs_buffer_refs(_h)   ((_h)->buffer->references)
 Return the reference count.
 
#define rtems_rfs_buffer_refs_up(_h)   ((_h)->buffer->references += 1)
 Increment the reference count.
 
#define rtems_rfs_buffer_refs_down(_h)   ((_h)->buffer->references -= 1)
 Decrement the reference count.
 

Typedefs

typedef uint32_t rtems_rfs_buffer_block
 Define the method used to interface to the buffers. More...
 
typedef struct _rtems_rfs_buffer rtems_rfs_buffer
 
typedef struct rtems_rfs_buffer_handle_t rtems_rfs_buffer_handle
 RFS Buffer handle.
 

Functions

int rtems_rfs_buffer_deviceio_request (rtems_rfs_file_system *fs, rtems_rfs_buffer_block block, bool read, rtems_rfs_buffer *buffer)
 Request a buffer from the device I/O.
 
int rtems_rfs_buffer_deviceio_release (rtems_rfs_buffer *handle, bool modified)
 Release a buffer to the RTEMS libblock BD buffer cache.
 
int rtems_rfs_buffer_handle_request (rtems_rfs_file_system *fs, rtems_rfs_buffer_handle *handle, rtems_rfs_buffer_block block, bool read)
 Request a buffer. More...
 
int rtems_rfs_buffer_handle_release (rtems_rfs_file_system *fs, rtems_rfs_buffer_handle *handle)
 Release a buffer. More...
 
int rtems_rfs_buffer_open (const char *name, rtems_rfs_file_system *fs)
 Open the buffer interface. More...
 
int rtems_rfs_buffer_close (rtems_rfs_file_system *fs)
 Close the buffer interface. More...
 
int rtems_rfs_buffer_sync (rtems_rfs_file_system *fs)
 Sync all buffers to the media. More...
 
int rtems_rfs_buffer_setblksize (rtems_rfs_file_system *fs, size_t size)
 Set the block size of the device. More...
 
int rtems_rfs_buffers_release (rtems_rfs_file_system *fs)
 Release any chained buffers. More...
 

Detailed Description

Maps Blocks to the Media Interface Layers.

These functions map blocks to the media interface layers.

Typedef Documentation

◆ rtems_rfs_buffer_block

typedef uint32_t rtems_rfs_buffer_block

Define the method used to interface to the buffers.

It can be libblock or device I/O. The libblock interface is to the RTEMS cache and block devices and device I/O accesses the media via a device file handle. The RTEMS RFS I/O Layering.

Function Documentation

◆ rtems_rfs_buffer_close()

int rtems_rfs_buffer_close ( rtems_rfs_file_system fs)

Close the buffer interface.

Parameters
[in]fsis the file system data.
Return values
0Successful operation.
error_codeAn error occurred.

◆ rtems_rfs_buffer_handle_release()

int rtems_rfs_buffer_handle_release ( rtems_rfs_file_system fs,
rtems_rfs_buffer_handle handle 
)

Release a buffer.

If the buffer is dirty the buffer is written to disk. The result does not indicate if the data was successfully written to the disk as this operation may be performed in asynchronously to this release.

Parameters
[in]fsis the file system data.
[in]handleis the handle the requested buffer is attached to.
Return values
0Successful operation.
error_codeAn error occurred.

Referenced by rtems_rfs_file_io_release().

◆ rtems_rfs_buffer_handle_request()

int rtems_rfs_buffer_handle_request ( rtems_rfs_file_system fs,
rtems_rfs_buffer_handle handle,
rtems_rfs_buffer_block  block,
bool  read 
)

Request a buffer.

The buffer can be filled with data from the media (read == true) or you can request a buffer to fill with data.

Parameters
[in]fsis the file system data.
[in]handleis the handle the requested buffer is attached to.
[in]blockis the block number.
[in]readRead the data from the disk.
Return values
0Successful operation.
error_codeAn error occurred.

◆ rtems_rfs_buffer_open()

int rtems_rfs_buffer_open ( const char *  name,
rtems_rfs_file_system fs 
)

Open the buffer interface.

Parameters
[in]nameis a pointer to the device name to the media.
[in]fsis the file system data.
Return values
0Successful operation.
error_codeAn error occurred.

◆ rtems_rfs_buffer_setblksize()

int rtems_rfs_buffer_setblksize ( rtems_rfs_file_system fs,
size_t  size 
)

Set the block size of the device.

Parameters
[in]fsis the file system data.
[in]sizeis the new block size.
Return values
0Successful operation.
error_codeAn error occurred.

◆ rtems_rfs_buffer_sync()

int rtems_rfs_buffer_sync ( rtems_rfs_file_system fs)

Sync all buffers to the media.

Parameters
[in]fsis the file system data.
Return values
0Successful operation.
error_codeAn error occurred.

Referenced by rtems_rfs_rtems_fdatasync().

◆ rtems_rfs_buffers_release()

int rtems_rfs_buffers_release ( rtems_rfs_file_system fs)

Release any chained buffers.

Parameters
[in]fsis the file system data.
Return values
0Successful operation.
error_codeAn error occurred.