20 #if !defined (_RTEMS_RFS_BUFFER_H_) 21 #define _RTEMS_RFS_BUFFER_H_ 25 #include <rtems/rfs/rtems-rfs-file-system-fwd.h> 26 #include <rtems/rfs/rtems-rfs-trace.h> 33 #if defined (__rtems__) 34 #define RTEMS_RFS_USE_LIBBLOCK 1 40 #if RTEMS_RFS_USE_LIBBLOCK 46 #define rtems_rfs_buffer_io_request rtems_rfs_buffer_bdbuf_request 47 #define rtems_rfs_buffer_io_release rtems_rfs_buffer_bdbuf_release 71 #define rtems_rfs_buffer_io_request rtems_rfs_buffer_deviceio_request 72 #define rtems_rfs_buffer_io_release rtems_rfs_buffer_deviceio_release 114 #define rtems_rfs_buffer_link(_h) (&(_h)->buffer->link) 119 #define rtems_rfs_buffer_data(_h) ((void*)((_h)->buffer->buffer)) 124 #define rtems_rfs_buffer_size(_h) ((_h)->buffer->size) 129 #define rtems_rfs_buffer_bnum(_h) ((_h)->bnum) 134 #define rtems_rfs_buffer_dirty(_h) ((_h)->dirty) 139 #define rtems_rfs_buffer_handle_has_block(_h) ((_h)->buffer ? true : false) 144 #define rtems_rfs_buffer_mark_dirty(_h) ((_h)->dirty = true) 149 #define rtems_rfs_buffer_refs(_h) ((_h)->buffer->references) 154 #define rtems_rfs_buffer_refs_up(_h) ((_h)->buffer->references += 1) 159 #define rtems_rfs_buffer_refs_down(_h) ((_h)->buffer->references -= 1) 205 handle->
dirty =
false;
225 handle->
dirty =
false;
int rtems_rfs_buffer_deviceio_release(rtems_rfs_buffer *handle, bool modified)
Release a buffer to the RTEMS libblock BD buffer cache.
This is used to manage each element (node) which is placed on a chain.
Definition: chain.h:65
ssize_t read(int fd, void *buffer, size_t count)
POSIX 1003.1b 6.4.1 - Read From a File.
Definition: read.c:27
uint32_t rtems_blkdev_bnum
Block device block index type.
Definition: diskdevs.h:46
int rtems_rfs_buffer_close(rtems_rfs_file_system *fs)
Close the buffer interface.
Definition: rtems-rfs-buffer.c:349
int rtems_rfs_buffer_sync(rtems_rfs_file_system *fs)
Sync all buffers to the media.
Definition: rtems-rfs-buffer.c:378
RFS File System data.
Definition: rtems-rfs-file-system.h:123
uint32_t rtems_rfs_buffer_block
Define the method used to interface to the buffers.
Definition: rtems-rfs-buffer.h:62
rtems_rfs_buffer * buffer
Reference the buffer descriptor.
Definition: rtems-rfs-buffer.h:107
int rtems_rfs_buffer_handle_release(rtems_rfs_file_system *fs, rtems_rfs_buffer_handle *handle)
Release a buffer.
Definition: rtems-rfs-buffer.c:200
bool dirty
Has the buffer been modifed?
Definition: rtems-rfs-buffer.h:96
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.
struct rtems_rfs_buffer_handle_t rtems_rfs_buffer_handle
RFS Buffer handle.
To manage buffers we using buffer descriptors (BD).
Definition: bdbuf.h:314
int rtems_rfs_buffer_open(const char *name, rtems_rfs_file_system *fs)
Open the buffer interface.
Definition: rtems-rfs-buffer.c:288
Definition: rtems-rfs-buffer.h:63
RFS Buffer handle.
Definition: rtems-rfs-buffer.h:91
rtems_rfs_buffer_block bnum
Block number.
Definition: rtems-rfs-buffer.h:102
int rtems_rfs_buffers_release(rtems_rfs_file_system *fs)
Release any chained buffers.
Definition: rtems-rfs-buffer.c:466
int rtems_rfs_buffer_setblksize(rtems_rfs_file_system *fs, size_t size)
Set the block size of the device.
Definition: rtems-rfs-buffer.c:414
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.
Definition: rtems-rfs-buffer.c:78
Block Device Buffer Management.