• EINTR、ERESTARTSYS和SIGINT


    1. 驱动使用down_interruptible,并在该函数返回非零值时返回-EINTR;应用程序不处理signal,使用CTRL-C退出应用程序:

        驱动从down_interruptible返回,应用程序Terminate。

    2. 驱动使用down_interruptible,并在该函数返回非零值时返回-ERESTARTSYS;应用程序不处理signal,使用CTRL-C退出应用程序:

        驱动从down_interruptible返回,应用程序Terminate。

    3. 驱动使用down_interruptible,并在该函数返回非零值时返回-EINTR;应用程序处理signal,使用CTRL-C:

        驱动从down_interruptible返回。应用程序执行完signal处理函数后,所进行的系统调用返回负值,errno设置为EINTR。

    4. 驱动使用down_interruptible,并在该函数返回非零值时返回-RESTARTSYS;应用程序处理signal,使用CTRL-C:

        驱动从down_interruptible返回,结束当前系统调用,然后自动重新进入同一个系统调用。应用程序执行signal处理函数,并继续阻塞在系统调用中。应用程序侧看不到系统调用的重启过程。

    5. 尽管man没有说ioctl会导致errno设置为EINTR,但实际上会的:这个取决于你的driver。

    6. man 7 signal查看系统支持的signal和默认处理方式。

  • 相关阅读:
    74HC165并转串级联芯片学习记录
    道砟电阻 钢轨阻抗 列车分路电阻
    电压的有效值、平均值与峰值
    铁路信号继电器
    C语言语法记录
    程序编译过程中错误记录
    min-max容斥
    矩阵树定理
    题解 SP1812 【LCS2
    杜教筛
  • 原文地址:https://www.cnblogs.com/byeyear/p/5560107.html
Copyright © 2020-2023  润新知