Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
zms.h
Go to the documentation of this file.
1/* Copyright (c) 2018 Laczen
2 * Copyright (c) 2024 BayLibre SAS
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * ZMS: Zephyr Memory Storage
7 */
8
14
15#ifndef ZEPHYR_INCLUDE_KVSS_ZMS_H_
16#define ZEPHYR_INCLUDE_KVSS_ZMS_H_
17
18#include <sys/types.h>
20#include <zephyr/kernel.h>
21#include <zephyr/device.h>
22#include <zephyr/toolchain.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
34
40
51
53struct zms_fs {
75 bool ready;
81 const struct device *flash_device;
85 size_t ate_size;
86#if CONFIG_ZMS_LOOKUP_CACHE
87#if CONFIG_ZMS_LOOKUP_CACHE_MANUAL
89 uint64_t *lookup_cache;
91 size_t lookup_cache_size;
92#else
94 uint64_t lookup_cache[CONFIG_ZMS_LOOKUP_CACHE_SIZE];
95#endif
96#endif
97};
98
102
108
114#if CONFIG_ZMS_ID_64BIT
115typedef uint64_t zms_id_t;
116#else
118#endif
119
137int zms_mount(struct zms_fs *fs);
138
152int zms_mount_force(struct zms_fs *fs);
153
166int zms_clear(struct zms_fs *fs);
167
191ssize_t zms_write(struct zms_fs *fs, zms_id_t id, const void *data, size_t len);
192
205int zms_delete(struct zms_fs *fs, zms_id_t id);
206
224ssize_t zms_read(struct zms_fs *fs, zms_id_t id, void *data, size_t len);
225
245ssize_t zms_read_hist(struct zms_fs *fs, zms_id_t id, void *data, size_t len, uint32_t cnt);
246
262
278
290
308
309#if CONFIG_ZMS_LOOKUP_CACHE_MANUAL
324int zms_set_lookup_cache(struct zms_fs *fs, uint64_t *buffer, size_t size);
325#endif
326
341int zms_get_num_cycles(struct zms_fs *fs, uint32_t *cycles);
342
355int zms_get_sector_num_cycles(struct zms_fs *fs, uint32_t sector, uint32_t *cycles);
356
360
361#ifdef __cplusplus
362}
363#endif
364
365#endif /* ZEPHYR_INCLUDE_KVSS_ZMS_H_ */
Main header file for Flash driver API.
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
zms_mount_flags
Mount options for zms_mount and zms_mount_force.
Definition zms.h:42
@ ZMS_MOUNT_FLAG_NO_FORMAT
Do not format erased media during mount.
Definition zms.h:49
ssize_t zms_calc_free_space(struct zms_fs *fs)
Calculate the available free space in the file system.
uint32_t zms_id_t
ID type used in the ZMS API.
Definition zms.h:117
ssize_t zms_write(struct zms_fs *fs, zms_id_t id, const void *data, size_t len)
Write an entry to the file system.
int zms_get_num_cycles(struct zms_fs *fs, uint32_t *cycles)
Return the maximum sector recycle count across all sectors.
int zms_get_sector_num_cycles(struct zms_fs *fs, uint32_t sector, uint32_t *cycles)
Return the recycle count for a specific sector.
int zms_delete(struct zms_fs *fs, zms_id_t id)
Delete an entry from the file system.
ssize_t zms_read_hist(struct zms_fs *fs, zms_id_t id, void *data, size_t len, uint32_t cnt)
Read a history entry from the file system.
ssize_t zms_active_sector_free_space(struct zms_fs *fs)
Tell how much contiguous free space remains in the currently active ZMS sector.
ssize_t zms_get_data_length(struct zms_fs *fs, zms_id_t id)
Gets the length of the data that is stored in an entry with a given id.
ssize_t zms_read(struct zms_fs *fs, zms_id_t id, void *data, size_t len)
Read an entry from the file system.
int zms_sector_use_next(struct zms_fs *fs)
Close the currently active sector and switch to the next one.
int zms_mount(struct zms_fs *fs)
Mount a ZMS file system onto the device specified in fs.
int zms_mount_force(struct zms_fs *fs)
Mount a ZMS file system onto the device specified in fs, wiping the partition if mounting fails the f...
int zms_clear(struct zms_fs *fs)
Clear the ZMS file system from device.
Public kernel APIs.
__SIZE_TYPE__ ssize_t
Definition types.h:28
__INTPTR_TYPE__ off_t
Definition types.h:36
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition device.h:525
Kernel mutex structure.
Definition kernel.h:3492
Zephyr Memory Storage file system structure.
Definition zms.h:53
const struct flash_parameters * flash_parameters
Flash memory parameters structure.
Definition zms.h:83
uint64_t data_wra
Data write address.
Definition zms.h:63
const struct device * flash_device
Flash device runtime structure.
Definition zms.h:81
bool lock_initialized
Flag indicating that zms_lock has been initialized.
Definition zms.h:77
uint32_t mount_flags
Mount behavior flags from zms_mount_flags.
Definition zms.h:71
uint64_t ate_wra
Allocation Table Entry (ATE) write address.
Definition zms.h:61
size_t ate_size
Size of an Allocation Table Entry.
Definition zms.h:85
uint32_t sector_size
Storage system is split into sectors.
Definition zms.h:67
uint8_t sector_cycle
Current cycle counter of the active sector (pointed to by ate_wra).
Definition zms.h:73
uint32_t sector_count
Number of sectors in the file system.
Definition zms.h:69
off_t offset
File system offset in flash.
Definition zms.h:55
bool ready
Flag indicating if the file system is initialized.
Definition zms.h:75
struct k_mutex zms_lock
Mutex used to lock flash writes.
Definition zms.h:79
Macros to abstract toolchain specific capabilities.