kernel: add requirement Ids to implementation
Add requirement ID place holders based on APIS. The requirements will
appear as a list in doxygen documentation. The IDs will be expanded with
more details somewhere else, probably a requirement catalog on GH or
some other requirement management tool. This is still TBD.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/include/kernel.h b/include/kernel.h
index a6a2c61..3312832 100644
--- a/include/kernel.h
+++ b/include/kernel.h
@@ -1978,14 +1978,13 @@
/** @} */
-/**
- * @cond INTERNAL_HIDDEN
- */
-
struct k_fifo {
struct k_queue _queue;
};
+/**
+ * @cond INTERNAL_HIDDEN
+ */
#define _K_FIFO_INITIALIZER(obj) \
{ \
._queue = _K_QUEUE_INITIALIZER(obj._queue) \
@@ -2011,6 +2010,7 @@
* @param fifo Address of the FIFO queue.
*
* @return N/A
+ * @req K-FIFO-001
*/
#define k_fifo_init(fifo) \
k_queue_init((struct k_queue *) fifo)
@@ -2027,6 +2027,7 @@
* @param fifo Address of the FIFO queue.
*
* @return N/A
+ * @req K-FIFO-001
*/
#define k_fifo_cancel_wait(fifo) \
k_queue_cancel_wait((struct k_queue *) fifo)
@@ -2044,6 +2045,7 @@
* @param data Address of the data item.
*
* @return N/A
+ * @req K-FIFO-001
*/
#define k_fifo_put(fifo, data) \
k_queue_append((struct k_queue *) fifo, data)
@@ -2062,6 +2064,7 @@
*
* @retval 0 on success
* @retval -ENOMEM if there isn't sufficient RAM in the caller's resource pool
+ * @req K-FIFO-001
*/
#define k_fifo_alloc_put(fifo, data) \
k_queue_alloc_append((struct k_queue *) fifo, data)
@@ -2081,6 +2084,7 @@
* @param tail Pointer to last node in singly-linked list.
*
* @return N/A
+ * @req K-FIFO-001
*/
#define k_fifo_put_list(fifo, head, tail) \
k_queue_append_list((struct k_queue *) fifo, head, tail)
@@ -2099,6 +2103,7 @@
* @param list Pointer to sys_slist_t object.
*
* @return N/A
+ * @req K-FIFO-001
*/
#define k_fifo_put_slist(fifo, list) \
k_queue_merge_slist((struct k_queue *) fifo, list)
@@ -2117,6 +2122,7 @@
*
* @return Address of the data item if successful; NULL if returned
* without waiting, or waiting period timed out.
+ * @req K-FIFO-001
*/
#define k_fifo_get(fifo, timeout) \
k_queue_get((struct k_queue *) fifo, timeout)
@@ -2133,6 +2139,7 @@
*
* @return Non-zero if the FIFO queue is empty.
* @return 0 if data is available.
+ * @req K-FIFO-001
*/
#define k_fifo_is_empty(fifo) \
k_queue_is_empty((struct k_queue *) fifo)
@@ -2149,6 +2156,7 @@
* @param fifo Address of the FIFO queue.
*
* @return Head element, or NULL if the FIFO queue is empty.
+ * @req K-FIFO-001
*/
#define k_fifo_peek_head(fifo) \
k_queue_peek_head((struct k_queue *) fifo)
@@ -2163,6 +2171,7 @@
* @param fifo Address of the FIFO queue.
*
* @return Tail element, or NULL if a FIFO queue is empty.
+ * @req K-FIFO-001
*/
#define k_fifo_peek_tail(fifo) \
k_queue_peek_tail((struct k_queue *) fifo)
@@ -2175,6 +2184,7 @@
* @code extern struct k_fifo <name>; @endcode
*
* @param name Name of the FIFO queue.
+ * @req K-FIFO-002
*/
#define K_FIFO_DEFINE(name) \
struct k_fifo name \
@@ -2183,14 +2193,14 @@
/** @} */
-/**
- * @cond INTERNAL_HIDDEN
- */
-
struct k_lifo {
struct k_queue _queue;
};
+/**
+ * @cond INTERNAL_HIDDEN
+ */
+
#define _K_LIFO_INITIALIZER(obj) \
{ \
._queue = _K_QUEUE_INITIALIZER(obj._queue) \
@@ -2216,6 +2226,7 @@
* @param lifo Address of the LIFO queue.
*
* @return N/A
+ * @req K-LIFO-001
*/
#define k_lifo_init(lifo) \
k_queue_init((struct k_queue *) lifo)
@@ -2233,6 +2244,7 @@
* @param data Address of the data item.
*
* @return N/A
+ * @req K-LIFO-001
*/
#define k_lifo_put(lifo, data) \
k_queue_prepend((struct k_queue *) lifo, data)
@@ -2251,6 +2263,7 @@
*
* @retval 0 on success
* @retval -ENOMEM if there isn't sufficient RAM in the caller's resource pool
+ * @req K-LIFO-001
*/
#define k_lifo_alloc_put(lifo, data) \
k_queue_alloc_prepend((struct k_queue *) lifo, data)
@@ -2269,6 +2282,7 @@
*
* @return Address of the data item if successful; NULL if returned
* without waiting, or waiting period timed out.
+ * @req K-LIFO-001
*/
#define k_lifo_get(lifo, timeout) \
k_queue_get((struct k_queue *) lifo, timeout)
@@ -2281,6 +2295,7 @@
* @code extern struct k_lifo <name>; @endcode
*
* @param name Name of the fifo.
+ * @req K-LIFO-002
*/
#define K_LIFO_DEFINE(name) \
struct k_lifo name \
@@ -2333,6 +2348,7 @@
* @param num_entries Maximum number of values that can be stacked.
*
* @return N/A
+ * @req K-STACK-001
*/
void k_stack_init(struct k_stack *stack,
u32_t *buffer, unsigned int num_entries);
@@ -2350,6 +2366,7 @@
* @param num_entries Maximum number of values that can be stacked.
*
* @return -ENOMEM if memory couldn't be allocated
+ * @req K-STACK-001
*/
__syscall int k_stack_alloc_init(struct k_stack *stack,
@@ -2363,6 +2380,7 @@
* if the buffer wasn't dynamically allocated.
*
* @param stack Address of the stack.
+ * @req K-STACK-001
*/
void k_stack_cleanup(struct k_stack *stack);
@@ -2377,6 +2395,7 @@
* @param data Value to push onto the stack.
*
* @return N/A
+ * @req K-STACK-001
*/
__syscall void k_stack_push(struct k_stack *stack, u32_t data);
@@ -2396,6 +2415,7 @@
* @retval 0 Element popped from stack.
* @retval -EBUSY Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-STACK-001
*/
__syscall int k_stack_pop(struct k_stack *stack, u32_t *data, s32_t timeout);
@@ -2408,6 +2428,7 @@
*
* @param name Name of the stack.
* @param stack_num_entries Maximum number of values that can be stacked.
+ * @req K-STACK-002
*/
#define K_STACK_DEFINE(name, stack_num_entries) \
u32_t __noinit \
@@ -2437,6 +2458,7 @@
* @param work Address of the work item.
*
* @return N/A
+ * @req K-WORK-001
*/
typedef void (*k_work_handler_t)(struct k_work *work);
@@ -2490,6 +2512,7 @@
*
* @param work Symbol name for work item object
* @param work_handler Function to invoke each time work item is processed.
+ * @req K-WORK-002
*/
#define K_WORK_DEFINE(work, work_handler) \
struct k_work work \
@@ -2505,6 +2528,7 @@
* @param handler Function to invoke each time work item is processed.
*
* @return N/A
+ * @req K-WORK-001
*/
static inline void k_work_init(struct k_work *work, k_work_handler_t handler)
{
@@ -2533,6 +2557,7 @@
* @param work Address of work item.
*
* @return N/A
+ * @req K-WORK-001
*/
static inline void k_work_submit_to_queue(struct k_work_q *work_q,
struct k_work *work)
@@ -2553,6 +2578,7 @@
* @param work Address of work item.
*
* @return 1 if work item is pending, or 0 if it is not pending.
+ * @req K-WORK-001
*/
static inline int k_work_pending(struct k_work *work)
{
@@ -2574,6 +2600,7 @@
* @param prio Priority of the work queue's thread.
*
* @return N/A
+ * @req K-WORK-001
*/
extern void k_work_q_start(struct k_work_q *work_q,
k_thread_stack_t *stack,
@@ -2589,6 +2616,7 @@
* @param handler Function to invoke each time work item is processed.
*
* @return N/A
+ * @req K-DWORK-001
*/
extern void k_delayed_work_init(struct k_delayed_work *work,
k_work_handler_t handler);
@@ -2623,6 +2651,7 @@
* @retval -EINPROGRESS Work item is already pending.
* @retval -EINVAL Work item is being processed or has completed its work.
* @retval -EADDRINUSE Work item is pending on a different workqueue.
+ * @req K-DWORK-001
*/
extern int k_delayed_work_submit_to_queue(struct k_work_q *work_q,
struct k_delayed_work *work,
@@ -2642,6 +2671,7 @@
* @retval 0 Work item countdown canceled.
* @retval -EINPROGRESS Work item is already pending.
* @retval -EINVAL Work item is being processed or has completed its work.
+ * @req K-DWORK-001
*/
extern int k_delayed_work_cancel(struct k_delayed_work *work);
@@ -2665,6 +2695,7 @@
* @param work Address of work item.
*
* @return N/A
+ * @req K-WORK-001
*/
static inline void k_work_submit(struct k_work *work)
{
@@ -2702,6 +2733,7 @@
* @retval -EINPROGRESS Work item is already pending.
* @retval -EINVAL Work item is being processed or has completed its work.
* @retval -EADDRINUSE Work item is pending on a different workqueue.
+ * @req K-DWORK-001
*/
static inline int k_delayed_work_submit(struct k_delayed_work *work,
s32_t delay)
@@ -2719,6 +2751,7 @@
* @param work Delayed work item.
*
* @return Remaining time (in milliseconds).
+ * @req K-DWORK-001
*/
static inline s32_t k_delayed_work_remaining_get(struct k_delayed_work *work)
{
@@ -2769,6 +2802,7 @@
* @code extern struct k_mutex <name>; @endcode
*
* @param name Name of the mutex.
+ * @req K-MUTEX-001
*/
#define K_MUTEX_DEFINE(name) \
struct k_mutex name \
@@ -2785,6 +2819,7 @@
* @param mutex Address of the mutex.
*
* @return N/A
+ * @req K-MUTEX-002
*/
__syscall void k_mutex_init(struct k_mutex *mutex);
@@ -2805,6 +2840,7 @@
* @retval 0 Mutex locked.
* @retval -EBUSY Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MUTEX-002
*/
__syscall int k_mutex_lock(struct k_mutex *mutex, s32_t timeout);
@@ -2821,6 +2857,7 @@
* @param mutex Address of the mutex.
*
* @return N/A
+ * @req K-MUTEX-002
*/
__syscall void k_mutex_unlock(struct k_mutex *mutex);
@@ -2872,6 +2909,7 @@
* @param limit Maximum permitted semaphore count.
*
* @return N/A
+ * @req K-SEM-001
*/
__syscall void k_sem_init(struct k_sem *sem, unsigned int initial_count,
unsigned int limit);
@@ -2896,6 +2934,7 @@
* @retval 0 Semaphore taken.
* @retval -EBUSY Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-SEM-001
*/
__syscall int k_sem_take(struct k_sem *sem, s32_t timeout);
@@ -2910,6 +2949,7 @@
* @param sem Address of the semaphore.
*
* @return N/A
+ * @req K-SEM-001
*/
__syscall void k_sem_give(struct k_sem *sem);
@@ -2921,6 +2961,7 @@
* @param sem Address of the semaphore.
*
* @return N/A
+ * @req K-SEM-001
*/
__syscall void k_sem_reset(struct k_sem *sem);
@@ -2940,6 +2981,7 @@
* @param sem Address of the semaphore.
*
* @return Current semaphore count.
+ * @req K-SEM-001
*/
__syscall unsigned int k_sem_count_get(struct k_sem *sem);
@@ -2961,6 +3003,7 @@
* @param name Name of the semaphore.
* @param initial_count Initial semaphore count.
* @param count_limit Maximum permitted semaphore count.
+ * @req K-SEM-002
*/
#define K_SEM_DEFINE(name, initial_count, count_limit) \
struct k_sem name \
@@ -3035,6 +3078,8 @@
*/
/**
+ * @def K_ALERT_DEFINE(name, alert_handler, max_num_pending_alerts)
+ *
* @brief Statically define and initialize an alert.
*
* The alert can be accessed outside the module where it is defined using:
@@ -3047,6 +3092,8 @@
* thread, K_ALERT_IGNORE (which causes the alert to be ignored), or
* K_ALERT_DEFAULT (which causes the alert to pend).
* @param max_num_pending_alerts Maximum number of pending alerts.
+ *
+ * @req K-ALERT-001
*/
#define K_ALERT_DEFINE(name, alert_handler, max_num_pending_alerts) \
struct k_alert name \
@@ -3067,6 +3114,7 @@
* @param max_num_pending_alerts Maximum number of pending alerts.
*
* @return N/A
+ * @req K-ALERT-002
*/
extern void k_alert_init(struct k_alert *alert, k_alert_handler_t handler,
unsigned int max_num_pending_alerts);
@@ -3085,6 +3133,7 @@
* @retval 0 Alert received.
* @retval -EBUSY Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-ALERT-002
*/
__syscall int k_alert_recv(struct k_alert *alert, s32_t timeout);
@@ -3101,6 +3150,7 @@
* @param alert Address of the alert.
*
* @return N/A
+ * @req K-ALERT-002
*/
__syscall void k_alert_send(struct k_alert *alert);
@@ -3109,9 +3159,14 @@
*/
/**
- * @cond INTERNAL_HIDDEN
+ * @defgroup msgq_apis Message Queue APIs
+ * @ingroup kernel_apis
+ * @{
*/
+/**
+ * @brief Message Queue Structure
+ */
struct k_msgq {
_wait_q_t wait_q;
size_t msg_size;
@@ -3125,6 +3180,10 @@
_OBJECT_TRACING_NEXT_PTR(k_msgq);
u8_t flags;
};
+/**
+ * @cond INTERNAL_HIDDEN
+ */
+
#define _K_MSGQ_INITIALIZER(obj, q_buffer, q_msg_size, q_max_msgs) \
{ \
@@ -3138,26 +3197,23 @@
.used_msgs = 0, \
_OBJECT_TRACING_INIT \
}
-
#define K_MSGQ_INITIALIZER DEPRECATED_MACRO _K_MSGQ_INITIALIZER
+/**
+ * INTERNAL_HIDDEN @endcond
+ */
+
#define K_MSGQ_FLAG_ALLOC BIT(0)
+/**
+ * @brief Message Queue Attributes
+ */
struct k_msgq_attrs {
size_t msg_size;
u32_t max_msgs;
u32_t used_msgs;
};
-/**
- * INTERNAL_HIDDEN @endcond
- */
-
-/**
- * @defgroup msgq_apis Message Queue APIs
- * @ingroup kernel_apis
- * @{
- */
/**
* @brief Statically define and initialize a message queue.
@@ -3177,6 +3233,8 @@
* @param q_msg_size Message size (in bytes).
* @param q_max_msgs Maximum number of messages that can be queued.
* @param q_align Alignment of the message queue's ring buffer.
+ *
+ * @req K-MSGQ-001
*/
#define K_MSGQ_DEFINE(q_name, q_msg_size, q_max_msgs, q_align) \
static char __kernel_noinit __aligned(q_align) \
@@ -3203,6 +3261,7 @@
* @param max_msgs Maximum number of messages that can be queued.
*
* @return N/A
+ * @req K-MSGQ-002
*/
void k_msgq_init(struct k_msgq *q, char *buffer, size_t msg_size,
u32_t max_msgs);
@@ -3225,6 +3284,7 @@
* @return 0 on success, -ENOMEM if there was insufficient memory in the
* thread's resource pool, or -EINVAL if the size parameters cause
* an integer overflow.
+ * @req K-MSGQ-002
*/
__syscall int k_msgq_alloc_init(struct k_msgq *q, size_t msg_size,
u32_t max_msgs);
@@ -3247,6 +3307,7 @@
* @retval 0 Message sent.
* @retval -ENOMSG Returned without waiting or queue purged.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MSGQ-002
*/
__syscall int k_msgq_put(struct k_msgq *q, void *data, s32_t timeout);
@@ -3266,6 +3327,7 @@
* @retval 0 Message received.
* @retval -ENOMSG Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MSGQ-002
*/
__syscall int k_msgq_get(struct k_msgq *q, void *data, s32_t timeout);
@@ -3279,6 +3341,7 @@
* @param q Address of the message queue.
*
* @return N/A
+ * @req K-MSGQ-002
*/
__syscall void k_msgq_purge(struct k_msgq *q);
@@ -3291,6 +3354,7 @@
* @param q Address of the message queue.
*
* @return Number of unused ring buffer entries.
+ * @req K-MSGQ-002
*/
__syscall u32_t k_msgq_num_free_get(struct k_msgq *q);
@@ -3303,6 +3367,7 @@
* @param attrs pointer to message queue attribute structure.
*
* @return N/A
+ * @req K-MSGQ-003
*/
__syscall void k_msgq_get_attrs(struct k_msgq *q, struct k_msgq_attrs *attrs);
@@ -3320,6 +3385,7 @@
* @param q Address of the message queue.
*
* @return Number of messages.
+ * @req K-MSGQ-002
*/
__syscall u32_t k_msgq_num_used_get(struct k_msgq *q);
@@ -3385,16 +3451,15 @@
#endif
};
-/**
- * @cond INTERNAL_HIDDEN
- */
-
struct k_mbox {
_wait_q_t tx_msg_queue;
_wait_q_t rx_msg_queue;
_OBJECT_TRACING_NEXT_PTR(k_mbox);
};
+/**
+ * @cond INTERNAL_HIDDEN
+ */
#define _K_MBOX_INITIALIZER(obj) \
{ \
@@ -3417,6 +3482,7 @@
* @code extern struct k_mbox <name>; @endcode
*
* @param name Name of the mailbox.
+ * @req K-MBOX-001
*/
#define K_MBOX_DEFINE(name) \
struct k_mbox name \
@@ -3431,6 +3497,7 @@
* @param mbox Address of the mailbox.
*
* @return N/A
+ * @req K-MBOX-002
*/
extern void k_mbox_init(struct k_mbox *mbox);
@@ -3452,6 +3519,7 @@
* @retval 0 Message sent.
* @retval -ENOMSG Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MBOX-002
*/
extern int k_mbox_put(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
s32_t timeout);
@@ -3470,6 +3538,7 @@
* @param sem Address of a semaphore, or NULL if none is needed.
*
* @return N/A
+ * @req K-MBOX-002
*/
extern void k_mbox_async_put(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
struct k_sem *sem);
@@ -3491,6 +3560,7 @@
* @retval 0 Message received.
* @retval -ENOMSG Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MBOX-002
*/
extern int k_mbox_get(struct k_mbox *mbox, struct k_mbox_msg *rx_msg,
void *buffer, s32_t timeout);
@@ -3509,6 +3579,7 @@
* the data.
*
* @return N/A
+ * @req K-MBOX-002
*/
extern void k_mbox_data_get(struct k_mbox_msg *rx_msg, void *buffer);
@@ -3541,6 +3612,7 @@
* @retval 0 Data retrieved.
* @retval -ENOMEM Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MBOX-002
*/
extern int k_mbox_data_block_get(struct k_mbox_msg *rx_msg,
struct k_mem_pool *pool,
@@ -3605,6 +3677,8 @@
* @param pipe_buffer_size Size of the pipe's ring buffer (in bytes),
* or zero if no ring buffer is used.
* @param pipe_align Alignment of the pipe's ring buffer (power of 2).
+ *
+ * @req K-PIPE-001
*/
#define K_PIPE_DEFINE(name, pipe_buffer_size, pipe_align) \
static unsigned char __kernel_noinit __aligned(pipe_align) \
@@ -3625,6 +3699,7 @@
* buffer is used.
*
* @return N/A
+ * @req K-PIPE-002
*/
void k_pipe_init(struct k_pipe *pipe, unsigned char *buffer, size_t size);
@@ -3636,6 +3711,7 @@
* if the buffer wasn't dynamically allocated.
*
* @param pipe Address of the pipe.
+ * @req K-PIPE-002
*/
void k_pipe_cleanup(struct k_pipe *pipe);
@@ -3653,6 +3729,7 @@
* buffer is used.
* @retval 0 on success
* @retval -ENOMEM if memory couldn't be allocated
+ * @req K-PIPE-002
*/
__syscall int k_pipe_alloc_init(struct k_pipe *pipe, size_t size);
@@ -3674,6 +3751,7 @@
* @retval -EIO Returned without waiting; zero data bytes were written.
* @retval -EAGAIN Waiting period timed out; between zero and @a min_xfer
* minus one data bytes were written.
+ * @req K-PIPE-002
*/
__syscall int k_pipe_put(struct k_pipe *pipe, void *data,
size_t bytes_to_write, size_t *bytes_written,
@@ -3697,6 +3775,7 @@
* @retval -EIO Returned without waiting; zero data bytes were read.
* @retval -EAGAIN Waiting period timed out; between zero and @a min_xfer
* minus one data bytes were read.
+ * @req K-PIPE-002
*/
__syscall int k_pipe_get(struct k_pipe *pipe, void *data,
size_t bytes_to_read, size_t *bytes_read,
@@ -3715,6 +3794,7 @@
* @param sem Semaphore to signal upon completion (else NULL)
*
* @return N/A
+ * @req K-PIPE-002
*/
extern void k_pipe_block_put(struct k_pipe *pipe, struct k_mem_block *block,
size_t size, struct k_sem *sem);
@@ -3779,6 +3859,7 @@
* @param slab_block_size Size of each memory block (in bytes).
* @param slab_num_blocks Number memory blocks.
* @param slab_align Alignment of the memory slab's buffer (power of 2).
+ * @req K-MSLAB-001
*/
#define K_MEM_SLAB_DEFINE(name, slab_block_size, slab_num_blocks, slab_align) \
char __noinit __aligned(slab_align) \
@@ -3805,6 +3886,7 @@
* @param num_blocks Number of memory blocks.
*
* @return N/A
+ * @req K-MSLAB-002
*/
extern void k_mem_slab_init(struct k_mem_slab *slab, void *buffer,
size_t block_size, u32_t num_blocks);
@@ -3824,6 +3906,7 @@
* is set to the starting address of the memory block.
* @retval -ENOMEM Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MSLAB-002
*/
extern int k_mem_slab_alloc(struct k_mem_slab *slab, void **mem,
s32_t timeout);
@@ -3838,6 +3921,7 @@
* @param mem Pointer to block address area (as set by k_mem_slab_alloc()).
*
* @return N/A
+ * @req K-MSLAB-002
*/
extern void k_mem_slab_free(struct k_mem_slab *slab, void **mem);
@@ -3850,6 +3934,7 @@
* @param slab Address of the memory slab.
*
* @return Number of allocated memory blocks.
+ * @req K-MSLAB-002
*/
static inline u32_t k_mem_slab_num_used_get(struct k_mem_slab *slab)
{
@@ -3865,6 +3950,7 @@
* @param slab Address of the memory slab.
*
* @return Number of unallocated memory blocks.
+ * @req K-MSLAB-002
*/
static inline u32_t k_mem_slab_num_free_get(struct k_mem_slab *slab)
{
@@ -3909,6 +3995,7 @@
* @param maxsz Size of the largest blocks in the pool (in bytes).
* @param nmax Number of maximum sized blocks in the pool.
* @param align Alignment of the pool's buffer (power of 2).
+ * @req K-MPOOL-001
*/
#define K_MEM_POOL_DEFINE(name, minsz, maxsz, nmax, align) \
char __aligned(align) _mpool_buf_##name[_ALIGN4(maxsz * nmax) \
@@ -3941,6 +4028,7 @@
* is set to the starting address of the memory block.
* @retval -ENOMEM Returned without waiting.
* @retval -EAGAIN Waiting period timed out.
+ * @req K-MPOOL-002
*/
extern int k_mem_pool_alloc(struct k_mem_pool *pool, struct k_mem_block *block,
size_t size, s32_t timeout);
@@ -3953,6 +4041,7 @@
* @param pool Address of the memory pool.
* @param size Amount of memory to allocate (in bytes).
* @return Address of the allocated memory if successful, otherwise NULL
+ * @req K-MPOOL-002
*/
extern void *k_mem_pool_malloc(struct k_mem_pool *pool, size_t size);
@@ -3965,6 +4054,7 @@
* @param block Pointer to block descriptor for the allocated memory.
*
* @return N/A
+ * @req K-MPOOL-002
*/
extern void k_mem_pool_free(struct k_mem_block *block);
@@ -3977,6 +4067,7 @@
* @param id Memory block identifier.
*
* @return N/A
+ * @req K-MPOOL-002
*/
extern void k_mem_pool_free_id(struct k_mem_block_id *id);
@@ -3999,6 +4090,7 @@
* @param size Amount of memory requested (in bytes).
*
* @return Address of the allocated memory if successful; otherwise NULL.
+ * @req K-HEAP-001
*/
extern void *k_malloc(size_t size);
@@ -4014,6 +4106,7 @@
* @param ptr Pointer to previously allocated memory.
*
* @return N/A
+ * @req K-HEAP-001
*/
extern void k_free(void *ptr);
@@ -4027,6 +4120,7 @@
* @param size Size of each array element (in bytes).
*
* @return Address of the allocated memory if successful; otherwise NULL.
+ * @req K-HEAP-001
*/
extern void *k_calloc(size_t nmemb, size_t size);
@@ -4214,6 +4308,7 @@
* @param obj Kernel object or poll signal.
*
* @return N/A
+ * @req K-POLL-001
*/
extern void k_poll_event_init(struct k_poll_event *event, u32_t type,
@@ -4256,6 +4351,7 @@
* @retval -EINTR Poller thread has been interrupted.
* @retval -ENOMEM Thread resource pool insufficient memory (user mode only)
* @retval -EINVAL Bad parameters (user mode only)
+ * @req K-POLL-001
*/
__syscall int k_poll(struct k_poll_event *events, int num_events,
@@ -4269,6 +4365,7 @@
* @param signal A poll signal.
*
* @return N/A
+ * @req K-POLL-001
*/
__syscall void k_poll_signal_init(struct k_poll_signal *signal);
@@ -4277,6 +4374,7 @@
* @brief Reset a poll signal object's state to unsignaled.
*
* @param signal A poll signal object
+ * @req K-POLL-001
*/
__syscall void k_poll_signal_reset(struct k_poll_signal *signal);
@@ -4294,6 +4392,7 @@
* @param result An integer destination buffer which will be written with the
* result value if the object was signaled, or an undefined
* value if it was not.
+ * @req K-POLL-001
*/
__syscall void k_poll_signal_check(struct k_poll_signal *signal,
unsigned int *signaled, int *result);
@@ -4316,6 +4415,7 @@
*
* @retval 0 The signal was delivered successfully.
* @retval -EAGAIN The polling thread's timeout is in the process of expiring.
+ * @req K-POLL-001
*/
__syscall int k_poll_signal(struct k_poll_signal *signal, int result);
@@ -4338,6 +4438,7 @@
* the only thread would be responsible for this if needed.
*
* @return N/A
+ * @req K-MISC-001
*/
extern void k_cpu_idle(void);
@@ -4350,6 +4451,7 @@
* @param key Interrupt locking key obtained from irq_lock().
*
* @return N/A
+ * @req K-MISC-002
*/
extern void k_cpu_atomic_idle(unsigned int key);
@@ -4389,6 +4491,7 @@
*
* If this is called from ISR context, the default system fatal error handler
* will treat it as an unrecoverable system error, just like k_panic().
+ * @req K-MISC-003
*/
#define k_oops() _k_except_reason(_NANO_ERR_KERNEL_OOPS)
@@ -4399,6 +4502,7 @@
* unrecoverable runtime condition and needs to terminate. What this ultimately
* means is determined by the _fatal_error_handler() implementation, which
* will be called will reason code _NANO_ERR_KERNEL_PANIC.
+ * @req K-MISC-004
*/
#define k_panic() _k_except_reason(_NANO_ERR_KERNEL_PANIC)
@@ -4439,6 +4543,7 @@
* elsewhere into scope.
*
* @param sym Thread stack symbol name
+ * @req K-MISC-005
*/
#define K_THREAD_STACK_EXTERN(sym) extern k_thread_stack_t sym[]
@@ -4473,6 +4578,7 @@
*
* @param sym Thread stack symbol name
* @param size Size of the stack memory region
+ * @req K-TSTACK-001
*/
#define K_THREAD_STACK_DEFINE(sym, size) \
struct _k_thread_stack_element __noinit __aligned(STACK_ALIGN) sym[size]
@@ -4489,8 +4595,8 @@
* @param sym Thread stack symbol name
* @param nmemb Number of stacks to declare
* @param size Size of the stack memory region
+ * @req K-TSTACK-001
*/
-
#define K_THREAD_STACK_ARRAY_DEFINE(sym, nmemb, size) \
struct _k_thread_stack_element __noinit \
__aligned(STACK_ALIGN) sym[nmemb][size]
@@ -4506,6 +4612,7 @@
*
* @param sym Thread stack symbol name
* @param size Size of the stack memory region
+ * @req K-TSTACK-001
*/
#define K_THREAD_STACK_MEMBER(sym, size) \
struct _k_thread_stack_element __aligned(STACK_ALIGN) sym[size]
@@ -4526,6 +4633,7 @@
*
* @param sym Stack memory symbol
* @return Size of the stack
+ * @req K-TSTACK-001
*/
#define K_THREAD_STACK_SIZEOF(sym) sizeof(sym)
@@ -4539,6 +4647,7 @@
*
* @param sym Declared stack symbol name
* @return The buffer itself, a char *
+ * @req K-TSTACK-001
*/
static inline char *K_THREAD_STACK_BUFFER(k_thread_stack_t *sym)
{
@@ -4553,8 +4662,10 @@
* @{
*/
-/** @def MEM_PARTITION_ENTRY
- * @brief Used to declare a memory partition entry
+/**
+ * @def MEM_PARTITION_ENTRY
+ * @brief Used to declare a memory partition entry
+ * @req K-MP-001
*/
#define MEM_PARTITION_ENTRY(_start, _size, _attr) \
{\
@@ -4563,8 +4674,10 @@
.attr = _attr, \
}
-/** @def K_MEM_PARTITION_DEFINE
- * @brief Used to declare a memory partition
+/**
+ * @def K_MEM_PARTITION_DEFINE
+ * @brief Used to declare a memory partition
+ * @req K-MP-001
*/
#ifdef _ARCH_MEM_PARTITION_ALIGN_CHECK
#define K_MEM_PARTITION_DEFINE(name, start, size, attr) \
@@ -4613,8 +4726,8 @@
* @param num_parts The number of array items of "parts" parameter.
* @param parts An array of pointers to the memory partitions. Can be NULL
* if num_parts is zero.
+ * @req K-MD-001
*/
-
extern void k_mem_domain_init(struct k_mem_domain *domain, u8_t num_parts,
struct k_mem_partition *parts[]);
/**
@@ -4623,8 +4736,8 @@
* Destroy a memory domain.
*
* @param domain The memory domain to be destroyed.
+ * @req K-MD-001
*/
-
extern void k_mem_domain_destroy(struct k_mem_domain *domain);
/**
@@ -4634,8 +4747,8 @@
*
* @param domain The memory domain to be added a memory partition.
* @param part The memory partition to be added
+ * @req K-MD-001
*/
-
extern void k_mem_domain_add_partition(struct k_mem_domain *domain,
struct k_mem_partition *part);
@@ -4646,8 +4759,8 @@
*
* @param domain The memory domain to be removed a memory partition.
* @param part The memory partition to be removed
+ * @req K-MD-001
*/
-
extern void k_mem_domain_remove_partition(struct k_mem_domain *domain,
struct k_mem_partition *part);
@@ -4658,8 +4771,9 @@
*
* @param domain The memory domain that the thread is going to be added into.
* @param thread ID of thread going to be added into the memory domain.
+ *
+ * @req K-MD-001
*/
-
extern void k_mem_domain_add_thread(struct k_mem_domain *domain,
k_tid_t thread);
@@ -4669,8 +4783,8 @@
* Remove a thread from its memory domain.
*
* @param thread ID of thread going to be removed from its memory domain.
+ * @req K-MD-001
*/
-
extern void k_mem_domain_remove_thread(k_tid_t thread);
/** @} */
@@ -4680,6 +4794,8 @@
*
* @param c String of characters to print
* @param n The length of the string
+ *
+ * @req K-MISC-006
*/
__syscall void k_str_out(char *c, size_t n);