- hw_lock_data_t interlock;
- volatile unsigned int
- read_count:16, /* No. of accepted readers */
- want_upgrade:1, /* Read-to-write upgrade waiting */
- want_write:1, /* Writer waiting or locked for write */
- waiting:1, /* Someone is sleeping on lock */
- can_sleep:1, /* Can attempts to lock go to sleep? */
- read_priority:1;/* New read takes piority over write */
- unsigned int lck_rw_tag;
+ volatile uint16_t lck_rw_shared_count; /* No. of accepted readers */
+ uint8_t lck_rw_interlock; /* Interlock byte */
+ volatile uint8_t
+ lck_rw_priv_excl:1, /* Writers prioritized if set */
+ lck_rw_want_upgrade:1, /* Read-to-write upgrade waiting */
+ lck_rw_want_write:1, /* Writer waiting or locked for write */
+ lck_r_waiting:1, /* Reader is sleeping on lock */
+ lck_w_waiting:1, /* Writer is sleeping on lock */
+ lck_rw_can_sleep:1, /* Can attempts to lock go to sleep? */
+ lck_rw_pad6:2; /* padding */
+
+ unsigned int lck_rw_tag; /* This can be obsoleted when stats
+ * are in
+ */
+ unsigned int lck_rw_pad8;