Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
RamDisk Class Reference

A simple device driver that reads/write data from a block of memory in a typed array either statically or dynamically allocated. More...

#include <RamDisk.hxx>

Inheritance diagram for RamDisk:
RamDiskBase Node Device FileIO

Public Member Functions

 RamDisk (const char *path, size_t size)
 Allocates space on the heap for the ramdisk of size ‘size’.
 
template<class T >
 RamDisk (const char *path, T *data, bool read_only=false)
 Uses an existing variable for backing the ramdisk structure.
 
- Public Member Functions inherited from RamDiskBase
 RamDiskBase (const char *path, void *data, unsigned size, bool read_only)
 Constructor.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Additional Inherited Members

- Static Public Member Functions inherited from Device
static int open (struct _reent *reent, const char *path, int flags, int mode)
 Open a file or device.
 
static int close (struct _reent *reent, int fd)
 Close a file or device.
 
static int stat (struct _reent *reent, const char *path, struct stat *stat)
 Get the status information of a file or device.
 
static int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout)
 POSIX select().
 
static void select_clear ()
 Clears the current thread's select bits.
 
- Static Public Member Functions inherited from FileIO
static ssize_t read (struct _reent *reent, int fd, void *buf, size_t count)
 Read from a file or device.
 
static ssize_t write (struct _reent *reent, int fd, const void *buf, size_t count)
 Write to a file or device.
 
static _off_t lseek (struct _reent *reent, int fd, _off_t offset, int whence)
 Change the offset index of a file or device.
 
static int fstat (struct _reent *reent, int fd, struct stat *stat)
 Get the status information of a file or device.
 
static int ioctl (int fd, unsigned long int key, unsigned long data)
 Request and ioctl transaction.
 
static int fcntl (int fd, int cmd, unsigned long data)
 Manipulate a file descriptor.
 
static bool is_device (int fd)
 Test if the file descriptor belongs to a device.
 
- Protected Member Functions inherited from RamDiskBase
off_t file_size ()
 
- Protected Member Functions inherited from Node
 Node (const char *name)
 Constructor.
 
virtual ~Node ()
 Destructor.
 
int close (File *) OVERRIDE
 Close method.
 
virtual int fstat (File *file, struct stat *stat) override
 Get the status information of a file or device.
 
- Protected Member Functions inherited from FileIO
 FileIO (const char *name)
 Constructor.
 
virtual ~FileIO ()
 Destructor.
 
virtual off_t lseek (File *f, off_t offset, int whence)
 Seek method.
 
virtual int ioctl (File *file, unsigned long int key, unsigned long data)
 Request an ioctl transaction.
 
virtual int fcntl (File *file, int cmd, unsigned long data)
 Manipulate a file descriptor.
 
virtual bool select (File *file, int mode)
 Device select method.
 
- Static Protected Member Functions inherited from Device
static void select_insert (SelectInfo *info)
 Add client to list of clients needing woken.
 
static void select_wakeup (SelectInfo *info)
 Wakeup the list of clients needing woken.
 
static void select_wakeup_from_isr (SelectInfo *info, int *woken)
 Wakeup the list of clients needing woken.
 
- Static Protected Member Functions inherited from FileIO
static int fd_alloc (void)
 Allocate a free file descriptor.
 
static void fd_free (int fd)
 Free up a file descriptor.
 
static Filefile_lookup (int fd)
 Looks up a reference to a File corresponding to a given file descriptor.
 
static int fd_lookup (File *file)
 Looks up a file descriptor corresponding to a given File reference.
 
- Protected Attributes inherited from RamDiskBase
uint8_t * data_
 Pointer to data content.
 
unsigned actualSize_ = 0
 What's the larget file offset that we received an actual write for.
 
unsigned size_: 30
 How many bytes we are exporting.
 
unsigned readOnly_: 1
 1 ifreadonly file.
 
unsigned owned_: 1
 1 if we own the data bytes and need to free()them upon exit.
 
- Protected Attributes inherited from Node
OSMutex lock_
 protects internal structures.
 
mode_t mode_
 File open mode, such as O_NONBLOCK.
 
unsigned int references_
 number of open references
 
- Protected Attributes inherited from FileIO
const char * name
 device name
 
- Static Protected Attributes inherited from FileIO
static const unsigned int numOpenFiles = 20
 
static File files []
 File descriptor pool.
 
static OSMutex mutex
 mutual exclusion for fileio
 

Detailed Description

A simple device driver that reads/write data from a block of memory in a typed array either statically or dynamically allocated.

Example: RamDisk rdisk("/dev/volatile_config", 256);

Definition at line 152 of file RamDisk.hxx.

Constructor & Destructor Documentation

◆ RamDisk() [1/2]

RamDisk::RamDisk ( const char *  path,
size_t  size 
)
inline

Allocates space on the heap for the ramdisk of size ‘size’.

Definition at line 156 of file RamDisk.hxx.

◆ RamDisk() [2/2]

template<class T >
RamDisk::RamDisk ( const char *  path,
T *  data,
bool  read_only = false 
)
inline

Uses an existing variable for backing the ramdisk structure.

The variable is usually of a struct type, such as openlcb::SimpleNodeDynamicValues. The variable may also be in flash.

Parameters
pathis the device node name (e.g "/etc/node_config")
datais the variable to export
read_onlyif set, writes will be ignored.

Definition at line 170 of file RamDisk.hxx.

◆ ~RamDisk()

RamDisk::~RamDisk ( )
inline

Definition at line 176 of file RamDisk.hxx.


The documentation for this class was generated from the following file: