Linux Audio
Check our new training course
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
/* * Copyright (c) 2017, 2020 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr.h> #include <ztest.h> #include <kernel_structs.h> #include <string.h> #include <stdlib.h> extern void test_permission_inheritance(void); extern void test_inherit_resource_pool(void); extern void test_mem_domain_setup(void); extern void test_mem_domain_valid_access(void); extern void test_mem_domain_invalid_access(void); extern void test_mem_domain_no_writes_to_ro(void); extern void test_mem_domain_remove_add_partition(void); extern void test_mem_domain_api_supervisor_only(void); extern void test_mem_domain_boot_threads(void); extern void test_mem_domain_migration(void); extern void test_mem_domain_init_fail(void); extern void test_mem_domain_remove_part_fail(void); extern void test_macros_obtain_names_data_bss(void); extern void test_mem_part_assign_bss_vars_zero(void); extern void test_mem_part_auto_determ_size(void); extern void test_kobject_access_grant(void); extern void test_syscall_invalid_kobject(void); extern void test_thread_without_kobject_permission(void); extern void test_kobject_revoke_access(void); extern void test_kobject_grant_access_kobj(void); extern void test_kobject_grant_access_kobj_invalid(void); extern void test_kobject_release_from_user(void); extern void test_kobject_access_all_grant(void); extern void test_thread_has_residual_permissions(void); extern void test_kobject_access_grant_to_invalid_thread(void); extern void test_kobject_access_invalid_kobject(void); extern void test_access_kobject_without_init_access(void); extern void test_access_kobject_without_init_with_access(void); extern void test_kobject_reinitialize_thread_kobj(void); extern void test_create_new_thread_from_user(void); extern void test_new_user_thread_with_in_use_stack_obj(void); extern void test_create_new_thread_from_user_no_access_stack(void); extern void test_create_new_thread_from_user_invalid_stacksize(void); extern void test_create_new_thread_from_user_huge_stacksize(void); extern void test_create_new_supervisor_thread_from_user(void); extern void test_create_new_essential_thread_from_user(void); extern void test_create_new_higher_prio_thread_from_user(void); extern void test_create_new_invalid_prio_thread_from_user(void); extern void test_mark_thread_exit_uninitialized(void); extern void test_krnl_obj_static_alloc_build_time(void); extern void test_mem_part_overlap(void); extern void test_mem_part_assert_add_overmax(void); extern void test_kobject_access_grant_error(void); extern void test_kobject_access_grant_error_user(void); extern void test_kobject_access_grant_error_user_null(void); extern void test_kobject_access_all_grant_error(void); extern void test_kobject_release_null(void); extern void test_kobject_free_error(void); extern void test_kobject_init_error(void); extern void test_kobj_create_out_of_memory(void); extern void test_thread_alloc_out_of_idx(void); extern void test_alloc_kobjects(void); extern void test_kobject_perm_error(void); /* Flag needed to figure out if the fault was expected or not. */ extern volatile bool valid_fault; static inline void set_fault_valid(bool valid) { valid_fault = valid; /* Put a barrier here, such that no instructions get ordered by the * compiler before we set valid_fault. This can happen with expansion * of inline syscall invocation functions. */ compiler_barrier(); } /* For inherit.c */ #define INHERIT_STACK_SIZE CONFIG_MAIN_STACK_SIZE #define SEMAPHORE_MAX_COUNT (10) #define SEMAPHORE_INIT_COUNT (0) #define SYNC_SEM_MAX_COUNT (1) #define SYNC_SEM_INIT_COUNT (0) #define MSG_Q_SIZE (10) #define MSG_Q_MAX_NUM_MSGS (10) #define MSG_Q_ALIGN (2) #define PRIORITY 5 #define STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACKSIZE) #define BLK_SIZE_MIN 16 #define BLK_SIZE_MAX 64 #define BLK_NUM_MIN 8 #define BLK_NUM_MAX 2 #define BLK_ALIGN BLK_SIZE_MIN #define SEM_INIT_VAL (0U) #define SEM_MAX_VAL (1U) /* For mem_domain.c */ #define MEM_DOMAIN_STACK_SIZE CONFIG_MAIN_STACK_SIZE #define MEM_PARTITION_INIT_NUM (1) #define BLK_SIZE_MIN_MD 8 #define BLK_SIZE_MAX_MD 16 #define BLK_NUM_MAX_MD 4 #define BLK_ALIGN_MD BLK_SIZE_MIN_MD #define DESC_SIZE sizeof(struct sys_mem_pool_block) #define STACK_SIZE_MD (512 + CONFIG_TEST_EXTRA_STACKSIZE) #define PRIORITY_MD 5 #if defined(CONFIG_X86) #define MEM_REGION_ALLOC (4096) #elif defined(CONFIG_ARC) #define MEM_REGION_ALLOC (Z_ARC_MPU_ALIGN) #elif defined(CONFIG_ARM64) #define MEM_REGION_ALLOC (4096) #elif defined(CONFIG_ARM) #define MEM_REGION_ALLOC (Z_THREAD_MIN_STACK_ALIGN) #elif defined(CONFIG_RISCV) #define MEM_REGION_ALLOC (Z_RISCV_PMP_ALIGN) #else #error "Test suite not compatible for the given architecture" #endif #define MEM_DOMAIN_ALIGNMENT __aligned(MEM_REGION_ALLOC) /* for kobject.c */ #define KOBJECT_STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACKSIZE) #if defined(CONFIG_X86_64) || defined(CONFIG_ARM64) #define TEST_HEAP_SIZE (2 << CONFIG_MAX_THREAD_BYTES) * 1024 #define MAX_OBJ 512 #else #define TEST_HEAP_SIZE (2 << CONFIG_MAX_THREAD_BYTES) * 256 #define MAX_OBJ 256 #endif #ifndef _TEST_SYSCALLS_H_ #define _TEST_SYSCALLS_H_ __syscall struct k_heap *ret_resource_pool_ptr(void); #include <syscalls/mem_protect.h> #endif /* _TEST_SYSCALLS_H_ */