|
Open Model Railroad Network (OpenMRN)
|
Flash-backed file. More...
#include <TivaFlash.hxx>
Public Member Functions | |
| TivaFlash (const char *name, const void *ptr, size_t length, uint32_t page_size) | |
| Constructor. | |
| ssize_t | read (File *, void *, size_t) OVERRIDE |
| Read method. | |
| ssize_t | write (File *, const void *, size_t) OVERRIDE |
| Write method. | |
| void | enable () OVERRIDE |
| This will be called once when reference-count goes from 0 to positive. | |
| void | disable () OVERRIDE |
| This will be called when reference count goes from non-zero to 0. | |
| void | flush_buffers () OVERRIDE |
| Instructs the device driver to drop all TX and RX queues. | |
Public Member Functions inherited from Device | |
| Device (const char *name) | |
| Constructor. | |
| virtual | ~Device () |
| Destructor. | |
Private Member Functions | |
| uint32_t | subpage_mask () |
| Returns a bitmask with one bits to get the within-page address. | |
| uint32_t | page_mask () |
| Returns a bitmask with one bits to get the page address. | |
| uint32_t | write_page_mask () |
| Returns a bitmask with one bits to get the page address. | |
| uint32_t | write_page_size () |
| Returns a bitmask with one bits to get the page address. | |
| const uint8_t * | read_pointer () |
| uint32_t | read_address () |
Private Attributes | |
| const uint8_t * | base_ |
| Base pointer. | |
| size_t | len_ |
| Number of bytes in the file. | |
| size_t | pageSize_ |
| Page size (how often to erase). | |
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 Node | |
| Node (const char *name) | |
| Constructor. | |
| virtual | ~Node () |
| Destructor. | |
| int | open (File *, const char *, int, int) OVERRIDE |
| Open method. | |
| 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 File * | file_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 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 | |
Flash-backed file.
The memory in flash for this file has to be reserved by the linker script. Any read operations will do just memcpy from the reserved pointer to the application buffer. Doing direct reads from flash using the reserved pointer is also valid.
Only sequential writes are supported. This means that opening the file for write, and writing from the beginning until the end is okay, but any other write access is not guaranteed to work.
Specifically, a flash page will be erased if and only if the first byte of that page is being written.
Definition at line 52 of file TivaFlash.hxx.
|
inline |
Constructor.
| name | name of th device/file (e.g. "/etc/automata_block" |
| ptr | flash base |
| length | how many bytes of the file to reserve |
| page_size | how often we should erase |
Definition at line 61 of file TivaFlash.hxx.
|
inlinevirtual |
This will be called when reference count goes from non-zero to 0.
Called with lock_ held.
Implements Node.
Definition at line 77 of file TivaFlash.hxx.
|
inlinevirtual |
This will be called once when reference-count goes from 0 to positive.
Called with lock_ held.
Implements Node.
Definition at line 76 of file TivaFlash.hxx.
|
inlinevirtual |
Instructs the device driver to drop all TX and RX queues.
This is called after disable() still under the device lock.
Implements Node.
Definition at line 78 of file TivaFlash.hxx.
|
inlineprivate |
Returns a bitmask with one bits to get the page address.
Definition at line 87 of file TivaFlash.hxx.
|
virtual |
Read method.
Implements FileIO.
Definition at line 40 of file TivaFlash.cxx.
|
inlineprivate |
Definition at line 108 of file TivaFlash.hxx.
|
inlineprivate |
Definition at line 103 of file TivaFlash.hxx.
|
inlineprivate |
Returns a bitmask with one bits to get the within-page address.
Definition at line 82 of file TivaFlash.hxx.
|
virtual |
Write method.
Implements FileIO.
Definition at line 57 of file TivaFlash.cxx.
|
inlineprivate |
Returns a bitmask with one bits to get the page address.
Definition at line 92 of file TivaFlash.hxx.
|
inlineprivate |
Returns a bitmask with one bits to get the page address.
Definition at line 97 of file TivaFlash.hxx.
|
private |
Base pointer.
Definition at line 113 of file TivaFlash.hxx.
|
private |
Number of bytes in the file.
Definition at line 115 of file TivaFlash.hxx.
|
private |
Page size (how often to erase).
Definition at line 117 of file TivaFlash.hxx.