Linux syscall

/*

* syscall

*/

Linux用户空间和内核空间之间,有 syscall 系统调用的中间层,是连接用户态和内核态的桥梁。这样即提高了内核的安全型,也便于移植,只需实现同一套接口即可。Linux系统,用户空间通过向内核空间发出 syscall ,产生软中断,从而让程序陷入内核态,执行相应的操作后返回。

例如 VDSO 中的调用:

#ifndef BUILD_VDSO32

notrace static long vdso_fallback_gettime(long clock, struct timespec *ts)

{

long ret;

asm ("syscall" : "=a" (ret), "=m" (*ts) :

"0" (__NR_clock_gettime), "D" (clock), "S" (ts) :

"memory", "rcx", "r11");

return ret;

}

#else

notrace static long vdso_fallback_gettime(long clock, struct timespec *ts)

{

long ret;

asm (

"mov %%ebx, %%edx \n"

"mov %clock, %%ebx \n"

"call __kernel_vsyscall \n"

"mov %%edx, %%ebx \n"

: "=a" (ret), "=m" (*ts)

: "0" (__NR_clock_gettime), clock "g" (clock), "c" (ts)

: "memory", "edx");

return ret;

}

#endif

相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩4 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言