Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Macros | |
#define | K_STACK_DEFINE(name, stack_num_entries) |
Statically define and initialize a stack. | |
Functions | |
void | k_stack_init (struct k_stack *stack, stack_data_t *buffer, uint32_t num_entries) |
Initialize a stack. | |
int32_t | k_stack_alloc_init (struct k_stack *stack, uint32_t num_entries) |
Initialize a stack. | |
int | k_stack_cleanup (struct k_stack *stack) |
Release a stack's allocated buffer. | |
int | k_stack_push (struct k_stack *stack, stack_data_t data) |
Push an element onto a stack. | |
int | k_stack_pop (struct k_stack *stack, stack_data_t *data, k_timeout_t timeout) |
Pop an element from a stack. | |
#define K_STACK_DEFINE | ( | name, | |
stack_num_entries | |||
) |
#include <include/zephyr/kernel.h>
Statically define and initialize a stack.
The stack can be accessed outside the module where it is defined using:
name | Name of the stack. |
stack_num_entries | Maximum number of values that can be stacked. |
#include <include/zephyr/kernel.h>
Initialize a stack.
This routine initializes a stack object, prior to its first use. Internal buffers will be allocated from the calling thread's resource pool. This memory will be released if k_stack_cleanup() is called, or userspace is enabled and the stack object loses all references to it.
stack | Address of the stack. |
num_entries | Maximum number of values that can be stacked. |
int k_stack_cleanup | ( | struct k_stack * | stack | ) |
#include <include/zephyr/kernel.h>
Release a stack's allocated buffer.
If a stack object was given a dynamically allocated buffer via k_stack_alloc_init(), this will free it. This function does nothing if the buffer wasn't dynamically allocated.
stack | Address of the stack. |
0 | on success |
-EAGAIN | when object is still in use |
void k_stack_init | ( | struct k_stack * | stack, |
stack_data_t * | buffer, | ||
uint32_t | num_entries | ||
) |
#include <include/zephyr/kernel.h>
Initialize a stack.
This routine initializes a stack object, prior to its first use.
stack | Address of the stack. |
buffer | Address of array used to hold stacked values. |
num_entries | Maximum number of values that can be stacked. |
|
isr-ok |
#include <include/zephyr/kernel.h>
Pop an element from a stack.
This routine removes a stack_data_t value from stack in a "last in, first out" manner and stores the value in data.
stack | Address of the stack. |
data | Address of area to hold the value popped from the stack. |
timeout | Waiting period to obtain a value, or one of the special values K_NO_WAIT and K_FOREVER. |
0 | Element popped from stack. |
-EBUSY | Returned without waiting. |
-EAGAIN | Waiting period timed out. |
|
isr-ok |
#include <include/zephyr/kernel.h>
Push an element onto a stack.
This routine adds a stack_data_t value data to stack.
stack | Address of the stack. |
data | Value to push onto the stack. |
0 | on success |
-ENOMEM | if stack is full |