Re: [問題] 請問關於System Call的問題
※ 引述《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
01/13 12:50, 1F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章