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:
parent
6eabacf304
commit
b185f8d889
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue