[問題] 如何在 kernel 使用 system call table
如題,最近需要將 system call 拆成兩部分做(user space 紀錄 system call number
和參數,kernel 根據記錄的資料執行),目前的做法是在 kernel 中取得 system call t
able 的地址,然後根據 user space 提供的 system call number 來呼叫 table 中的 f
unction。
以上方法的確可以呼叫到指定的系統呼叫,我的問題是,假如我要呼叫 getpid(void),
從 kernel 只能知道這是 39 號系統呼叫並執行對應的 function,的確會回傳一個數字
,但明顯不是 user program 的。(我觀察實作,似乎需要 current 這個變數,但我在呼
叫 system call table 上的函數要怎麼告知? 或者是準備呼叫前切換 task 成原本的 us
er task ,畢竟 getpid 不用參數)
我看到大部分的 system call flow 從 user->kerenl 做的事就只有存 system call num
ber 和 parameter 而已,然後就直接 call table 上對應的 function 了。這之間是不
是少了一些神麼? 我的 pt_reg 上除了存參數還要存其他東西嗎?
感謝各位大大回覆~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.114.251 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1611555609.A.13B.html
※ 編輯: eecheng87 (218.164.114.251 臺灣), 01/25/2021 16:21:24
→
01/26 18:35,
3年前
, 1F
01/26 18:35, 1F
→
01/26 18:36,
3年前
, 2F
01/26 18:36, 2F
推
02/02 00:33, , 3F
02/02 00:33, 3F
推
02/02 00:37, , 4F
02/02 00:37, 4F
→
02/02 00:37, , 5F
02/02 00:37, 5F
→
02/02 00:39, , 6F
02/02 00:39, 6F
→
02/02 00:39, , 7F
02/02 00:39, 7F
推
02/02 00:50, , 8F
02/02 00:50, 8F
→
02/02 00:51, , 9F
02/02 00:51, 9F
→
02/02 22:20, , 10F
02/02 22:20, 10F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章