Lines Matching refs:lle
111 #define LLE_LOCK_TRACE(t, lle) log(LOG_DEBUG, \
112 "%s:%d: LOCK(" #t "): lle=%p\n", \
113 __func__, __LINE__, (lle))
115 #define LLE_LOCK_TRACE(t, lle) do {} while (0)
118 #define LLE_WLOCK(lle) do { \
119 LLE_LOCK_TRACE(WL, (lle)); \
120 rw_enter(&(lle)->lle_lock, RW_WRITER); \
122 #define LLE_RLOCK(lle) do { \
123 LLE_LOCK_TRACE(RL, (lle)); \
124 rw_enter(&(lle)->lle_lock, RW_READER); \
126 #define LLE_WUNLOCK(lle) do { \
127 LLE_LOCK_TRACE(WU, (lle)); \
128 rw_exit(&(lle)->lle_lock); \
130 #define LLE_RUNLOCK(lle) do { \
131 LLE_LOCK_TRACE(RU, (lle)); \
132 rw_exit(&(lle)->lle_lock); \
134 #define LLE_DOWNGRADE(lle) rw_downgrade(&(lle)->lle_lock)
135 #define LLE_TRY_UPGRADE(lle) rw_tryupgrade(&(lle)->lle_lock)
137 #define LLE_LOCK_INIT(lle) rw_init_flags(&(lle)->lle_lock, "lle", RW_DUPOK)
139 #define LLE_LOCK_INIT(lle) rw_init(&(lle)->lle_lock)
141 #define LLE_LOCK_DESTROY(lle) rw_destroy(&(lle)->lle_lock)
142 #define LLE_WLOCK_ASSERT(lle) KASSERT(rw_write_held(&(lle)->lle_lock))
144 #define LLE_IS_VALID(lle) (((lle) != NULL) && ((lle) != (void *)-1))
147 #define LLE_REF_TRACE(t, lle, n) \
149 __func__, __LINE__, (lle), (n))
151 #define LLE_REF_TRACE(t, lle, n) do {} while (0)
154 #define LLE_ADDREF(lle) do { \
155 LLE_WLOCK_ASSERT(lle); \
156 LLE_REF_TRACE(ADD, (lle), (lle)->lle_refcnt); \
157 KASSERTMSG((lle)->lle_refcnt >= 0, \
158 "negative refcnt %d on lle %p", \
159 (lle)->lle_refcnt, (lle)); \
160 (lle)->lle_refcnt++; \
163 #define LLE_REMREF(lle) do { \
164 LLE_WLOCK_ASSERT(lle); \
165 LLE_REF_TRACE(REM, (lle), (lle)->lle_refcnt); \
166 KASSERTMSG((lle)->lle_refcnt > 0, \
167 "bogus refcnt %d on lle %p", \
168 (lle)->lle_refcnt, (lle)); \
169 (lle)->lle_refcnt--; \
170 if ((lle)->lle_refcnt == 0) \
171 LLE_REF_TRACE(ZERO, (lle), (lle)->lle_refcnt); \
174 #define LLE_FREE_LOCKED(lle) do { \
175 if ((lle)->lle_refcnt == 1) { \
176 if ((lle)->lle_ll_free != NULL) \
177 (lle)->lle_ll_free(lle); \
178 (lle)->lle_free(lle); \
180 LLE_REMREF(lle); \
181 LLE_WUNLOCK(lle); \
184 (lle) = NULL; \
187 #define LLE_FREE(lle) do { \
188 LLE_WLOCK(lle); \
189 LLE_FREE_LOCKED(lle); \
252 /* LLE request flags */
253 #define LLE_EXCLUSIVE 0x2000 /* return lle xlocked */
283 void lltable_link_entry(struct lltable *llt, struct llentry *lle);
284 void lltable_unlink_entry(struct lltable *llt, struct llentry *lle);
285 void lltable_free_entry(struct lltable *llt, struct llentry *lle);
286 void lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa);