HomeFreeBSD

Merge td_epochnest with td_no_sleeping.

Description

Merge td_epochnest with td_no_sleeping.

Epoch itself doesn't rely on the counter and it is provided
merely for sleeping subsystems to check it.

  • In functions that sleep use THREAD_CAN_SLEEP() to assert correctness. With EPOCH_TRACE compiled print epoch info.
  • _sleep() was a wrong place to put the assertion for epoch, right place is sleepq_add(), as there ways to call the latter bypassing _sleep().
  • Do not increase td_no_sleeping in non-preemptible epochs. The critical section would trigger all possible safeguards, no sleeping counter is extraneous.

Reviewed by: kib

Details

Provenance
glebiusAuthored on
Parents
rS354147: Augment macros that manipulate td_no_sleeping with assertions to check
Branches
Unknown
Tags
Unknown