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:
Mark Johnston 2018-05-21 16:03:51 +00:00
parent d01c1c8bfe
commit 13679ebac9

View File

@ -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();
} }