Mistake on this page?
Report an issue in GitHub or email us
thread.h
1 /*
2  * Copyright (c) 2017-2020, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef __OS_WRAPPER_THREAD_H__
9 #define __OS_WRAPPER_THREAD_H__
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include "common.h"
16 
17 /* prototype for the thread entry function */
18 typedef void (*os_wrapper_thread_func) (void *argument);
19 
20 /**
21  * \brief Creates a new thread
22  *
23  * \param[in] name Name of the thread
24  * \param[in] stack_size Size of stack to be allocated for this thread. It can
25  * be \ref OS_WRAPPER_DEFAULT_STACK_SIZE to use the
26  * default value provided by the underlying RTOS
27  * \param[in] func Pointer to the function invoked by thread
28  * \param[in] arg Argument to pass to the function invoked by thread
29  * \param[in] priority Initial thread priority
30  *
31  * \return Returns the thread handle created, or NULL in case of error
32  */
33 void *os_wrapper_thread_new(const char *name, int32_t stack_size,
34  os_wrapper_thread_func func, void *arg,
35  uint32_t priority);
36 /**
37  * \brief Gets current thread handle
38  *
39  * \return Returns the thread handle, or NULL in case of error
40  */
41 void *os_wrapper_thread_get_handle(void);
42 
43 /**
44  * \brief Gets thread priority
45  *
46  * \param[in] handle Thread handle
47  * \param[out] priority The priority of the thread
48  *
49  * \return Returns \ref OS_WRAPPER_SUCCESS on success, or \ref OS_WRAPPER_ERROR
50  * in case of error
51  */
52 uint32_t os_wrapper_thread_get_priority(void *handle, uint32_t *priority);
53 
54 /**
55  * \brief Exits the calling thread
56  */
57 void os_wrapper_thread_exit(void);
58 
59 /**
60  * \brief Set the event flags for synchronizing a thread specified by handle.
61  *
62  * \note This function may not be allowed to be called from Interrupt Service
63  * Routines.
64  *
65  * \param[in] handle Thread handle to be notified
66  * \param[in] flags Event flags value
67  *
68  * \return Returns \ref OS_WRAPPER_SUCCESS on success, or \ref OS_WRAPPER_ERROR
69  * in case of error
70  */
71 uint32_t os_wrapper_thread_set_flag(void *handle, uint32_t flags);
72 
73 /**
74  * \brief Set the event flags in an interrupt handler for synchronizing a thread
75  * specified by handle.
76  *
77  * \param[in] handle Thread handle to be notified
78  * \param[in] flags Event flags value
79  *
80  * \return Returns \ref OS_WRAPPER_SUCCESS on success, or \ref OS_WRAPPER_ERROR
81  * in case of error
82  */
83 uint32_t os_wrapper_thread_set_flag_isr(void *handle, uint32_t flags);
84 
85 /**
86  * \brief Wait for the event flags for synchronizing threads.
87  *
88  * \note This function may not be allowed to be called from Interrupt Service
89  * Routines.
90  *
91  * \param[in] flags Specify the flags to wait for
92  * \param[in] timeout Timeout value
93  *
94  * \return Returns \ref OS_WRAPPER_SUCCESS on success, or \ref OS_WRAPPER_ERROR
95  * in case of error
96  */
97 uint32_t os_wrapper_thread_wait_flag(uint32_t flags, uint32_t timeout);
98 
99 #ifdef __cplusplus
100 }
101 #endif
102 
103 #endif /* __OS_WRAPPER_THREAD_H__ */
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.