Linux内核 - IRQ(proc文件系统VS系统调用)

时间:2015-04-28 18:48:42

标签: linux linux-kernel system-calls irq block-device

我正在研究一个Linux内核项目。在我的项目中,我修改了内核,以便从我的一个模块调用copy_process来响应对proc文件条目的写入。从本质上讲,事情看起来很糟糕:

int procfile_write(struct file *file, const char *buffer, unsigned long count,
           void *data)
{
    //...more code
    copy_process(...);
    //...more code
}

int init_module()
{
    /* create the /proc file */
    Our_Proc_File = create_proc_entry(PROCFS_NAME, 0644, NULL);
    // more code
    Our_Proc_File->write_proc = procfile_write;
    return 0;   /* everything is ok */
}

我的问题是当内核遇到该行时,内核会在copy_process内挂起:

write_lock_irq(&tasklist_lock);

现在,我知道这个函数一直在do_fork被调用。这发生在系统调用中。

我的问题:

  1. 我是否正确地认为这与写入proc文件条目与系统调用有关?
  2. IRQ与写入proc文件条目有什么关系?
  3. 写入proc文件条目实际上与系统调用不同吗?我的意思是它的处理方式,并在上下文中调用它?
  4. 谢谢!

    更新:在处理对proc文件的写入以从系统调用中调用时,我转换了调用代码的方式。没有改变。到达同一行时仍然挂起(即锁定tasklist_lock)。现在,我的问题是它挂在那里的原因?以及如何解决这个问题?

0 个答案:

没有答案