请牛人帮助 syscall

kaixin676 2007-04-17 06:14:57
syscall是这样定义的

#define printv(v) syscall(SYSCALL_NULL,v)

syscall_null=0;

在另一个文件里是这样掉用的

printv(1234);

请问知道的人printv(1234)得出来的是什么啊;

sysycall是什么意思??

小的 在 这里先谢谢了
...全文
392 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightnut 2007-04-17
  • 打赏
  • 举报
回复
这个深入到操作系统内核了, goole 一下 "syscall", 你可以得到很多信息:)
linuxhaha 2007-04-17
  • 打赏
  • 举报
回复
操作系统分内核区(ring0),用户区(ring3),所以这两个区是互相看不到的。也就是说,你
用户区传一个字符串到内核区,直接传是不可能的,需要copy_from_user()等等的函数来
从用户内到内核区的传送。所以,系统调用正是使用这些机制来做的,这就是系统调用与
一般函数不同之处。
linuxhaha 2007-04-17
  • 打赏
  • 举报
回复
syscall是系统调用,系统调用其实就是类似于DOS系统中断一样。
在Linux中,INT 0x80是系统中断,通过他可以调用不同的系统调用。
syscall是在内核中定义的一些对外部可使用的东西,使程序可以与内核的一些功能进行交互。
因为内核的功能,在用户空间是不可以使用的,所以需要系统调用这种东西来起来桥。
比如打开文件。这是在内核空间完成的,所以需要系统调用。用户空间是无法来完成的。
yutaooo 2007-04-17
  • 打赏
  • 举报
回复
我看你这个有点象在搞 windows驱动开发了. 不知道是不是我搞错了. 如果是, 看看DDK吧.
kaixin676 2007-04-17
  • 打赏
  • 举报
回复
还是要谢谢上面两位!
希望牛人帮解决SYSCALL是怎么用的
kaixin676 2007-04-17
  • 打赏
  • 举报
回复
你说的这些我都知道
上面写的是调用关系;
好像SYSCALL是计算机内部掉用的一个什么东东!!
好像还用到了VC6.0里的CL.EXE文件进行的编译,所以

我在找牛人帮解决
JoeryLew 2007-04-17
  • 打赏
  • 举报
回复
#define printv(v) syscall(SYSCALL_NULL,v)
宏定义,以后调用printv(v),就是调用syscall(SYSCALL_NULL,v)
例如printv(1234),就是执行syscall(SYSCALL_NULL,1234) ,但是不知道这个syscall(SYSCALL_NULL,v)到底是什么,这句是从哪里来的?
单纯的讲syscall的意思,是指一种调用协定
yutaooo 2007-04-17
  • 打赏
  • 举报
回复
syscall 要么是个函数, 要么是个宏, 效果要看它怎么实现了的.

你在哪里找到这个的?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧