每个线程都有一个自定义的32数据域,这个数据域自由线程能够自己访问。默认情况下是为0.
通过配置 CONFIG_THREAD_CUSTOM_DATA使能自定义数据,因为默认情况下线程是不支持自定义数据的。
通过调用接口 k_thread_custom_data_set() 和 k_thread_custom_data_get()接口写和读线程的自定义数据,只能访问自己的自定义数据而不能访问其他线程的自定义数据。
如下的代码实例:
int call_tracking_routine(void)
{
u32_t call_count;
if (k_is_in_isr()) {
/* ignore any call made by an ISR */
} else {
call_count = (u32_t)k_thread_custom_data_get();
call_count++;
k_thread_custom_data_set((void *)call_count);
}
/* do rest of routine's processing */
...
}