X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/89b3af67bb32e691275bf6fa803d1834b2284115..527f99514973766e9c0382a4d8550dfb00f54939:/bsd/sys/lockf.h?ds=sidebyside diff --git a/bsd/sys/lockf.h b/bsd/sys/lockf.h index 4ba9a3864..e20bf8733 100644 --- a/bsd/sys/lockf.h +++ b/bsd/sys/lockf.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2006 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -73,11 +73,17 @@ struct vnode; MALLOC_DECLARE(M_LOCKF); #endif +#if IMPORTANCE_INHERITANCE +#define LF_NOT_BOOSTED 0 +#define LF_BOOSTED 1 +#endif /* IMPORTANCE_INHERITANCE */ + /* * The lockf structure is a kernel structure which contains the information * associated with a byte range lock. The lockf structures are linked into - * the inode structure. Locks are sorted by the starting byte of the lock for - * efficiency. + * the vnode structure. Locks are sorted by the starting byte of the lock for + * efficiency after they have been committed; uncommitted locks are on the list + * head so they may quickly be accessed, and are both short lived and transient. */ TAILQ_HEAD(locklist, lockf); @@ -94,6 +100,10 @@ struct lockf { struct lockf *lf_next; /* Pointer to the next lock on this inode */ struct locklist lf_blkhd; /* List of requests blocked on this lock */ TAILQ_ENTRY(lockf) lf_block;/* A request waiting for a lock */ +#if IMPORTANCE_INHERITANCE + int lf_boosted; /* Is the owner of the lock boosted */ +#endif + struct proc *lf_owner; /* The proc that did the SETLK, if known */ }; #pragma pack() @@ -103,12 +113,17 @@ struct lockf { __BEGIN_DECLS -int lf_advlock(struct vnop_advlock_args *); +#ifdef KERNEL_PRIVATE +int lf_advlock(struct vnop_advlock_args *); +int lf_assert(struct vnop_advlock_args *, void **); +void lf_commit(void *, int); +void lf_abort_advlocks(vnode_t); #ifdef LOCKF_DEBUG void lf_print(char *, struct lockf *); void lf_printlist(char *, struct lockf *); #endif +#endif /* KERNEL_PRIVATE */ __END_DECLS