Tor子系统——时钟模块
Tor报错模块位于src/lib/wallclock/
文件夹,用于替代原本的获取时间模块
关于墙上时钟(wall clock)和递增时间(monotonic time)的更多解释
子系统结构
const subsys_fns_t sys_wallclock = { .name = "wallclock", .supported = true, /* Approximate time is a diagnostic feature, we want it to init right after * low-level error handling. */ .level = -98, .initialize = subsys_wallclock_initialize, };
初始化子系统
在初始化后,会将当前时间赋值给cached_approx_time
模块逻辑
在TIME_IS_FAST
未被设置时,会使用cached_approx_time
来缓存时间值,在每次tor循环或者信号回调时,会使用void update_approx_time(time_t now)
来重新设置缓存的时间值,从而在短时间内多次获取时间时,不需要多次调用相应的系统操作,节省时间