lockf
int lockf(int, int, off_t);
struct lockf *lf_alloc(uid_t, int);
void lf_free(struct lockf *);
int lf_clearlock(struct lockf *);
int lf_findoverlap(struct lockf *, struct lockf *, int, struct lockf **);
struct lockf *lf_getblock(struct lockf *, struct lockf *);
int lf_getlock(struct lockf *, struct flock *);
int lf_setlock(struct lockf *);
void lf_split(struct lockf *, struct lockf *);
void lf_wakelock(struct lockf *, int);
int lf_deadlock(struct lockf *);
pool_init(&lockf_pool, sizeof(struct lockf), 0, IPL_NONE,
struct lockf *
struct lockf *lock;
lf_free(struct lockf *lock)
struct lockf *lock;
lf_setlock(struct lockf *lock)
struct lockf *block;
struct lockf *overlap, *ltmp;
TAILQ_HEAD(locklist, lockf);
lf_clearlock(struct lockf *lock)
struct lockf *lf, *overlap;
lf_getlock(struct lockf *lock, struct flock *fl)
struct lockf *block, *lf;
struct lockf *
lf_getblock(struct lockf *lf, struct lockf *lock)
struct lockf *overlap;
TAILQ_ENTRY(lockf) lf_entry;
struct lockf *lf_blk; /* The lock that blocks us */
lf_findoverlap(struct lockf *lf, struct lockf *lock, int type,
struct lockf **overlap)
TAILQ_ENTRY(lockf) lf_block; /* A request waiting for a lock */
TAILQ_HEAD(, lockf) ls_locks; /* list of active locks */
TAILQ_HEAD(, lockf) ls_pending; /* list of pending locks */
struct lockf *lock;
lf_split(struct lockf *lock1, struct lockf *lock2)
struct lockf *splitlock;
lf_wakelock(struct lockf *lock, int flags)
struct lockf *wakelock;
lf_deadlock(struct lockf *lock)
struct lockf *block, *lf, *pending;
lf_print(const char *tag, struct lockf *lock)
struct lockf *block;
lf_printlist(const char *tag, struct lockf *lock)
struct lockf *lf;
void lf_print(const char *, struct lockf *);
void lf_printlist(const char *, struct lockf *);
struct lockf *de_lockf; /* byte level lock list */