diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c --- a/sys/kern/kern_umtx.c +++ b/sys/kern/kern_umtx.c @@ -170,8 +170,6 @@ static void umtx_shm_init(void); static void umtxq_sysinit(void *); static void umtxq_hash(struct umtx_key *key); -static struct umtx_pi *umtx_pi_alloc(int); -static void umtx_pi_free(struct umtx_pi *pi); static int do_unlock_pp(struct thread *td, struct umutex *m, uint32_t flags, bool rb); static void umtx_thread_cleanup(struct thread *td); @@ -435,7 +433,7 @@ wakeup_one(uc); } -static inline void +void umtxq_unbusy_unlocked(struct umtx_key *key) { @@ -1668,7 +1666,7 @@ return (error); } -static inline struct umtx_pi * +struct umtx_pi * umtx_pi_alloc(int flags) { struct umtx_pi *pi; @@ -1679,7 +1677,7 @@ return (pi); } -static inline void +void umtx_pi_free(struct umtx_pi *pi) { uma_zfree(umtx_pi_zone, pi); @@ -1888,7 +1886,7 @@ /* * Claim ownership of a PI mutex. */ -static int +int umtx_pi_claim(struct umtx_pi *pi, struct thread *owner) { struct umtx_q *uq; @@ -1946,7 +1944,7 @@ /* * Sleep on a PI mutex. */ -static int +int umtxq_sleep_pi(struct umtx_q *uq, struct umtx_pi *pi, uint32_t owner, const char *wmesg, struct umtx_abs_timeout *timo, bool shared) { @@ -2014,7 +2012,7 @@ /* * Add reference count for a PI mutex. */ -static void +void umtx_pi_ref(struct umtx_pi *pi) { @@ -2026,7 +2024,7 @@ * Decrease reference count for a PI mutex, if the counter * is decreased to zero, its memory space is freed. */ -static void +void umtx_pi_unref(struct umtx_pi *pi) { struct umtxq_chain *uc; @@ -2049,7 +2047,7 @@ /* * Find a PI mutex in hash table. */ -static struct umtx_pi * +struct umtx_pi * umtx_pi_lookup(struct umtx_key *key) { struct umtxq_chain *uc; @@ -2069,7 +2067,7 @@ /* * Insert a PI mutex into hash table. */ -static inline void +void umtx_pi_insert(struct umtx_pi *pi) { struct umtxq_chain *uc; diff --git a/sys/sys/umtxvar.h b/sys/sys/umtxvar.h --- a/sys/sys/umtxvar.h +++ b/sys/sys/umtxvar.h @@ -214,9 +214,19 @@ int umtxq_signal_mask(struct umtx_key *, int, u_int); int umtxq_sleep(struct umtx_q *, const char *, struct umtx_abs_timeout *); +int umtxq_sleep_pi(struct umtx_q *, struct umtx_pi *, uint32_t, + const char *, struct umtx_abs_timeout *, bool); void umtxq_unbusy(struct umtx_key *); +void umtxq_unbusy_unlocked(struct umtx_key *); int kern_umtx_wake(struct thread *, void *, int, int); void umtx_pi_adjust(struct thread *, u_char); +struct umtx_pi *umtx_pi_alloc(int); +int umtx_pi_claim(struct umtx_pi *, struct thread *); +void umtx_pi_free(struct umtx_pi *); +void umtx_pi_insert(struct umtx_pi *); +struct umtx_pi *umtx_pi_lookup(struct umtx_key *); +void umtx_pi_ref(struct umtx_pi *); +void umtx_pi_unref(struct umtx_pi *); void umtx_thread_init(struct thread *); void umtx_thread_fini(struct thread *); void umtx_thread_alloc(struct thread *);