Tor子系统——时钟模块

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)来重新设置缓存的时间值,从而在短时间内多次获取时间时,不需要多次调用相应的系统操作,节省时间