nRF Connect SDK Bare Metal API 2.0.99
Loading...
Searching...
No Matches
bm_zms.h
1/* Copyright (c) 2018 Laczen
2 * Copyright (c) 2024 BayLibre SAS
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * BM_ZMS: Bare Metal Zephyr Memory Storage
7 */
8#ifndef ZEPHYR_INCLUDE_FS_BM_ZMS_H_
9#define ZEPHYR_INCLUDE_FS_BM_ZMS_H_
10
11#include <sys/types.h>
12#include <zephyr/sys/atomic.h>
13#include <stdbool.h>
14#include <bm/storage/bm_storage.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
46
48struct bm_zms_evt {
61 int result;
65 uint32_t id;
66};
67
71 volatile bool initialized;
73 volatile bool initializing;
74} __packed;
75
81typedef void (*bm_zms_evt_handler_t)(const struct bm_zms_evt *evt);
82
84struct bm_zms_fs {
86 off_t offset;
92 uint64_t ate_wra;
94 uint64_t ate_ra;
96 uint64_t data_wra;
100 uint32_t sector_size;
102 uint32_t sector_count;
108 size_t ate_size;
117#if CONFIG_BM_ZMS_LOOKUP_CACHE
119 uint64_t lookup_cache[CONFIG_BM_ZMS_LOOKUP_CACHE_SIZE];
120#endif
121};
122
138
165int bm_zms_mount(struct bm_zms_fs *fs, const struct bm_zms_fs_config *config);
166
181int bm_zms_clear(struct bm_zms_fs *fs);
182
205ssize_t bm_zms_write(struct bm_zms_fs *fs, uint32_t id, const void *data, size_t len);
206
221int bm_zms_delete(struct bm_zms_fs *fs, uint32_t id);
222
241ssize_t bm_zms_read(struct bm_zms_fs *fs, uint32_t id, void *data, size_t len);
242
262ssize_t bm_zms_read_hist(struct bm_zms_fs *fs, uint32_t id, void *data, size_t len, uint32_t cnt);
263
278ssize_t bm_zms_get_data_length(struct bm_zms_fs *fs, uint32_t id);
279
295
306
311#ifdef __cplusplus
312}
313#endif
314
315#endif /* ZEPHYR_INCLUDE_FS_BM_ZMS_H_ */
bm_zms_evt_type
Definition bm_zms.h:34
@ BM_ZMS_EVT_MOUNT
Definition bm_zms.h:38
@ BM_ZMS_EVT_CLEAR
Definition bm_zms.h:44
@ BM_ZMS_EVT_WRITE
Definition bm_zms.h:40
@ BM_ZMS_EVT_NONE
Definition bm_zms.h:36
@ BM_ZMS_EVT_DELETE
Definition bm_zms.h:42
void(* bm_zms_evt_handler_t)(const struct bm_zms_evt *evt)
Bare Metal ZMS event handler function prototype.
Definition bm_zms.h:81
int bm_zms_mount(struct bm_zms_fs *fs, const struct bm_zms_fs_config *config)
Mount a BM_ZMS file system.
ssize_t bm_zms_calc_free_space(struct bm_zms_fs *fs)
Calculate the available free space in the file system.
int bm_zms_clear(struct bm_zms_fs *fs)
Clear the BM_ZMS file system from device. The BM_ZMS file system must be re-mounted after this operat...
ssize_t bm_zms_active_sector_free_space(struct bm_zms_fs *fs)
Tells how much contiguous free space remains in the currently active BM_ZMS sector.
ssize_t bm_zms_read_hist(struct bm_zms_fs *fs, uint32_t id, void *data, size_t len, uint32_t cnt)
Read a history entry from the file system.
ssize_t bm_zms_write(struct bm_zms_fs *fs, uint32_t id, const void *data, size_t len)
Write an entry to the file system.
ssize_t bm_zms_get_data_length(struct bm_zms_fs *fs, uint32_t id)
Gets the length of the data that is stored in an entry with a given id
ssize_t bm_zms_read(struct bm_zms_fs *fs, uint32_t id, void *data, size_t len)
Read an entry from the file system.
int bm_zms_delete(struct bm_zms_fs *fs, uint32_t id)
Delete an entry from the file system.
Backend API.
Definition bm_storage.h:118
Information about the non-volatile memory.
Definition bm_storage.h:83
Storage instance.
Definition bm_storage.h:133
uint32_t id
Definition bm_zms.h:65
int result
Definition bm_zms.h:61
enum bm_zms_evt_type evt_type
Definition bm_zms.h:50
A BM_ZMS event.
Definition bm_zms.h:48
uint32_t sector_count
Definition bm_zms.h:132
bm_zms_evt_handler_t evt_handler
Definition bm_zms.h:134
off_t offset
Definition bm_zms.h:126
const struct bm_storage_api * storage_api
Definition bm_zms.h:136
uint32_t sector_size
Definition bm_zms.h:130
Definition bm_zms.h:124
atomic_t ongoing_writes
Definition bm_zms.h:114
struct bm_storage zms_bm_storage
Definition bm_zms.h:110
uint64_t ate_wra
Definition bm_zms.h:92
uint64_t data_wra
Definition bm_zms.h:96
bm_zms_evt_handler_t evt_handler
Definition bm_zms.h:116
uint64_t ate_ra
Definition bm_zms.h:94
size_t ate_size
Definition bm_zms.h:108
off_t offset
Definition bm_zms.h:86
const struct bm_storage_info * nvm_info
Definition bm_zms.h:112
uint8_t sector_cycle
Definition bm_zms.h:104
uint32_t sector_count
Definition bm_zms.h:102
uint32_t sector_size
Definition bm_zms.h:100
struct bm_zms_init_flags init_flags
Definition bm_zms.h:106
Definition bm_zms.h:84
volatile bool initialized
Definition bm_zms.h:71
volatile bool initializing
Definition bm_zms.h:73
Definition bm_zms.h:69