|
typedef int(* | rtems_jffs2_flash_read) (rtems_jffs2_flash_control *self, uint32_t offset, unsigned char *buffer, size_t size_of_buffer) |
| Read from flash operation. More...
|
|
typedef int(* | rtems_jffs2_flash_write) (rtems_jffs2_flash_control *self, uint32_t offset, const unsigned char *buffer, size_t size_of_buffer) |
| Write to flash operation. More...
|
|
typedef int(* | rtems_jffs2_flash_erase) (rtems_jffs2_flash_control *self, uint32_t offset) |
| Flash erase operation. More...
|
|
typedef void(* | rtems_jffs2_flash_destroy) (rtems_jffs2_flash_control *self) |
| Flash destroy operation. More...
|
|
typedef void(* | rtems_jffs2_trigger_garbage_collection) (rtems_jffs2_flash_control *self) |
| Trigger garbage collection operation. More...
|
|
typedef struct rtems_jffs2_compressor_control | rtems_jffs2_compressor_control |
|
typedef uint16_t(* | rtems_jffs2_compressor_compress) (rtems_jffs2_compressor_control *self, unsigned char *data_in, unsigned char *cdata_out, uint32_t *datalen, uint32_t *cdatalen) |
| Compress operation. More...
|
|
typedef int(* | rtems_jffs2_compressor_decompress) (rtems_jffs2_compressor_control *self, uint16_t comprtype, unsigned char *cdata_in, unsigned char *data_out, uint32_t cdatalen, uint32_t datalen) |
| Decompress operation. More...
|
|
typedef void(* | rtems_jffs2_compressor_destroy) (rtems_jffs2_compressor_control *self) |
| Compressor destroy operation. More...
|
|
|
uint16_t | rtems_jffs2_compressor_rtime_compress (rtems_jffs2_compressor_control *self, unsigned char *data_in, unsigned char *cdata_out, uint32_t *datalen, uint32_t *cdatalen) |
| RTIME compressor compress operation.
|
|
int | rtems_jffs2_compressor_rtime_decompress (rtems_jffs2_compressor_control *self, uint16_t comprtype, unsigned char *cdata_in, unsigned char *data_out, uint32_t cdatalen, uint32_t datalen) |
| RTIME compressor decompress operation.
|
|
uint16_t | rtems_jffs2_compressor_zlib_compress (rtems_jffs2_compressor_control *self, unsigned char *data_in, unsigned char *cdata_out, uint32_t *datalen, uint32_t *cdatalen) |
| ZLIB compressor compress operation.
|
|
int | rtems_jffs2_compressor_zlib_decompress (rtems_jffs2_compressor_control *self, uint16_t comprtype, unsigned char *cdata_in, unsigned char *data_out, uint32_t cdatalen, uint32_t datalen) |
| ZLIB compressor decompress operation.
|
|
int | rtems_jffs2_initialize (rtems_filesystem_mount_table_entry_t *mt_entry, const void *data) |
| Initialization handler of the JFFS2 file system. More...
|
|
Mount options for the Journalling Flash File System, Version 2 (JFFS2).
The application must provide flash device geometry information and flash device operations in the flash control structure rtems_jffs2_flash_control.
The application can optionally provide a compressor control structure to enable data compression using the selected compression algorithm.
An example mount with a simple memory based flash device simulation follows. The zlib is used for as the compressor.
#include <string.h>
#include <rtems/jffs2.h>
#define BLOCK_SIZE (32UL * 1024UL)
#define FLASH_SIZE (32UL * BLOCK_SIZE)
typedef struct {
unsigned char area[FLASH_SIZE];
} flash_control;
{
return (flash_control *) super;
}
static int flash_read(
uint32_t offset,
unsigned char *buffer,
size_t size_of_buffer
)
{
flash_control *self = get_flash_control(super);
unsigned char *chunk = &self->area[offset];
memcpy(buffer, chunk, size_of_buffer);
return 0;
}
static int flash_write(
uint32_t offset,
const unsigned char *buffer,
size_t size_of_buffer
)
{
flash_control *self = get_flash_control(super);
unsigned char *chunk = &self->area[offset];
size_t i;
for (i = 0; i < size_of_buffer; ++i) {
chunk[i] &= buffer[i];
}
return 0;
}
static int flash_erase(
uint32_t offset
)
{
flash_control *self = get_flash_control(super);
unsigned char *chunk = &self->area[offset];
memset(chunk, 0xff, BLOCK_SIZE);
return 0;
}
static flash_control flash_instance = {
.super = {
.block_size = BLOCK_SIZE,
.flash_size = FLASH_SIZE,
.read = flash_read,
.write = flash_write,
.erase = flash_erase,
.device_identifier = 0xc01dc0fe
}
};
.super = {
}
};
.compressor_control = &compressor_instance.super
};
static void erase_all(void)
{
memset(&flash_instance.area[0], 0xff, FLASH_SIZE);
}
void example_jffs2_mount(const char *mount_dir)
{
int rv;
erase_all();
mount_dir,
RTEMS_FILESYSTEM_TYPE_JFFS2,
RTEMS_FILESYSTEM_READ_WRITE,
&mount_data
);
assert(rv == 0);
}
#define NULL
Requests a GPIO pin group configuration.
Definition: bestcomm_api.h:77
int mount_and_make_target_path(const char *source, const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data)
Mounts a file system and makes the target path.
Definition: mount-mktgt.c:30
uint16_t rtems_jffs2_compressor_zlib_compress(rtems_jffs2_compressor_control *self, unsigned char *data_in, unsigned char *cdata_out, uint32_t *datalen, uint32_t *cdatalen)
ZLIB compressor compress operation.
Definition: compr_zlib.c:46
int rtems_jffs2_compressor_zlib_decompress(rtems_jffs2_compressor_control *self, uint16_t comprtype, unsigned char *cdata_in, unsigned char *data_out, uint32_t cdatalen, uint32_t datalen)
ZLIB compressor decompress operation.
Definition: compr_zlib.c:121
rtems_jffs2_compressor_compress compress
Compress operation.
Definition: jffs2.h:371
ZLIB compressor control structure.
Definition: jffs2.h:417
JFFS2 flash device control.
Definition: jffs2.h:249
JFFS2 mount options.
Definition: jffs2.h:450
rtems_jffs2_flash_control * flash_control
Flash control.
Definition: jffs2.h:454