asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
return ret;
}看看fget_light是怎麼根據fd得到file的
struct file *fget_light(unsigned int fd, int *fput_needed)
else
rcu_read_unlock();
}return file;
fput_light的流程如下,具體見源**:
fput_light->fput(當所有釋放完時還要呼叫__fput)
接著看 vfs_read:
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
inc_syscr(current);
}return ret;
}跟著就是vfs設定的read函式了,對於ext2來說是
const struct file_operations ext2_file_operations = ;
所以是do_sync_read:
ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
;struct kiocb kiocb;
ssize_t ret;
//初始化kiocb
init_sync_kiocb(&kiocb, filp);
kiocb.ki_pos = *ppos;
kiocb.ki_left = len;
for (;;)
if (-eiocbqueued == ret)
ret = wait_on_sync_kiocb(&kiocb);
*ppos = kiocb.ki_pos;
return ret;
}
核心流驅動 第一章 核心流縱覽
第一章 核心流縱覽 核心流kernel streaming ks 驅動模型支援多 裝置,例如音效卡和電視調諧器卡。本章描述了核心流的一般的概念。1.1 核心流概念概要 多 裝置可以支援多種多樣的技術。為了更好地支援這些裝置的更大的範圍,微軟引入了核心流驅動模型。支援核心流模型的驅動可以向作業系統報告...
Linux核心 了解Linux核心搶占
目錄 無強制搶占 可搶占核心 自願核心搶占 完全實時搶占 在配置linux核心時,我們可以設定一些影響系統行為的引數。您可以使用不同的優先順序,排程類和搶占模型。了解並選擇正確的引數非常重要。在這篇文章中,我將介紹不同的搶占模型,以及每種模型如何影響使用者和核心行為 如果配置核心 使用make me...
Linux 核心 vs Windows 核心
windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們就來看看,linux 核...