Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
#include <zephyr/kernel.h>
#include <zephyr/arch/arch_interface.h>
#include <zephyr/sys/math_extras.h>
#include <stdbool.h>
#include <zephyr/logging/log.h>
#include <zephyr/driver-validation.h>
Go to the source code of this file.
Macros | |
#define | K_OOPS(expr) |
Induce a kernel oops. | |
#define | K_SYSCALL_VERIFY_MSG(expr, fmt, ...) |
Runtime expression check for system call arguments. | |
#define | K_SYSCALL_VERIFY(expr) K_SYSCALL_VERIFY_MSG(expr, #expr) |
Runtime expression check for system call arguments. | |
#define | K_SYSCALL_MEMORY_SIZE_CHECK(ptr, size) (((uintptr_t)(ptr) + (size)) >= (uintptr_t)(ptr)) |
Macro to check if size is negative. | |
#define | K_SYSCALL_MEMORY(ptr, size, write) |
Runtime check that a user thread has read and/or write permission to a memory area. | |
#define | K_SYSCALL_MEMORY_READ(ptr, size) K_SYSCALL_MEMORY(ptr, size, 0) |
Runtime check that a user thread has read permission to a memory area. | |
#define | K_SYSCALL_MEMORY_WRITE(ptr, size) K_SYSCALL_MEMORY(ptr, size, 1) |
Runtime check that a user thread has write permission to a memory area. | |
#define | K_SYSCALL_MEMORY_ARRAY(ptr, nmemb, size, write) |
#define | K_SYSCALL_MEMORY_ARRAY_READ(ptr, nmemb, size) K_SYSCALL_MEMORY_ARRAY(ptr, nmemb, size, 0) |
Validate user thread has read permission for sized array. | |
#define | K_SYSCALL_MEMORY_ARRAY_WRITE(ptr, nmemb, size) K_SYSCALL_MEMORY_ARRAY(ptr, nmemb, size, 1) |
Validate user thread has read/write permission for sized array. | |
#define | K_SYSCALL_IS_OBJ(ptr, type, init) |
#define | K_SYSCALL_DRIVER_OP(ptr, api_name, op) |
Runtime check driver object pointer for presence of operation. | |
#define | K_SYSCALL_SPECIFIC_DRIVER(_device, _dtype, _api) |
Runtime check that device object is of a specific driver type. | |
#define | K_SYSCALL_OBJ(ptr, type) K_SYSCALL_IS_OBJ(ptr, type, _OBJ_INIT_TRUE) |
Runtime check kernel object pointer for non-init functions. | |
#define | K_SYSCALL_OBJ_INIT(ptr, type) K_SYSCALL_IS_OBJ(ptr, type, _OBJ_INIT_ANY) |
Runtime check kernel object pointer for non-init functions. | |
#define | K_SYSCALL_OBJ_NEVER_INIT(ptr, type) K_SYSCALL_IS_OBJ(ptr, type, _OBJ_INIT_FALSE) |
Runtime check kernel object pointer for non-init functions. | |
Functions | |
static bool | k_is_in_user_syscall (void) |
Return true if we are currently handling a system call from user mode. | |
int | k_object_validate (struct k_object *ko, enum k_objects otype, enum _obj_init_check init) |
Ensure a system object is a valid object of the expected type. | |
void | k_object_dump_error (int retval, const void *obj, struct k_object *ko, enum k_objects otype) |
Dump out error information on failed k_object_validate() call. | |
struct k_object * | k_object_find (const void *obj) |
Kernel object validation function. | |
void | k_object_wordlist_foreach (_wordlist_cb_func_t func, void *context) |
Iterate over all the kernel object metadata in the system. | |
void | k_thread_perms_inherit (struct k_thread *parent, struct k_thread *child) |
Copy all kernel object permissions from the parent to the child. | |
void | k_thread_perms_set (struct k_object *ko, struct k_thread *thread) |
Grant a thread permission to a kernel object. | |
void | k_thread_perms_clear (struct k_object *ko, struct k_thread *thread) |
Revoke a thread's permission to a kernel object. | |
void | k_thread_perms_all_clear (struct k_thread *thread) |
Revoke access to all objects for the provided thread. | |
void | k_object_uninit (const void *obj) |
Clear initialization state of a kernel object. | |
void | k_object_recycle (const void *obj) |
Initialize and reset permissions to only access by the caller. | |
static size_t | k_usermode_string_nlen (const char *src, size_t maxlen, int *err) |
Obtain the size of a C string passed from user mode. | |
void * | k_usermode_alloc_from_copy (const void *src, size_t size) |
Copy data from userspace into a resource pool allocation. | |
int | k_usermode_from_copy (void *dst, const void *src, size_t size) |
Copy data from user mode. | |
int | k_usermode_to_copy (void *dst, const void *src, size_t size) |
Copy data to user mode. | |
char * | k_usermode_string_alloc_copy (const char *src, size_t maxlen) |
Copy a C string from userspace into a resource pool allocation. | |
int | k_usermode_string_copy (char *dst, const char *src, size_t maxlen) |
Copy a C string from userspace into a provided buffer. | |
static int | k_object_validation_check (struct k_object *ko, const void *obj, enum k_objects otype, enum _obj_init_check init) |