写一个glibc api的系统调用【JAVA教程】

!
也想出现在这里? 联系我们
信息

写一个glibc api的系统调用,第1张

概述写一个glibc api的系统调用

可能重复:

需要glibc源的帮助

我明白如何在linux内核中实现我们自己的系统调用。 我知道我们可以在ac程序中用syscall()或_asm()来调用它。

但我想了解如何写这个新的系统调用glibc API?

open()和read() glibc函数如何在内核中调用映射到系统调用?

如何捕获读写系统调用?

linux:通过ptrace()执行系统调用

windows相当于linux的readahead系统调用?

Fortran OPEN调用在NFSv3与NFSv4上有所不同

挂钩ntdll.dll调用的问题

char message[ ] = \”Hello!n\”; int main( voID ) { write( 1,message,7 ); exit( 0 ); }

当我将上面的程序转换成汇编时,它正在给出

main: leal 4(%esp),%ecx andl $-16,%esp pushl -4(%ecx) pushl %ebp movl %esp,%ebp pushl %ecx subl $20,%esp movl $7,8(%esp) movl $message,4(%esp) movl $1,(%esp) call write movl $0,(%esp) call exit .size main,.-main .IDent \”GCC: (Debian 4.3.2-1.1) 4.3.2\” .section .note.GNU-stack,\”\”,@progbits

3,在“通话写作”中,我认为写作是glibc电话吗? 那之后会发生什么? 它如何将glibc调用映射到系统调用?

linux系统调用和INT 80软件中断之间的巨大差异

在Unix中创build“系统调用”

挂钩linux上用户空间的sycalls

测量系统调用的速度

在不修改内核的情况下拦截系统调用的最小开销方式

看到这样的答案,并回答类似的问题。 还请阅读关于系统调用 , linux内核 , linux系统调用的概述以及程序集的指导

glibc的write函数不是真正的系统调用。 这是一个包装(通过例如sysenter机器指令,可能与VDSO ,并设置errno sycall)。 您可以使用strace来了解某些程序所完成的系统调用。

例如, MUSL libc具有write.c write实现。 对于GNU libc,看看它的write.c 。

总结

以上是内存溢出为你收集整理的写一个glibc api的系统调用全部内容,希望文章能够帮你解决写一个glibc api的系统调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞79 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容