linux核心sys read流程分析

2021-05-22 01:33:58 字數 1014 閱讀 4721

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 核...