epoch: allow for conditionally asserting that the epoch context fields
are unused by zeroing on INVARIANTS builds
This commit is contained in:
parent
3ae6b51919
commit
246a619924
@ -670,7 +670,7 @@ div_pcblist(SYSCTL_HANDLER_ARGS)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
|
||||
inp_list = il->il_inp_list;
|
||||
|
||||
INP_INFO_RLOCK(&V_divcbinfo);
|
||||
|
@ -1056,7 +1056,7 @@ rip_pcblist(SYSCTL_HANDLER_ARGS)
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
|
||||
inp_list = il->il_inp_list;
|
||||
|
||||
INP_INFO_RLOCK(&V_ripcbinfo);
|
||||
|
@ -2151,7 +2151,7 @@ tcp_pcblist(SYSCTL_HANDLER_ARGS)
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
|
||||
inp_list = il->il_inp_list;
|
||||
|
||||
INP_INFO_WLOCK(&V_tcbinfo);
|
||||
|
@ -874,7 +874,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)
|
||||
error = SYSCTL_OUT(req, &xig, sizeof xig);
|
||||
if (error)
|
||||
return (error);
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
|
||||
il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
|
||||
inp_list = il->il_inp_list;
|
||||
|
||||
INP_INFO_RLOCK(&V_udbinfo);
|
||||
|
@ -64,6 +64,14 @@ int in_epoch(void);
|
||||
DPCPU_DECLARE(int, epoch_cb_count);
|
||||
DPCPU_DECLARE(struct grouptask, epoch_cb_task);
|
||||
|
||||
#ifdef INVARIANTS
|
||||
#define M_EPOCH_CALL_NOWAIT (M_NOWAIT|M_ZERO)
|
||||
#define M_EPOCH_CALL_WAITOK (M_WAITOK|M_ZERO)
|
||||
#else
|
||||
#define M_EPOCH_CALL_NOWAIT M_NOWAIT
|
||||
#define M_EPOCH_CALL_WAITOK M_WAITOK
|
||||
#endif
|
||||
|
||||
static __inline void
|
||||
epoch_enter_preempt(epoch_t epoch)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user