On Wed, Apr 28, 2021 at 01:44:42AM +0200, Alexandr Nedvedicky wrote:
> Hello,
>
> with moving towards NET_RLOCK...() shall we add an explicit
> assert to state caller owns netlock exclusively? I propose
> to introduce NET_ASSERT_WLOCKED()
>
> NET_ASSERT_WLOCKED()
I had exacly the same diff. OK bluhm@
> --------8<---------------8<---------------8<------------------8<--------
> diff --git a/sys/sys/systm.h b/sys/sys/systm.h
> index a26d7f98f21..2dc9d3274fa 100644
> --- a/sys/sys/systm.h
> +++ b/sys/sys/systm.h
> @@ -361,9 +361,17 @@ do {
> \
> splassert_fail(RW_READ, _s, __func__); \
> } while (0)
>
> +#define NET_ASSERT_WLOCKED()
> \
> +do { \
> + int _s = rw_status(&netlock); \
> + if ((splassert_ctl > 0) && (_s != RW_WRITE)) \
> + splassert_fail(RW_WRITE, _s, __func__); \
> +} while (0)
> +
> #else /* DIAGNOSTIC */
> #define NET_ASSERT_UNLOCKED() do {} while (0)
> #define NET_ASSERT_LOCKED() do {} while (0)
> +#define NET_ASSERT_WLOCKED() do {} while (0)
> #endif /* !DIAGNOSTIC */
>
> __returns_twice int setjmp(label_t *);