269
270 #define RW_READER 0
271 #define RW_WRITER 1
272 #define RW_DEFAULT USYNC_THREAD
273
274 #undef RW_READ_HELD
275 #define RW_READ_HELD(x) _rw_read_held(&(x)->rw_lock)
276
277 #undef RW_WRITE_HELD
278 #define RW_WRITE_HELD(x) _rw_write_held(&(x)->rw_lock)
279
280 extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg);
281 extern void rw_destroy(krwlock_t *rwlp);
282 extern void rw_enter(krwlock_t *rwlp, krw_t rw);
283 extern int rw_tryenter(krwlock_t *rwlp, krw_t rw);
284 extern int rw_tryupgrade(krwlock_t *rwlp);
285 extern void rw_exit(krwlock_t *rwlp);
286 #define rw_downgrade(rwlp) do { } while (0)
287
288 extern uid_t crgetuid(cred_t *cr);
289 extern gid_t crgetgid(cred_t *cr);
290 extern int crgetngroups(cred_t *cr);
291 extern gid_t *crgetgroups(cred_t *cr);
292
293 /*
294 * Condition variables
295 */
296 typedef cond_t kcondvar_t;
297
298 #define CV_DEFAULT USYNC_THREAD
299
300 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
301 extern void cv_destroy(kcondvar_t *cv);
302 extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
303 extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
304 extern void cv_signal(kcondvar_t *cv);
305 extern void cv_broadcast(kcondvar_t *cv);
306
307 /*
308 * kstat creation, installation and deletion
|
269
270 #define RW_READER 0
271 #define RW_WRITER 1
272 #define RW_DEFAULT USYNC_THREAD
273
274 #undef RW_READ_HELD
275 #define RW_READ_HELD(x) _rw_read_held(&(x)->rw_lock)
276
277 #undef RW_WRITE_HELD
278 #define RW_WRITE_HELD(x) _rw_write_held(&(x)->rw_lock)
279
280 extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg);
281 extern void rw_destroy(krwlock_t *rwlp);
282 extern void rw_enter(krwlock_t *rwlp, krw_t rw);
283 extern int rw_tryenter(krwlock_t *rwlp, krw_t rw);
284 extern int rw_tryupgrade(krwlock_t *rwlp);
285 extern void rw_exit(krwlock_t *rwlp);
286 #define rw_downgrade(rwlp) do { } while (0)
287
288 extern uid_t crgetuid(cred_t *cr);
289 extern uid_t crgetruid(cred_t *cr);
290 extern gid_t crgetgid(cred_t *cr);
291 extern int crgetngroups(cred_t *cr);
292 extern gid_t *crgetgroups(cred_t *cr);
293
294 /*
295 * Condition variables
296 */
297 typedef cond_t kcondvar_t;
298
299 #define CV_DEFAULT USYNC_THREAD
300
301 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
302 extern void cv_destroy(kcondvar_t *cv);
303 extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
304 extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
305 extern void cv_signal(kcondvar_t *cv);
306 extern void cv_broadcast(kcondvar_t *cv);
307
308 /*
309 * kstat creation, installation and deletion
|