> On 21 Sep 2016, at 17:15, Martin Pieuchot <m...@openbsd.org> wrote: > > Do not export kernel prototypes to userland, structure definitions is > what we need... or do we need love?
if you can #define love, let me know. > > ok? ok. > > Index: sys/rwlock.h > =================================================================== > RCS file: /cvs/src/sys/sys/rwlock.h,v > retrieving revision 1.18 > diff -u -p -r1.18 rwlock.h > --- sys/rwlock.h 11 Feb 2015 00:14:11 -0000 1.18 > +++ sys/rwlock.h 21 Sep 2016 07:11:33 -0000 > @@ -51,8 +51,8 @@ > * set, call rw_exit_waiters with the old contents of the lock. > */ > > -#ifndef SYS_RWLOCK_H > -#define SYS_RWLOCK_H > +#ifndef _SYS_RWLOCK_H > +#define _SYS_RWLOCK_H > > struct proc; > > @@ -73,27 +73,6 @@ struct rwlock { > #define RWLOCK_READER_SHIFT 3UL > #define RWLOCK_READ_INCR (1UL << RWLOCK_READER_SHIFT) > > -void rw_init(struct rwlock *, const char *); > - > -void rw_enter_read(struct rwlock *); > -void rw_enter_write(struct rwlock *); > -void rw_exit_read(struct rwlock *); > -void rw_exit_write(struct rwlock *); > - > -#ifdef DIAGNOSTIC > -void rw_assert_wrlock(struct rwlock *); > -void rw_assert_rdlock(struct rwlock *); > -void rw_assert_unlocked(struct rwlock *); > -#else > -#define rw_assert_wrlock(rwl) ((void)0) > -#define rw_assert_rdlock(rwl) ((void)0) > -#define rw_assert_unlocked(rwl) ((void)0) > -#endif > - > -int rw_enter(struct rwlock *, int); > -void rw_exit(struct rwlock *); > -int rw_status(struct rwlock *); > - > #define RW_WRITE 0x0001UL /* exclusive lock */ > #define RW_READ 0x0002UL /* shared lock */ > #define RW_DOWNGRADE 0x0004UL /* downgrade exclusive to shared */ > @@ -116,9 +95,34 @@ struct rrwlock { > uint32_t rrwl_wcnt; /* # writers. */ > }; > > +#ifdef _KERNEL > + > +void rw_init(struct rwlock *, const char *); > + > +void rw_enter_read(struct rwlock *); > +void rw_enter_write(struct rwlock *); > +void rw_exit_read(struct rwlock *); > +void rw_exit_write(struct rwlock *); > + > +#ifdef DIAGNOSTIC > +void rw_assert_wrlock(struct rwlock *); > +void rw_assert_rdlock(struct rwlock *); > +void rw_assert_unlocked(struct rwlock *); > +#else > +#define rw_assert_wrlock(rwl) ((void)0) > +#define rw_assert_rdlock(rwl) ((void)0) > +#define rw_assert_unlocked(rwl) ((void)0) > +#endif > + > +int rw_enter(struct rwlock *, int); > +void rw_exit(struct rwlock *); > +int rw_status(struct rwlock *); > + > void rrw_init(struct rrwlock *, char *); > int rrw_enter(struct rrwlock *, int); > void rrw_exit(struct rrwlock *); > int rrw_status(struct rrwlock *); > > -#endif > +#endif /* _KERNEL */ > + > +#endif /* _SYS_RWLOCK_H */ >