簡體   English   中英

umount系統調用在哪里?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM