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