Linux kernel 关闭或重新启动时的Linux用户空间调度

Linux kernel 关闭或重新启动时的Linux用户空间调度,linux-kernel,Linux Kernel,我正在检查linux内核源代码linux/kernel/reboot.c。 在重新启动调用时,调用上面定义的函数。 我的问题与重新启动系统有关。由于我们正在驱动程序中安装重新启动通知程序,因此我们希望确保在重新启动过程中不会调用我们的用户空间进程 如果调用重新启动,用户空间进程是否仍在运行 是否可以保证,如果调用了reboot notifier,用户空间进程仍然可以运行或调度 在SMP上是否也保证了这种行为,即如果调用重新启动,用户空间不会执行 这个电话能被抢先吗 如果驱动程序注册到重新启动通知

我正在检查linux内核源代码
linux/kernel/reboot.c
。 在重新启动调用时,调用上面定义的函数。 我的问题与重新启动系统有关。由于我们正在驱动程序中安装重新启动通知程序,因此我们希望确保在重新启动过程中不会调用我们的用户空间进程

  • 如果调用重新启动,用户空间进程是否仍在运行
  • 是否可以保证,如果调用了reboot notifier,用户空间进程仍然可以运行或调度
  • 在SMP上是否也保证了这种行为,即如果调用重新启动,用户空间不会执行
  • 这个电话能被抢先吗
  • 如果驱动程序注册到重新启动通知程序列表,它是否满足要求,用户空间应用程序不在此通知程序上执行被调用
  • 是否可以在驱动程序中的
    设备\u shutdown
    上添加一个钩子

  • kernel\u restart\u prepare
    作为
    reboot
    系统调用的一部分被调用,其描述如下:

    重新启动不同步:在调用此命令之前,请自己执行此操作

    因此,没有人保证用户空间进程将在那一刻完成,也不会阻止新的用户空间进程启动

    该函数在标准内核环境中运行,因此可以像往常一样对其进行抢占

    根据装置的关闭,它没有提供挂钩机制。它只为每个驱动程序调用
    shutdown
    方法

     68 void kernel_restart_prepare(char *cmd)
     69 {
     70         blocking_notifier_call_chain(&reboot_notifier_list, SYS_RESTART, cmd);
     71         system_state = SYSTEM_RESTART;
     72         usermodehelper_disable();
     73         device_shutdown();
     74 }