We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 66fd87b commit 94cf990Copy full SHA for 94cf990
syscall.md
@@ -183,6 +183,10 @@ RawSyscall 只是为了在执行那些一定不会阻塞的系统调用时,能
183
184
## vdso
185
186
+vdso 可以认为是一种特殊的调用,在使用时,没有本文开头的用户态到内核态的切换,引用一段参考资料:
187
+
188
+> 用来执行特定的系统调用,减少系统调用的开销。某些系统调用并不会向内核提交参数,而仅仅只是从内核里请求读取某个数据,例如gettimeofday(),内核在处理这部分系统调用时可以把系统当前时间写在一个固定的位置(由内核在每个时间中断里去完成这个更新动作),mmap映射到用户空间。这样会更快速,避免了传统系统调用模式INT 0x80/SYSCALL造成的内核空间和用户空间的上下文切换。
189
190
```go
191
// func gettimeofday(tv *Timeval) (err uintptr)
192
TEXT ·gettimeofday(SB),NOSPLIT,$0-16
@@ -679,3 +683,5 @@ func entersyscall_gcwait() {
679
683
2. the linux programming interface
680
684
681
685
3. https://mzh.io/golang-arm64-vdso
686
687
+4. https://blog.csdn.net/luozhaotian/article/details/79609077
0 commit comments