-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
definition of thread flags are uncoordindated between modules #20867
Comments
Hum, any idea how we could convey the information that a flag is used only if the respective module is actually selected? Otherwise at some point we will end up having most if not all bits already in the predefined mask and the mask won't be useful anymore. |
We could try something like (untested, but seems like it would work): enum _thread_flag_pos {
#ifdef MODULE_FOO
_THREAD_FLAG_FOO,
#define THREAD_FLAG_FOO (1 < _THREAD_FLAG_FOO)
#endif
#ifdef MODULE_BAR
_THREAD_FLAG_BAR,
#define THREAD_BAR_FOO (1 < _THREAD_FLAG_BAR)
#endif
THREAD_FLAG_NUMOF
}
static_assert(THREAD_FLAG_NUMOF < 8); |
Adding a link with some valuable comments about this issue from the RIOT chat: To summarize the comments from the link; flags don't have to be unique in all cases, but if they are re-used, it should be done so intentionally. |
Neat trick. And to get the predefined flags something like this?
|
Yes, I believe that will work. |
Then in my opinion that would be the way to go for #20868 and similar ones. |
Description
There is a macro
THREAD_FLAG_PREDEFINED_MASK
to capture thread flags in-use by RIOT to allow applications to avoid collisions when using flags. However, many flags are in-use inside of modules and are not captured in this macro. Worse, some flags even within RIOT are defined to the same value. All flag definitions should be moved to thread_flags.h and added to theTHREAD_FLAG_PREDEFINED_MASK
macro.Flags to add to
THREAD_FLAG_PREDEFINED_MASK
(found withgit grep THREAD_FLAG | grep "#define"
):THREAD_FLAG_KINETIS_I2C
(1u << 8)KW41ZRF_THREAD_FLAG_ISR
(1u << 8)LVGL_THREAD_FLAG
(1 << 7)THREAD_FLAG_LWIP_TX_DONE
(1U << 11)THREAD_FLAG_EVENT
(0x1) - Move event thread flag #20868USBUS_THREAD_FLAG_USBDEV
(0x02) /**< usbdev esr needs handling */USBUS_THREAD_FLAG_USBDEV_EP
(0x04) /**< One or more endpoints requiresPOSIX_SELECT_THREAD_FLAG
(1U << 3)CST816S_THREAD_FLAG
(1 << 8)THREAD_FLAG_TX_END
(1U << 4)Versions
The text was updated successfully, but these errors were encountered: