mirror of https://github.com/ARMmbed/mbed-os.git
RTX5: Enable priority inheritance and robust mode
Add the attribute flash to enable priority inheritance and robust mode. The robust flag allows mutexes held by terminated threads to be properly released.pull/4389/head
parent
a84142fc4e
commit
96bd943ea2
|
@ -13,7 +13,7 @@ static uint8_t sys_irq_disable_counter;
|
|||
static mbed_rtos_storage_mutex_t critical_mutex;
|
||||
static const osMutexAttr_t critical_mutex_attr = {
|
||||
.name = "nanostack_critical_mutex",
|
||||
.attr_bits = osMutexRecursive,
|
||||
.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust,
|
||||
.cb_mem = &critical_mutex,
|
||||
.cb_size = sizeof critical_mutex,
|
||||
};
|
||||
|
|
|
@ -30,7 +30,7 @@ static osThreadId_t event_thread_id;
|
|||
static mbed_rtos_storage_mutex_t event_mutex;
|
||||
static const osMutexAttr_t event_mutex_attr = {
|
||||
.name = "nanostack_event_mutex",
|
||||
.attr_bits = osMutexRecursive,
|
||||
.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust,
|
||||
.cb_mem = &event_mutex,
|
||||
.cb_size = sizeof event_mutex,
|
||||
};
|
||||
|
|
|
@ -44,7 +44,7 @@ void Mutex::constructor(const char *name)
|
|||
_attr.name = name ? name : "aplication_unnamed_mutex";
|
||||
_attr.cb_mem = &_obj_mem;
|
||||
_attr.cb_size = sizeof(_obj_mem);
|
||||
_attr.attr_bits = osMutexRecursive;
|
||||
_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
_id = osMutexNew(&_attr);
|
||||
MBED_ASSERT(_id);
|
||||
}
|
||||
|
|
|
@ -363,7 +363,7 @@ void $Sub$$__cpp_initialize__aeabi_(void)
|
|||
void pre_main()
|
||||
{
|
||||
singleton_mutex_attr.name = "singleton_mutex";
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive;
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
singleton_mutex_attr.cb_size = sizeof(singleton_mutex_obj);
|
||||
singleton_mutex_attr.cb_mem = &singleton_mutex_obj;
|
||||
singleton_mutex_id = osMutexNew(&singleton_mutex_attr);
|
||||
|
@ -383,7 +383,7 @@ extern int main(int argc, char* argv[]);
|
|||
void pre_main (void)
|
||||
{
|
||||
singleton_mutex_attr.name = "singleton_mutex";
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive;
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
singleton_mutex_attr.cb_size = sizeof(singleton_mutex_obj);
|
||||
singleton_mutex_attr.cb_mem = &singleton_mutex_obj;
|
||||
singleton_mutex_id = osMutexNew(&singleton_mutex_attr);
|
||||
|
@ -440,19 +440,19 @@ int __wrap_main(void) {
|
|||
void pre_main(void)
|
||||
{
|
||||
singleton_mutex_attr.name = "singleton_mutex";
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive;
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
singleton_mutex_attr.cb_size = sizeof(singleton_mutex_obj);
|
||||
singleton_mutex_attr.cb_mem = &singleton_mutex_obj;
|
||||
singleton_mutex_id = osMutexNew(&singleton_mutex_attr);
|
||||
|
||||
malloc_mutex_attr.name = "malloc_mutex";
|
||||
malloc_mutex_attr.attr_bits = osMutexRecursive;
|
||||
malloc_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
malloc_mutex_attr.cb_size = sizeof(malloc_mutex_obj);
|
||||
malloc_mutex_attr.cb_mem = &malloc_mutex_obj;
|
||||
malloc_mutex_id = osMutexNew(&malloc_mutex_attr);
|
||||
|
||||
env_mutex_attr.name = "env_mutex";
|
||||
env_mutex_attr.attr_bits = osMutexRecursive;
|
||||
env_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
env_mutex_attr.cb_size = sizeof(env_mutex_obj);
|
||||
env_mutex_attr.cb_mem = &env_mutex_obj;
|
||||
env_mutex_id = osMutexNew(&env_mutex_attr);
|
||||
|
@ -526,7 +526,7 @@ static uint8_t low_level_init_needed;
|
|||
void pre_main(void)
|
||||
{
|
||||
singleton_mutex_attr.name = "singleton_mutex";
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive;
|
||||
singleton_mutex_attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
singleton_mutex_attr.cb_size = sizeof(singleton_mutex_obj);
|
||||
singleton_mutex_attr.cb_mem = &singleton_mutex_obj;
|
||||
singleton_mutex_id = osMutexNew(&singleton_mutex_attr);
|
||||
|
@ -583,7 +583,7 @@ void __iar_system_Mtxinit(__iar_Rmtx *mutex) /* Initialize a system lock */
|
|||
attr.name = "system_mutex";
|
||||
attr.cb_mem = &std_mutex_sys[index];
|
||||
attr.cb_size = sizeof(std_mutex_sys[index]);
|
||||
attr.attr_bits = osMutexRecursive;
|
||||
attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
std_mutex_id_sys[index] = osMutexNew(&attr);
|
||||
*mutex = (__iar_Rmtx*)&std_mutex_id_sys[index];
|
||||
return;
|
||||
|
@ -619,7 +619,7 @@ void __iar_file_Mtxinit(__iar_Rmtx *mutex) /* Initialize a file lock */
|
|||
attr.name = "file_mutex";
|
||||
attr.cb_mem = &std_mutex_file[index];
|
||||
attr.cb_size = sizeof(std_mutex_file[index]);
|
||||
attr.attr_bits = osMutexRecursive;
|
||||
attr.attr_bits = osMutexRecursive | osMutexPrioInherit | osMutexRobust;
|
||||
std_mutex_id_file[index] = osMutexNew(&attr);
|
||||
*mutex = (__iar_Rmtx*)&std_mutex_id_file[index];
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue