内核空间调用用户空间的应用程序,通过kernel_execve()实现。
其实现比较简单:
arch/arm/kernel/sys_arm.c
在init/main.c中最后会通过kernel_execve()来调用用户空间的init进程(如/sbin/init, /etc/init, /bin/init等)。
在kernel/kmod.c中的___call_usermodehelper()函数,会通过kernel_execve()来调用用户空间的程序。