Don't pass a section cookie to CK for non-preemptible epoch sections.
They're only useful when multiple threads may share an epoch record, and that can't happen with non-preemptible sections. Reviewed by: mmacy Differential Revision: https://reviews.freebsd.org/D15507
This commit is contained in:
parent
d01c1c8bfe
commit
13679ebac9
@ -298,18 +298,15 @@ void
|
|||||||
epoch_enter(epoch_t epoch)
|
epoch_enter(epoch_t epoch)
|
||||||
{
|
{
|
||||||
ck_epoch_record_t *record;
|
ck_epoch_record_t *record;
|
||||||
ck_epoch_section_t *section;
|
|
||||||
struct thread *td;
|
struct thread *td;
|
||||||
|
|
||||||
MPASS(cold || epoch != NULL);
|
MPASS(cold || epoch != NULL);
|
||||||
section = NULL;
|
|
||||||
td = curthread;
|
td = curthread;
|
||||||
critical_enter();
|
|
||||||
if (__predict_true(td->td_epochnest++ == 0))
|
|
||||||
section = (ck_epoch_section_t*)&td->td_epoch_section;
|
|
||||||
|
|
||||||
|
critical_enter();
|
||||||
|
td->td_epochnest++;
|
||||||
record = &epoch->e_pcpu[curcpu]->eps_record.er_record;
|
record = &epoch->e_pcpu[curcpu]->eps_record.er_record;
|
||||||
ck_epoch_begin(record, section);
|
ck_epoch_begin(record, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -339,16 +336,12 @@ void
|
|||||||
epoch_exit(epoch_t epoch)
|
epoch_exit(epoch_t epoch)
|
||||||
{
|
{
|
||||||
ck_epoch_record_t *record;
|
ck_epoch_record_t *record;
|
||||||
ck_epoch_section_t *section;
|
|
||||||
struct thread *td;
|
struct thread *td;
|
||||||
|
|
||||||
section = NULL;
|
|
||||||
td = curthread;
|
td = curthread;
|
||||||
MPASS(td->td_critnest);
|
td->td_epochnest--;
|
||||||
if (__predict_true(td->td_epochnest-- == 1))
|
|
||||||
section = (ck_epoch_section_t*)&td->td_epoch_section;
|
|
||||||
record = &epoch->e_pcpu[curcpu]->eps_record.er_record;
|
record = &epoch->e_pcpu[curcpu]->eps_record.er_record;
|
||||||
ck_epoch_end(record, section);
|
ck_epoch_end(record, NULL);
|
||||||
critical_exit();
|
critical_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user