binfmt: add enter_critical_section

adding enter_critical_section to ensure non preemption in smp
Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
hujun5 2023-08-04 11:33:29 +08:00 committed by Xiang Xiao
parent 6eabacf304
commit b185f8d889
1 changed files with 4 additions and 0 deletions

View File

@ -77,6 +77,7 @@ int exec_spawn(FAR const char *filename, FAR char * const *argv,
FAR const posix_spawnattr_t *attr)
{
FAR struct binary_s *bin;
irqstate_t flags;
int pid;
int ret;
@ -126,6 +127,7 @@ int exec_spawn(FAR const char *filename, FAR char * const *argv,
* handler.
*/
flags = enter_critical_section();
sched_lock();
/* Then start the module */
@ -160,10 +162,12 @@ int exec_spawn(FAR const char *filename, FAR char * const *argv,
#endif
sched_unlock();
leave_critical_section(flags);
return pid;
errout_with_lock:
sched_unlock();
leave_critical_section(flags);
unload_module(bin);
errout_with_bin:
kmm_free(bin);