1.
定義系統呼叫號
,/usr/src/linux/include/a**-i386/unistd.h
#define _nr_sy**ycall 318 //
不能與前面已有的重複
#define _nr_syscalls 319//
修改系統中所用系統呼叫數目 2.
在系統呼叫向量表裡新增自定義的系統呼叫函式入口位置,
/usr/src/linux/arch/i386/kernel/syscall_table.s
,以前老版本是
entry.s
.long sys_mysyscall
3.新增系統呼叫定義在include/linux/syscalls.h
a**linkage long sys_add_trustdb(u8 __user * digest,u8 __user *name,int new);
特別注意使用使用者態的指標,需要新增__user
4.在需要的地方
新增系統呼叫實現函式
a**linkage int sys_mysyscall(int a)
編寫使用者態**測試
int main(void)
syscall
是核心提供為使用者程式的乙個函式,
如果不使用
syscall
函式,也可以使用巨集定義,但是在
2.6.20
以後的版本裡,沒有巨集定義,需要自己從其他版本裡複製過來新增。
系統呼叫的方式訪問檔案
1 建立檔案 int create const char filename mode t mode 建立檔案。filename為檔案路徑,mode為檔案許可權,如 s irusr 可讀 s irwxu 可讀 可寫 可執行。也可以用數字表示,如 0755。2 檔案描述 在linux中,所有開啟的檔案都...
Linux 新增系統呼叫的啟示
新的建立檔案描述符的 syscall 一般都支援額外的 flags 引數,可以直接指定 o nonblock 和 fd cloexec,例如 以上 6 個 syscalls,除了最後乙個是新功能,其餘的都是增強原有的呼叫,把數字尾號去掉就是原來的 syscall。o nonblock的功能是開啟 非...
Linux 新增系統呼叫的啟示
新的建立檔案描述符的 syscall 一般都支援額外的 flags 引數,可以直接指定 o nonblock 和 fd cloexec,例如 以上 6 個 syscalls,除了最後乙個是新功能,其餘的都是增強原有的呼叫,把數字尾號去掉就是原來的 syscall。o nonblock的功能是開啟 非...