一、eBPF 虚拟机如何工作
区别概念
- 系统虚拟化(KVM)基于 x86 或 arm64 等通用指令集,这些指令集可以完成完整计算机的所有功能
- eBPF 只提供有限的指令集。这些指令集可用于完成一部分内核的功能,但却远不足以模拟完整的计算机。为了更高效地与内核进行交互,eBPF 指令还有意采用了 C 调用约定,其提供的辅助函数可以在 C 语言中直接调用,极大地方便了 eBPF 程序的开发。
1 | int pthread_cond_timedwait(pthread_cond_t *restrict cond, |
pthread_cond_timedwait
用于等待一个条件变量,等待条件变量的同时可以设置等待超时。其中 abstime
超时时间是一个绝对值,也就是距离 1970-1-1
的时间值,而不是一个时间段。比如说当前时间为:2023-05-28 17:06:00.100
,我想要通过这个函数设置最大超时为 3000ms,那么就需要设置 abstime 的时间为:2023-05-28 17:06:03.100
同时,建议大家使用单调时间,而非系统时间。因为系统时间可能存在跳变的问题。
如下举个例子:
1 | 1. binutils-2.33.1 |
1 | 目录结构 |
编译 binutils-2.33.1
从官方解释来看:
1 | --sysroot=dir |
他会对编译和链接过程中,查找头文件和链接库造成影响。
原本会从 /usr/include
目录中搜索头文件、从 /usr/lib
中搜索依赖库。当设置了 --sysroot=dir
后,则从 /dir/usr/include
搜索头文件、从 dir/usr/lib
中搜索依赖库。
1 | libnl 库 |
1 | 准备阶段 |
二、编译 perl
1 | curl -L -O http://www.cpan.org/src/5.0/perl-5.34.0.tar.gz |