Re: [問題] 請問關於System Call的問題

看板LinuxDev作者 (把我id還我阿......)時間18年前 (2007/01/13 03:26), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《CriLit (沒暱稱)》之銘言: : 標題: [問題] 請問關於System Call的問題 : 時間: Fri Jan 12 11:09:59 2007 : : 各位版上的前輩好, : 小弟我有以下的問題想請問各位前輩, : 假設我已經將System Call編成模組, : 並掛載起來, : 在編譯User Program的時候, : 會出現以下的問題, : : #include <linux/unistd.h> : #include <errno.h> : extern int errno; : #define __NR_mysyscall 253 : static inline _syscall1(int, mysyscall, int, n); : int main() : { : mysyscall(0); : return 0; : } : : 在_syscall1那一行出現編譯時產生錯誤, : error expected decalaration specifiers or '...' before 'mysyscall' : error expected decalaration specifiers or '...' before 'n' : : 請問我還有哪裡需要注意的而沒注意?? : : -- : Who am I? : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 220.132.182.103 : 推 elpam:這是作業嗎 orz ... 看一下你的 , , 太多了吧 01/12 12:10 : → roylee17:改成 _syscall1(int, mysyscall, int, n) 試試 01/12 17:07 : 推 CriLit:這不是作業, 這是我自己練習的而已... 01/12 21:58 : → CriLit:您說的是逗號嗎? _syscallN的參數本來就是這樣阿.. 01/12 21:59 : → CriLit:這是巨集@@.... 01/12 21:59 : → CriLit:roylee:您說的方法我之前有試過, 不過也是相同的問題- - 01/12 21:59 嗯嗯,我試了也一樣... asm/unistd.h 裡的 _syscallN macro 現在已經被 #ifdef __KERNEL__ 包住了 所以一般的 user program 是看不到的 用 syscall 試試吧 #include <linux/unistd.h> - #include <errno.h> - extern int errno; - #define __NR_mysyscall 253 // 如果有寫在 unistd.h 就不用了 - static inline _syscall1(int, mysyscall, int, n); + #include <sys/syscall.h> + int mysyscall( int n){ + return syscall( __NR_mysyscall, n); + } int main() { mysyscall(0); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.145.38 ※ 編輯: roylee17 來自: 59.104.145.38 (01/13 03:34)

01/13 12:50, , 1F
感謝:) roylee17
01/13 12:50, 1F
文章代碼(AID): #15f-3Go9 (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #15f-3Go9 (LinuxDev)