[英]Where's umount system call?
在util-linux-2.17.2/mount/umount.c
文件的第246行中 ,其寫為res = umount (node);
。
但是umount
函數位於哪里? 我已經搜索了很多,但是沒有找到。
umount
函數是libc系統庫的一部分。 您可以使用objdump -T /lib/libc.so.6 | grep umount
查找更多內容objdump -T /lib/libc.so.6 | grep umount
objdump -T /lib/libc.so.6 | grep umount
。 輸出列之一中的.text
條目將指示該函數(及其同級umount2
)已在該庫中定義為可執行代碼的符號(與全局變量相對)。
通常通過一小段匯編代碼來實現該功能以執行內核syscall。 與大多數syscall相反,glibc並不只是將此syscall包括在其linux syscall的主列表中 。 相反,它為此有一些專用的匯編代碼 。 其含義隱藏在宏擴展的許多層之后,而我現在無法獲得預處理程序來發出最終的匯編代碼。
umount是對libc中相同名稱的庫函數的調用。 該函數依次調用umount系統調用。 通過了解系統調用的工作原理,可以找到庫函數如何調用內核以執行特定的函數。 此鏈接可能會幫助您進行系統調用的工作方式?
如果您想知道系統調用umount的位置,請下載最新的內核。 轉到文件fs / namespace.c。 在那里你會發現
SYSCALL_DEFINE2(umount,char __user *,name,int,flags)
和
SYSCALL_DEFINE1(oldumount,char __user *,名稱)
定義了umount和oldumount函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.