| 214 | } |
| 215 | |
| 216 | static inline void |
| 217 | epoch_trace_enter(struct thread *td, epoch_t epoch, epoch_tracker_t et, |
| 218 | const char *file, int line) |
| 219 | { |
| 220 | epoch_tracker_t iet; |
| 221 | |
| 222 | SLIST_FOREACH(iet, &td->td_epochs, et_tlink) |
| 223 | if (iet->et_epoch == epoch) |
| 224 | epoch_trace_report("Recursively entering epoch %s " |
| 225 | "at %s:%d, previously entered at %s:%d\n", |
| 226 | epoch->e_name, file, line, |
| 227 | iet->et_file, iet->et_line); |
| 228 | et->et_epoch = epoch; |
| 229 | et->et_file = file; |
| 230 | et->et_line = line; |
| 231 | SLIST_INSERT_HEAD(&td->td_epochs, et, et_tlink); |
| 232 | } |
| 233 | |
| 234 | static inline void |
| 235 | epoch_trace_exit(struct thread *td, epoch_t epoch, epoch_tracker_t et, |
no test coverage detected