zephyr/drivers/retained_mem/retained_mem_handlers.c
Jamie McCrae 2fedb306f7 drivers: Add retained memory driver interface
Adds a new driver interface for retained memory devices which
can be used to store data and have it retained whilst the device is
powered thorugh different application execution states (though this
data may be lost in low power states).

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2023-03-20 15:02:09 +01:00

41 lines
1.3 KiB
C

/*
* Copyright (c) 2023, Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/drivers/retained_mem.h>
#include <zephyr/syscall_handler.h>
static inline ssize_t z_vrfy_retained_mem_size(const struct device *dev)
{
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_RETAINED_MEM));
return z_impl_retained_mem_size(dev);
}
#include <syscalls/retained_mem_size_mrsh.c>
static inline int z_vrfy_retained_mem_read(const struct device *dev, off_t offset,
uint8_t *buffer, size_t size)
{
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_RETAINED_MEM));
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(buffer, size));
return z_impl_retained_mem_read(dev, offset, buffer, size);
}
#include <syscalls/retained_mem_read_mrsh.c>
static inline int z_vrfy_retained_mem_write(const struct device *dev, off_t offset,
const uint8_t *buffer, size_t size)
{
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_RETAINED_MEM));
Z_OOPS(Z_SYSCALL_MEMORY_READ(buffer, size));
return z_impl_retained_mem_write(dev, offset, buffer, size);
}
#include <syscalls/retained_mem_write_mrsh.c>
static inline int z_vrfy_retained_mem_clear(const struct device *dev)
{
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_RETAINED_MEM));
return z_impl_retained_mem_clear(dev);
}
#include <syscalls/retained_mem_clear_mrsh.c>