Skip to content

Commit 95bdfb5

Browse files
Laczencarlescufi
authored andcommitted
bbram: add support from user threads
Provide the necessary handlers to support bbram access from userthreads solves #61868. Signed-off-by: Laczen JMS <[email protected]>
1 parent bda6656 commit 95bdfb5

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

drivers/bbram/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ zephyr_library()
55

66
zephyr_library_sources_ifdef(CONFIG_BBRAM_SHELL bbram_shell.c)
77

8+
zephyr_library_sources_ifdef(CONFIG_USERSPACE bbram_handlers.c)
89
zephyr_library_sources_ifdef(CONFIG_BBRAM_NPCX bbram_npcx.c)
910
zephyr_library_sources_ifdef(CONFIG_BBRAM_IT8XXX2 bbram_it8xxx2.c)
1011
zephyr_library_sources_ifdef(CONFIG_BBRAM_EMUL bbram_emul.c)

drivers/bbram/bbram_handlers.c

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright (c) 2023, Laczen
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/drivers/bbram.h>
8+
#include <zephyr/syscall_handler.h>
9+
10+
static inline int z_vrfy_bbram_check_invalid(const struct device *dev)
11+
{
12+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
13+
return z_impl_bbram_check_invalid(dev);
14+
}
15+
#include <syscalls/bbram_check_invalid_mrsh.c>
16+
17+
static inline int z_vrfy_bbram_check_standby_power(const struct device *dev)
18+
{
19+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
20+
return z_impl_bbram_check_standby_power(dev);
21+
}
22+
#include <syscalls/bbram_check_standby_power_mrsh.c>
23+
24+
static inline int z_vrfy_bbram_check_power(const struct device *dev)
25+
{
26+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
27+
return z_impl_bbram_check_power(dev);
28+
}
29+
#include <syscalls/bbram_check_power_mrsh.c>
30+
31+
static inline int z_vrfy_bbram_get_size(const struct device *dev, size_t *size)
32+
{
33+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
34+
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(size, sizeof(size_t)));
35+
return z_impl_bbram_get_size(dev, size);
36+
}
37+
#include <syscalls/bbram_get_size_mrsh.c>
38+
39+
static inline int z_vrfy_bbram_read(const struct device *dev, size_t offset,
40+
size_t size, uint8_t *data)
41+
{
42+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
43+
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(data, size));
44+
return z_impl_bbram_read(dev, offset, size, data);
45+
}
46+
#include <syscalls/bbram_read_mrsh.c>
47+
48+
static inline int z_vrfy_bbram_write(const struct device *dev, size_t offset,
49+
size_t size, const uint8_t *data)
50+
{
51+
Z_OOPS(Z_SYSCALL_OBJ(dev, K_OBJ_DRIVER_BBRAM));
52+
Z_OOPS(Z_SYSCALL_MEMORY_READ(data, size));
53+
return z_impl_bbram_write(dev, offset, size, data);
54+
}
55+
#include <syscalls/bbram_write_mrsh.c>

0 commit comments

Comments
 (0)