Skip to content

Commit 94cf990

Browse files
committed
add intro for vdso
1 parent 66fd87b commit 94cf990

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

syscall.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,10 @@ RawSyscall 只是为了在执行那些一定不会阻塞的系统调用时,能
183183

184184
## vdso
185185

186+
vdso 可以认为是一种特殊的调用,在使用时,没有本文开头的用户态到内核态的切换,引用一段参考资料:
187+
188+
> 用来执行特定的系统调用,减少系统调用的开销。某些系统调用并不会向内核提交参数,而仅仅只是从内核里请求读取某个数据,例如gettimeofday(),内核在处理这部分系统调用时可以把系统当前时间写在一个固定的位置(由内核在每个时间中断里去完成这个更新动作),mmap映射到用户空间。这样会更快速,避免了传统系统调用模式INT 0x80/SYSCALL造成的内核空间和用户空间的上下文切换。
189+
186190
```go
187191
// func gettimeofday(tv *Timeval) (err uintptr)
188192
TEXT ·gettimeofday(SB),NOSPLIT,$0-16
@@ -679,3 +683,5 @@ func entersyscall_gcwait() {
679683
2. the linux programming interface
680684

681685
3. https://mzh.io/golang-arm64-vdso
686+
687+
4. https://blog.csdn.net/luozhaotian/article/details/79609077

0 commit comments

Comments
 (0)