static void tstack_push(struct k_stack *pstack) { for (int i = 0; i < STACK_LEN; i++) { /**TESTPOINT: stack push*/ k_stack_push(pstack, data[i]); } }
/* * Do run-time initialization of pipe object subsystem. */ static int init_pipes_module(struct device *dev) { ARG_UNUSED(dev); #if (CONFIG_NUM_PIPE_ASYNC_MSGS > 0) /* * Create pool of asynchronous pipe message descriptors. * * A dummy thread requires minimal initialization, since it never gets * to execute. The _THREAD_DUMMY flag is sufficient to distinguish a * dummy thread from a real one. The threads are *not* added to the * kernel's list of known threads. * * Once initialized, the address of each descriptor is added to a stack * that governs access to them. */ for (int i = 0; i < CONFIG_NUM_PIPE_ASYNC_MSGS; i++) { async_msg[i].thread.thread_state = _THREAD_DUMMY; async_msg[i].thread.swap_data = &async_msg[i].desc; k_stack_push(&pipe_async_msgs, (u32_t)&async_msg[i]); } #endif /* CONFIG_NUM_PIPE_ASYNC_MSGS > 0 */ /* Complete initialization of statically defined mailboxes. */ #ifdef CONFIG_OBJECT_TRACING struct k_pipe *pipe; for (pipe = _k_pipe_list_start; pipe < _k_pipe_list_end; pipe++) { SYS_TRACING_OBJ_INIT(k_pipe, pipe); } #endif /* CONFIG_OBJECT_TRACING */ return 0; }
/* Free an asynchronous message descriptor */ static void _pipe_async_free(struct k_pipe_async *async) { k_stack_push(&pipe_async_msgs, (u32_t)async); }