| 171 | fbclock_section_store(&shmp->realtime, data); |
| 172 | munmap(shmp, FBCLOCK_SHMDATA_V2_SIZE); |
| 173 | return FBCLOCK_E_NO_ERROR; |
| 174 | } |
| 175 | |
| 176 | int fbclock_clockdata_load_data( |
| 177 | fbclock_shmdata* shmp, |
| 178 | fbclock_clockdata* data) { |
| 179 | for (int i = 0; i < FBCLOCK_MAX_READ_TRIES; i++) { |
| 180 | memcpy(data, &shmp->data, FBCLOCK_CLOCKDATA_SIZE); |
| 181 | uint64_t crc = atomic_load(&shmp->crc); |
| 182 | uint64_t our_crc = fbclock_clockdata_crc(data); |
| 183 | if (our_crc == crc) { |
| 184 | fbclock_debug_print("reading clock data took %d tries\n", i + 1); |
| 185 | return FBCLOCK_E_NO_ERROR; |
| 186 | } |
| 187 | } |
| 188 | fbclock_debug_print( |
| 189 | "failed to read clock data after %d tries\n", FBCLOCK_MAX_READ_TRIES); |
| 190 | // TODO: Enable mismatch error. |
| 191 | // return FBCLOCK_E_CRC_MISMATCH; |
| 192 | return FBCLOCK_E_NO_ERROR; |
| 193 | } |
searching dependent graphs…