Split nhop_ref_object().
Now nhop_ref_object() unconditionally acquires a reference, and the new nhop_try_ref_object() uses refcount_acquire_if_not_zero() to conditionally acquire a reference. Since the former is cheaper, use it when we know that the initial counter value is non-zero. No functional change intended. Reviewed by: melifaro Differential Revision: https://reviews.freebsd.org/D25535
This commit is contained in:
parent
d3112319ac
commit
26dd427800
@ -598,8 +598,17 @@ destroy_nhop_epoch(epoch_context_t ctx)
|
||||
destroy_nhop(nh_priv);
|
||||
}
|
||||
|
||||
int
|
||||
void
|
||||
nhop_ref_object(struct nhop_object *nh)
|
||||
{
|
||||
u_int old;
|
||||
|
||||
old = refcount_acquire(&nh->nh_priv->nh_refcnt);
|
||||
KASSERT(old > 0, ("%s: nhop object %p has 0 refs", __func__, nh));
|
||||
}
|
||||
|
||||
int
|
||||
nhop_try_ref_object(struct nhop_object *nh)
|
||||
{
|
||||
|
||||
return (refcount_acquire_if_not_zero(&nh->nh_priv->nh_refcnt));
|
||||
@ -654,7 +663,7 @@ int
|
||||
nhop_ref_any(struct nhop_object *nh)
|
||||
{
|
||||
|
||||
return (nhop_ref_object(nh));
|
||||
return (nhop_try_ref_object(nh));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -51,7 +51,8 @@ struct rib_head;
|
||||
void nhops_init(void);
|
||||
int nhops_init_rib(struct rib_head *rh);
|
||||
void nhops_destroy_rib(struct rib_head *rh);
|
||||
int nhop_ref_object(struct nhop_object *nh);
|
||||
void nhop_ref_object(struct nhop_object *nh);
|
||||
int nhop_try_ref_object(struct nhop_object *nh);
|
||||
int nhop_ref_any(struct nhop_object *nh);
|
||||
void nhop_free_any(struct nhop_object *nh);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user