- /*
- * boot_id needs to be read once before being used concurrently
- * to deal with a Linux kernel race. A fix is proposed for
- * upstream, but the work-around is needed for older kernels.
- */
- fp = fopen("/proc/sys/kernel/random/boot_id", "r");
- if (!fp) {
- return -ENOENT;
- }
- len = fread(uuid, 1, CLOCK_UUID_LEN - 1, fp);
- if (len < CLOCK_UUID_LEN - 1) {
- ret = -EINVAL;
- goto end;
+ if (caa_likely(!ltc)) {
+ return trace_clock_read64_monotonic();
+ } else {
+ cmm_read_barrier_depends(); /* load ltc before content */
+ return ltc->read64();