Linux kernel Linux设备驱动程序3Ed文件IO&;如何使用解释性UML图影响调度

Linux kernel Linux设备驱动程序3Ed文件IO&;如何使用解释性UML图影响调度,linux-kernel,uml,linux-device-driver,Linux Kernel,Uml,Linux Device Driver,我使用UMLet绘制了一些UML图,描述了Corbet、Rubini、Kroah-Hartman编写的Linux设备驱动程序3Ed(LDD3)的每一章中的各种实体关系。最新版本的图表可在此处找到: 我想请求帮助理解一个调度问题,该问题由上述链接的非阻塞文件IO序列图和P156-158上的LDD3中的文档支持,特别是来自scull_getwritespace()的这段代码片段(也请参见P156,但此代码已更新为使用互斥体而不是信号量): /*等待写入空间;调用者必须持有设备信号量。在…上 *错

我使用UMLet绘制了一些UML图,描述了Corbet、Rubini、Kroah-Hartman编写的Linux设备驱动程序3Ed(LDD3)的每一章中的各种实体关系。最新版本的图表可在此处找到:

我想请求帮助理解一个调度问题,该问题由上述链接的非阻塞文件IO序列图和P156-158上的LDD3中的文档支持,特别是来自scull_getwritespace()的这段代码片段(也请参见P156,但此代码已更新为使用互斥体而不是信号量):

/*等待写入空间;调用者必须持有设备信号量。在…上
*错误信号量将在返回前释放*/
静态int-scull\u getwritespace(结构scull\u管道*dev,结构文件*filp)
{
while(spacefree(dev)==0){/*full*/
定义等待(WAIT);
互斥锁解锁(&dev->mutex);
if(filp->f_标志和O_非块)
返回-伊根;
PDEBUG(“\%s\”写入:进入睡眠\n”,当前->通信);
准备等待(&dev->outq,&wait,任务可中断);
if(无空间(dev)==0)
附表();
完成等待(&dev->outq,&wait);
if(信号_待定(当前))
return-ERESTARTSYS;/*信号:告诉fs层处理它*/
if(互斥锁可中断(&dev->mutex))
返回-ERESTARTSYS;
}
返回0;

}
不确定您是否有机会进入内核映射

您的努力是出于好意,但并不适合StackOverflow。看见特别是,它实际上并不是一个关于编程的问题,而是一个文档审查问题。这个问题被修改为包含一个更详细、更具体的编程问题。