Contiki-NG
|
The Contiki file system interface (CFS) defines an abstract API for reading directories and for reading and writing files. More...
Files | |
file | cfs-coffee.h |
Header for the Coffee file system. | |
Macros | |
#define | CFS_COFFEE_IO_FLASH_AWARE 0x1 |
Instruct Coffee that the access pattern to this file is adapted to flash I/O semantics by design, and Coffee should therefore not invoke its own micro logs when file modifications occur. More... | |
#define | CFS_COFFEE_IO_FIRM_SIZE 0x2 |
Instruct Coffee not to attempt to extend the file upon a request to write past the reserved file size. More... | |
#define | CFS_COFFEE_IO_ENSURE_READ_LENGTH 0x4 |
Instruct Coffee to set unused bytes in the destination buffer to zero. More... | |
#define | CFS_READ 1 |
Specify that cfs_open() should open a file for reading. More... | |
#define | CFS_WRITE 2 |
Specify that cfs_open() should open a file for writing. More... | |
#define | CFS_APPEND 4 |
Specify that cfs_open() should append written data to the file rather than overwriting it. More... | |
#define | CFS_SEEK_SET 0 |
Specify that cfs_seek() should compute the offset from the beginning of the file. More... | |
#define | CFS_SEEK_CUR 1 |
Specify that cfs_seek() should compute the offset from the current position of the file pointer. More... | |
#define | CFS_SEEK_END 2 |
Specify that cfs_seek() should compute the offset from the end of the file. More... | |
Functions | |
int | cfs_open (const char *name, int flags) |
Open a file. More... | |
void | cfs_close (int fd) |
Close an open file. More... | |
int | cfs_read (int fd, void *buf, unsigned int len) |
Read data from an open file. More... | |
int | cfs_write (int fd, const void *buf, unsigned int len) |
Write data to an open file. More... | |
cfs_offset_t | cfs_seek (int fd, cfs_offset_t offset, int whence) |
Seek to a specified position in an open file. More... | |
int | cfs_remove (const char *name) |
Remove a file. More... | |
int | cfs_opendir (struct cfs_dir *dirp, const char *name) |
Open a directory for reading directory entries. More... | |
int | cfs_readdir (struct cfs_dir *dirp, struct cfs_dirent *dirent) |
Read a directory entry. More... | |
void | cfs_closedir (struct cfs_dir *dirp) |
Close a directory opened with cfs_opendir(). More... | |
Functions called from application programs | |
int | cfs_coffee_reserve (const char *name, cfs_offset_t size) |
Reserve space for a file. More... | |
int | cfs_coffee_configure_log (const char *file, unsigned log_size, unsigned log_entry_size) |
Configure the on-demand log file. More... | |
int | cfs_coffee_set_io_semantics (int fd, unsigned flags) |
Set the I/O semantics for accessing a file. More... | |
int | cfs_coffee_format (void) |
Format the storage area assigned to Coffee. More... | |
The Contiki file system interface (CFS) defines an abstract API for reading directories and for reading and writing files.
The CFS API is intentionally simple. The CFS API is modeled after the POSIX file API, and slightly simplified.
#define CFS_APPEND 4 |
Specify that cfs_open() should append written data to the file rather than overwriting it.
This constant indicates to cfs_open() that a file that should be opened for writing gets written data appended to the end of the file. The default behaviour (without CFS_APPEND) is that the file is overwritten with the new data.
Definition at line 120 of file cfs.h.
Referenced by cfs_open().
#define CFS_COFFEE_IO_ENSURE_READ_LENGTH 0x4 |
Instruct Coffee to set unused bytes in the destination buffer to zero.
Trailing zeros may cause a wrong file size, this option ensures that the corresponding bytes get set, so Coffee does not read unexpected data.
Definition at line 73 of file cfs-coffee.h.
#define CFS_COFFEE_IO_FIRM_SIZE 0x2 |
Instruct Coffee not to attempt to extend the file upon a request to write past the reserved file size.
A case when this is necessary is when the file has a firm size limit, and a safeguard is needed to protect against writes beyond this limit.
Definition at line 64 of file cfs-coffee.h.
#define CFS_COFFEE_IO_FLASH_AWARE 0x1 |
Instruct Coffee that the access pattern to this file is adapted to flash I/O semantics by design, and Coffee should therefore not invoke its own micro logs when file modifications occur.
This semantical I/O setting is useful when implementing flash storage algorithms such as database indices on top of Coffee.
Definition at line 53 of file cfs-coffee.h.
#define CFS_READ 1 |
Specify that cfs_open() should open a file for reading.
This constant indicates to cfs_open() that a file should be opened for reading. CFS_WRITE should be used if the file is opened for writing, and CFS_READ + CFS_WRITE indicates that the file is opened for both reading and writing.
#define CFS_SEEK_CUR 1 |
Specify that cfs_seek() should compute the offset from the current position of the file pointer.
Definition at line 138 of file cfs.h.
Referenced by cfs_seek().
#define CFS_SEEK_END 2 |
Specify that cfs_seek() should compute the offset from the end of the file.
Definition at line 147 of file cfs.h.
Referenced by cfs_seek().
#define CFS_SEEK_SET 0 |
Specify that cfs_seek() should compute the offset from the beginning of the file.
Definition at line 129 of file cfs.h.
Referenced by cfs_seek().
#define CFS_WRITE 2 |
Specify that cfs_open() should open a file for writing.
This constant indicates to cfs_open() that a file should be opened for writing. CFS_READ should be used if the file is opened for reading, and CFS_READ + CFS_WRITE indicates that the file is opened for both reading and writing.
Definition at line 106 of file cfs.h.
Referenced by cfs_open().
void cfs_close | ( | int | fd | ) |
Close an open file.
fd | The file descriptor of the open file. This function closes a file that has previously been opened with cfs_open(). |
Definition at line 69 of file cfs-sdcard.c.
void cfs_closedir | ( | struct cfs_dir * | dirp | ) |
Close a directory opened with cfs_opendir().
dirp | A pointer to a struct cfs_dir that has been opened with cfs_opendir(). |
Definition at line 184 of file cfs-sdcard.c.
int cfs_coffee_configure_log | ( | const char * | file, |
unsigned | log_size, | ||
unsigned | log_entry_size | ||
) |
Configure the on-demand log file.
file | The file name. |
log_size | The total log file size. |
log_entry_size | The log entry size. |
When file data is first modified, Coffee creates a micro log for the file. The micro log stores a table of modifications whose parameters – the log size and the log entry size – can be modified through the cfs_coffee_configure_log function.
Definition at line 1283 of file cfs-coffee.c.
References COFFEE_PAGE_SIZE.
int cfs_coffee_format | ( | void | ) |
Format the storage area assigned to Coffee.
Coffee formats the underlying storage by setting all bits to zero. Formatting must be done before using Coffee for the first time in a mote.
Notice that the erased bits may be set to 1 on the physical storage when using flash memory. In this case, Coffee requires that the COFFEE_READ and COFFEE_WRITE functions used to access the flash memory invert all bits.
Definition at line 1325 of file cfs-coffee.c.
int cfs_coffee_reserve | ( | const char * | name, |
cfs_offset_t | size | ||
) |
Reserve space for a file.
name | The file name. |
size | The initial size to be reserved for the file. |
Coffee uses sequential page structures for files. The sequential structure can be reserved with a certain size. If a file has not been reserved when it is opened for the first time, it will be allocated with a default size.
Definition at line 1277 of file cfs-coffee.c.
int cfs_coffee_set_io_semantics | ( | int | fd, |
unsigned | flags | ||
) |
Set the I/O semantics for accessing a file.
fd | The file descriptor through which the file is accessed. |
flags | A bit vector of flags. |
Coffee is used on a wide range of storage types, and the default I/O file semantics may not be optimal for the access pattern of a certain file. Hence, this function allows programmers to switch the I/O semantics on a file that is accessed through a particular file descriptor.
Definition at line 1313 of file cfs-coffee.c.
int cfs_open | ( | const char * | name, |
int | flags | ||
) |
Open a file.
name | The name of the file. |
flags | CFS_READ, or CFS_WRITE/CFS_APPEND, or both. |
This function opens a file and returns a file descriptor for the opened file. If the file could not be opened, the function returns -1. The function can open a file for reading or writing, or both.
An opened file must be closed with cfs_close().
Definition at line 41 of file cfs-sdcard.c.
References CFS_APPEND, and CFS_WRITE.
int cfs_opendir | ( | struct cfs_dir * | dirp, |
const char * | name | ||
) |
Open a directory for reading directory entries.
dirp | A pointer to a struct cfs_dir that is filled in by the function. |
name | The name of the directory. |
Definition at line 129 of file cfs-sdcard.c.
int cfs_read | ( | int | fd, |
void * | buf, | ||
unsigned int | len | ||
) |
Read data from an open file.
fd | The file descriptor of the open file. |
buf | The buffer in which data should be read from the file. |
len | The number of bytes that should be read. |
This function reads data from an open file into a buffer. The file must have first been opened with cfs_open() and the CFS_READ flag.
Definition at line 78 of file cfs-sdcard.c.
int cfs_readdir | ( | struct cfs_dir * | dirp, |
struct cfs_dirent * | dirent | ||
) |
Read a directory entry.
dirp | A pointer to a struct cfs_dir that has been opened with cfs_opendir(). |
dirent | A pointer to a struct cfs_dirent that is filled in by cfs_readdir() |
0 | If a directory entry was read. |
-1 | If no more directory entries can be read. |
Definition at line 145 of file cfs-sdcard.c.
References start().
int cfs_remove | ( | const char * | name | ) |
Remove a file.
name | The name of the file. |
0 | If the file was removed. |
Definition at line 150 of file cfs-cooja.c.
cfs_offset_t cfs_seek | ( | int | fd, |
cfs_offset_t | offset, | ||
int | whence | ||
) |
Seek to a specified position in an open file.
fd | The file descriptor of the open file. |
offset | A position, either relative or absolute, in the file. |
whence | Determines how to interpret the offset parameter. |
This function moves the file position to the specified position in the file. The next byte that is read from or written to the file will be at the position given determined by the combination of the offset parameter and the whence parameter.
Definition at line 94 of file cfs-sdcard.c.
References CFS_SEEK_CUR, CFS_SEEK_END, and CFS_SEEK_SET.
int cfs_write | ( | int | fd, |
const void * | buf, | ||
unsigned int | len | ||
) |
Write data to an open file.
fd | The file descriptor of the open file. |
buf | The buffer from which data should be written to the file. |
len | The number of bytes that should be written. |
This function reads writes data from a memory buffer to an open file. The file must have been opened with cfs_open() and the CFS_WRITE flag.
Definition at line 86 of file cfs-sdcard.c.