void _Giant_Release( void ) { ISR_Level isr_level; _ISR_Disable_without_giant( isr_level ); _Assert( _Thread_Dispatch_disable_level != 0 ); _Giant_Do_release( _Per_CPU_Get() ); _ISR_Enable_without_giant( isr_level ); }
void _Giant_Release( void ) { ISR_Level isr_level; _ISR_Disable( isr_level ); _Assert( _Thread_Dispatch_disable_level != 0 ); _Giant_Do_release(); _ISR_Enable( isr_level ); }
uint32_t _Thread_Dispatch_decrement_disable_level( void ) { ISR_Level isr_level; uint32_t disable_level; Per_CPU_Control *self_cpu; _ISR_Disable( isr_level ); self_cpu = _Per_CPU_Get(); disable_level = self_cpu->thread_dispatch_disable_level; --disable_level; self_cpu->thread_dispatch_disable_level = disable_level; _Giant_Do_release(); _ISR_Enable( isr_level ); return disable_level; }
uint32_t _Thread_Dispatch_decrement_disable_level( void ) { ISR_Level isr_level; uint32_t disable_level; Per_CPU_Control *self_cpu; _ISR_Disable_without_giant( isr_level ); self_cpu = _Per_CPU_Get(); disable_level = self_cpu->thread_dispatch_disable_level; --disable_level; self_cpu->thread_dispatch_disable_level = disable_level; _Giant_Do_release( self_cpu ); _Assert( disable_level != 0 || _Giant.owner_cpu == NO_OWNER_CPU ); _ISR_Enable_without_giant( isr_level ); return disable_level; }