26#include "include/xipfs.h"
47#define XIPFS_PARTITION_CORE(id, path, data, data_bytesize) \
48 static mutex_t execution_mutex_##id = MUTEX_INIT; \
49 static mutex_t mutex_##id = MUTEX_INIT; \
50 static vfs_xipfs_mount_t id = { \
52 .fs = &xipfs_file_system, \
53 .mount_point = path, \
55 .magic = XIPFS_MAGIC, \
57 .page_num = data_bytesize / XIPFS_NVM_PAGE_SIZE, \
58 .page_addr = (void *)data, \
59 .execution_mutex = &execution_mutex_##id, \
60 .mutex = &mutex_##id \
73#define XIPFS_NEW_PARTITION(id, path, num) \
74 FLASH_WRITABLE_INIT(xipfs_part_##id, num); \
75 XIPFS_PARTITION_CORE(id, path, xipfs_part_##id, num * XIPFS_NVM_PAGE_SIZE)
89#define XIPFS_START_PARTITION_INCLUSION(id) \
90 __attribute__((aligned(XIPFS_NVM_PAGE_SIZE))) \
91 __attribute__((section(".rodata.xipfs." #id)))
105#define XIPFS_END_PARTITION_INCLUSION(id, path, data, data_bytesize) \
106 XIPFS_PARTITION_CORE(id, path, data, data_bytesize)
194#ifdef XIPFS_ENABLE_SAFE_EXEC_SUPPORT
208int xipfs_extended_driver_safe_execv(
const char *full_path,
struct vfs_mount_struct vfs_mount_t
struct vfs_mount_struct typedef
int xipfs_extended_driver_execv(const char *full_path, char *const argv[])
Executes an executable file with arguments.
const vfs_file_system_t xipfs_file_system
The xipfs vfs driver.
int xipfs_extended_driver_new_file(const char *full_path, uint32_t size, uint32_t exec)
Executable or regular new file.
int xipfs_construct_from_flashpage(mtd_flashpage_t *flashpage, const char *path, mutex_t *execution_mutex, mutex_t *mutex, vfs_xipfs_mount_t *vfs_xipfs_mount)
vfs_xipfs_mount_t constructor from a mtd_flashpage_t.
struct vfs_xipfs_mount_s vfs_xipfs_mount_t
xipfs descriptor for vfs integration.
Interface definition for the flashpage memory driver.
Mutex for thread synchronization.
MTD flashpage descriptor.
xipfs descriptor for vfs integration.
size_t page_num
number of flash page
mutex_t * mutex
For regular and deletion operations.
mutex_t * execution_mutex
For execution and deletion operations.
const char * mount_path
mount point path
unsigned magic
xipfs magic number
vfs_mount_t vfs_mp
VFS mount point.
void * page_addr
first flash page address