Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
kobject.c File Reference

Macros

#define NUM_KOBJS   13
 

Functions

 K_THREAD_STACK_DECLARE (child_stack,(512+CONFIG_TEST_EXTRA_STACK_SIZE))
 
 K_THREAD_STACK_DEFINE (extra_stack,(512+CONFIG_TEST_EXTRA_STACK_SIZE))
 
 K_SEM_DEFINE (kobject_sem,(0),(10))
 
 K_SEM_DEFINE (kobject_public_sem,(0),(10))
 
 K_MUTEX_DEFINE (kobject_mutex)
 
static void kobject_access_grant_user_part (void *p1, void *p2, void *p3)
 
void test_kobject_access_grant (void)
 Test access to a invalid semaphore who's address is NULL.
 
void test_kobject_access_grant_error (void)
 Test grant access of given NULL kobject.
 
void test_kobject_access_grant_error_user (void)
 Test grant access of given NULL thread in usermode.
 
void test_kobject_access_grant_error_user_null (void)
 Test grant access of given NULL kobject in usermode.
 
void test_kobject_access_all_grant_error (void)
 Test grant access to all the kobject for thread.
 
static void syscall_invalid_kobject_user_part (void *p1, void *p2, void *p3)
 
void test_syscall_invalid_kobject (void)
 Test syscall can take a different type of kobject.
 
static void thread_without_kobject_permission_user_part (void *p1, void *p2, void *p3)
 
void test_thread_without_kobject_permission (void)
 Test user thread can access a k_object without grant.
 
static void kobject_revoke_access_user_part (void *p1, void *p2, void *p3)
 
void test_kobject_revoke_access (void)
 Test access revoke.
 
static void kobject_grant_access_child_entry (void *p1, void *p2, void *p3)
 
static void kobject_grant_access_extra_entry (void *p1, void *p2, void *p3)
 
void test_kobject_grant_access_kobj (void)
 Test access revoke.
 
static void grant_access_kobj_invalid_child (void *p1, void *p2, void *p3)
 
void test_kobject_grant_access_kobj_invalid (void)
 Test access grant between threads.
 
static void release_from_user_child (void *p1, void *p2, void *p3)
 
void test_kobject_release_from_user (void)
 Test revoke permission of a k_object from userspace.
 
void test_kobject_invalid (void)
 Test release and access grant an invalid kobject.
 
static void access_all_grant_child_give (void *p1, void *p2, void *p3)
 
static void access_all_grant_child_take (void *p1, void *p2, void *p3)
 
void test_kobject_access_all_grant (void)
 Test supervisor thread grants kernel objects all access public status.
 
static void residual_permissions_child_success (void *p1, void *p2, void *p3)
 
static void residual_permissions_child_fail (void *p1, void *p2, void *p3)
 
void test_thread_has_residual_permissions (void)
 Test access permission of a terminated thread.
 
void test_kobject_access_grant_to_invalid_thread (void)
 Test grant access to a valid kobject but invalid thread id.
 
void test_kobject_access_invalid_kobject (void)
 Object validation checks.
 
void test_access_kobject_without_init_access (void)
 Object validation checks without init access.
 
static void without_init_with_access_child (void *p1, void *p2, void *p3)
 
void test_access_kobject_without_init_with_access (void)
 Test syscall on a kobject which is not initialized and has access.
 
static void reinitialize_thread_kobj_extra (void *p1, void *p2, void *p3)
 
static void reinitialize_thread_kobj_child (void *p1, void *p2, void *p3)
 
void test_kobject_reinitialize_thread_kobj (void)
 Test to reinitialize the k_thread object.
 
static void new_thread_from_user_extra (void *p1, void *p2, void *p3)
 
static void new_thread_from_user_child (void *p1, void *p2, void *p3)
 
void test_create_new_thread_from_user (void)
 Test thread create from a user thread and check permissions.
 
static void new_thrd_from_user_with_in_use_stack (void *p1, void *p2, void *p3)
 
static void new_user_thrd_child_with_in_use_stack (void *p1, void *p2, void *p3)
 
void test_new_user_thread_with_in_use_stack_obj (void)
 Test create new user thread from a user thread with in-use stack obj.
 
static void from_user_no_access_stack_extra_entry (void *p1, void *p2, void *p3)
 
static void from_user_no_access_stack_child_entry (void *p1, void *p2, void *p3)
 
void test_create_new_thread_from_user_no_access_stack (void)
 Test creates new thread from usermode without stack access.
 
static void from_user_invalid_stacksize_extra (void *p1, void *p2, void *p3)
 
static void from_user_invalid_stacksize_child (void *p1, void *p2, void *p3)
 
void test_create_new_thread_from_user_invalid_stacksize (void)
 Test to validate user thread spawning with stack overflow.
 
static void user_huge_stacksize_extra (void *p1, void *p2, void *p3)
 
static void user_huge_stacksize_child (void *p1, void *p2, void *p3)
 
void test_create_new_thread_from_user_huge_stacksize (void)
 Test to check stack overflow from user thread.
 
static void supervisor_from_user_extra (void *p1, void *p2, void *p3)
 
static void supervisor_from_user_child (void *p1, void *p2, void *p3)
 
void test_create_new_supervisor_thread_from_user (void)
 Test to create a new supervisor thread from user.
 
static void essential_thread_from_user_extra (void *p1, void *p2, void *p3)
 
static void essential_thread_from_user_child (void *p1, void *p2, void *p3)
 
void test_create_new_essential_thread_from_user (void)
 Create a new essential thread from user.
 
static void higher_prio_from_user_extra (void *p1, void *p2, void *p3)
 
static void higher_prio_from_user_child (void *p1, void *p2, void *p3)
 
void test_create_new_higher_prio_thread_from_user (void)
 Thread creation with priority is higher than current thread.
 
static void invalid_prio_from_user_extra (void *p1, void *p2, void *p3)
 
static void invalid_prio_from_user_child (void *p1, void *p2, void *p3)
 
void test_create_new_invalid_prio_thread_from_user (void)
 Create a new thread whose priority is invalid.
 
static void thread_stack_init_objects (void *p1, void *p2, void *p3)
 
void test_mark_thread_exit_uninitialized (void)
 Test when thread exits, kernel marks stack objects uninitialized.
 
static void tThread_object_free_error (void *p1, void *p2, void *p3)
 
void test_kobject_free_error (void)
 Test free an invalid kernel object.
 
void test_kobject_init_error (void)
 Test alloc an invalid kernel object.
 
void test_kobj_create_out_of_memory (void)
 Test kernel object until out of memory.
 
void test_thread_alloc_out_of_idx (void)
 
void test_alloc_kobjects (void)
 Test kernel object allocation.
 
static void entry_error_perm (void *p1, void *p2, void *p3)
 
void test_kobject_perm_error (void)
 Test grant access failed in user mode.
 
const char * otype_to_str (enum k_objects otype)
 
void test_all_kobjects_str (void)
 Test get all kernel object list.
 
 ZTEST_SUITE (mem_protect_kobj, NULL, NULL, NULL, NULL, NULL)
 

Variables

struct k_thread child_thread
 
struct k_thread extra_thread
 
struct k_sem * random_sem_type
 
struct k_sem kobject_sem_not_hash_table
 
struct k_sem kobject_sem_no_init_no_access
 
struct k_sem kobject_sem_no_init_access
 
struct k_mem_slab ms
 
struct k_msgq mq
 
struct k_mutex mutex
 
struct k_pipe p
 
struct k_queue q
 
struct k_poll_signal ps
 
struct k_sem sem
 
struct k_stack s
 
struct k_thread t
 
struct k_timer timer
 
struct z_thread_stack_element zs
 
struct k_futex f
 
struct k_condvar condvar
 

Macro Definition Documentation

◆ NUM_KOBJS

#define NUM_KOBJS   13

Function Documentation

◆ access_all_grant_child_give()

static void access_all_grant_child_give ( void * p1,
void * p2,
void * p3 )
static

◆ access_all_grant_child_take()

static void access_all_grant_child_take ( void * p1,
void * p2,
void * p3 )
static

◆ entry_error_perm()

static void entry_error_perm ( void * p1,
void * p2,
void * p3 )
static

◆ essential_thread_from_user_child()

static void essential_thread_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ essential_thread_from_user_extra()

static void essential_thread_from_user_extra ( void * p1,
void * p2,
void * p3 )
static

◆ from_user_invalid_stacksize_child()

static void from_user_invalid_stacksize_child ( void * p1,
void * p2,
void * p3 )
static

◆ from_user_invalid_stacksize_extra()

static void from_user_invalid_stacksize_extra ( void * p1,
void * p2,
void * p3 )
static

◆ from_user_no_access_stack_child_entry()

static void from_user_no_access_stack_child_entry ( void * p1,
void * p2,
void * p3 )
static

◆ from_user_no_access_stack_extra_entry()

static void from_user_no_access_stack_extra_entry ( void * p1,
void * p2,
void * p3 )
static

◆ grant_access_kobj_invalid_child()

static void grant_access_kobj_invalid_child ( void * p1,
void * p2,
void * p3 )
static

◆ higher_prio_from_user_child()

static void higher_prio_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ higher_prio_from_user_extra()

static void higher_prio_from_user_extra ( void * p1,
void * p2,
void * p3 )
static

◆ invalid_prio_from_user_child()

static void invalid_prio_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ invalid_prio_from_user_extra()

static void invalid_prio_from_user_extra ( void * p1,
void * p2,
void * p3 )
static

◆ K_MUTEX_DEFINE()

K_MUTEX_DEFINE ( kobject_mutex )

◆ K_SEM_DEFINE() [1/2]

K_SEM_DEFINE ( kobject_public_sem ,
(0) ,
(10)  )

◆ K_SEM_DEFINE() [2/2]

K_SEM_DEFINE ( kobject_sem ,
(0) ,
(10)  )

◆ K_THREAD_STACK_DECLARE()

K_THREAD_STACK_DECLARE ( child_stack ,
(512+CONFIG_TEST_EXTRA_STACK_SIZE)  )

◆ K_THREAD_STACK_DEFINE()

K_THREAD_STACK_DEFINE ( extra_stack ,
(512+CONFIG_TEST_EXTRA_STACK_SIZE)  )

◆ kobject_access_grant_user_part()

static void kobject_access_grant_user_part ( void * p1,
void * p2,
void * p3 )
static

◆ kobject_grant_access_child_entry()

static void kobject_grant_access_child_entry ( void * p1,
void * p2,
void * p3 )
static

◆ kobject_grant_access_extra_entry()

static void kobject_grant_access_extra_entry ( void * p1,
void * p2,
void * p3 )
static

◆ kobject_revoke_access_user_part()

static void kobject_revoke_access_user_part ( void * p1,
void * p2,
void * p3 )
static

◆ new_thrd_from_user_with_in_use_stack()

static void new_thrd_from_user_with_in_use_stack ( void * p1,
void * p2,
void * p3 )
static

◆ new_thread_from_user_child()

static void new_thread_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ new_thread_from_user_extra()

static void new_thread_from_user_extra ( void * p1,
void * p2,
void * p3 )
static

◆ new_user_thrd_child_with_in_use_stack()

static void new_user_thrd_child_with_in_use_stack ( void * p1,
void * p2,
void * p3 )
static

◆ otype_to_str()

const char * otype_to_str ( enum k_objects otype)
extern

◆ reinitialize_thread_kobj_child()

static void reinitialize_thread_kobj_child ( void * p1,
void * p2,
void * p3 )
static

◆ reinitialize_thread_kobj_extra()

static void reinitialize_thread_kobj_extra ( void * p1,
void * p2,
void * p3 )
static

◆ release_from_user_child()

static void release_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ residual_permissions_child_fail()

static void residual_permissions_child_fail ( void * p1,
void * p2,
void * p3 )
static

◆ residual_permissions_child_success()

static void residual_permissions_child_success ( void * p1,
void * p2,
void * p3 )
static

◆ supervisor_from_user_child()

static void supervisor_from_user_child ( void * p1,
void * p2,
void * p3 )
static

◆ supervisor_from_user_extra()

static void supervisor_from_user_extra ( void * p1,
void * p2,
void * p3 )
static

◆ syscall_invalid_kobject_user_part()

static void syscall_invalid_kobject_user_part ( void * p1,
void * p2,
void * p3 )
static

◆ test_thread_alloc_out_of_idx()

void test_thread_alloc_out_of_idx ( void )

◆ thread_stack_init_objects()

static void thread_stack_init_objects ( void * p1,
void * p2,
void * p3 )
static

◆ thread_without_kobject_permission_user_part()

static void thread_without_kobject_permission_user_part ( void * p1,
void * p2,
void * p3 )
static

◆ tThread_object_free_error()

static void tThread_object_free_error ( void * p1,
void * p2,
void * p3 )
static

◆ user_huge_stacksize_child()

static void user_huge_stacksize_child ( void * p1,
void * p2,
void * p3 )
static

◆ user_huge_stacksize_extra()

static void user_huge_stacksize_extra ( void * p1,
void * p2,
void * p3 )
static

◆ without_init_with_access_child()

static void without_init_with_access_child ( void * p1,
void * p2,
void * p3 )
static

◆ ZTEST_SUITE()

ZTEST_SUITE ( mem_protect_kobj ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL  )

Variable Documentation

◆ child_thread

struct k_thread child_thread
extern

◆ condvar

struct k_condvar condvar

◆ extra_thread

struct k_thread extra_thread

◆ f

struct k_futex f

◆ kobject_sem_no_init_access

struct k_sem kobject_sem_no_init_access

◆ kobject_sem_no_init_no_access

struct k_sem kobject_sem_no_init_no_access

◆ kobject_sem_not_hash_table

struct k_sem kobject_sem_not_hash_table

◆ mq

struct k_msgq mq

◆ ms

struct k_mem_slab ms

◆ mutex

struct k_mutex mutex

◆ p

struct k_pipe p

◆ ps

struct k_poll_signal ps

◆ q

struct k_queue q

◆ random_sem_type

struct k_sem* random_sem_type

◆ s

struct k_stack s

◆ sem

struct k_sem sem

◆ t

struct k_thread t

◆ timer

struct k_timer timer ( void )

◆ zs

struct z_thread_stack_element zs