|
|
| version 1.3, 2003/08/20 07:31:21 | version 1.4, 2004/05/03 16:06:26 |
|---|---|
| Line 47 struct vop_advlock_args; | Line 47 struct vop_advlock_args; |
| /* | /* |
| * The lockf structure is a kernel structure which contains the information | * The lockf structure is a kernel structure which contains the information |
| * associated with a byte range lock. The lockf structures are linked into | * associated with the byte range locks on an inode. The lockf structure is |
| * the inode structure. Locks are sorted by the starting byte of the lock for | * embedded in the inode structure. |
| * efficiency. | |
| */ | */ |
| TAILQ_HEAD(locklist, lockf); | |
| struct lockf { | struct lockf_range { |
| short lf_flags; /* Semantics: F_POSIX, F_FLOCK, F_WAIT */ | short lf_type; /* Lock type: F_RDLCK, F_WRLCK */ |
| short lf_type; /* Lock type: F_RDLCK, F_WRLCK */ | short lf_flags; /* Lock flags: F_NOEND */ |
| off_t lf_start; /* Byte # of the start of the lock */ | off_t lf_start; /* Byte # of the start of the lock */ |
| off_t lf_end; /* Byte # of the end of the lock (-1=EOF) */ | off_t lf_end; /* Byte # of the end of the lock, */ |
| caddr_t lf_id; /* Id of the resource holding the lock */ | struct proc *lf_owner; /* owning process, NULL for flock locks */ |
| struct lockf **lf_head; /* Back pointer to the head of the locf list */ | TAILQ_ENTRY(lockf_range) lf_link; |
| struct inode *lf_inode; /* Back pointer to the inode */ | |
| 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 */ | |
| }; | }; |
| /* Maximum length of sleep chains to traverse to try and detect deadlock. */ | struct lockf { |
| #define MAXDEPTH 50 | TAILQ_HEAD(, lockf_range) lf_range; |
| TAILQ_HEAD(, lockf_range) lf_blocked; | |
| int init_done; | |
| }; | |
| int lf_advlock (struct vop_advlock_args *, struct lockf **, u_quad_t); | int lf_advlock(struct vop_advlock_args *, struct lockf *, u_quad_t); |
| #ifdef LOCKF_DEBUG | #ifdef _KERNEL |
| void lf_print (char *, struct lockf *); | extern int maxposixlocksperuid; |
| void lf_printlist (char *, struct lockf *); | |
| #endif | #endif |
| void lf_count_adjust(struct proc *, struct uidinfo *); | |
| #endif /* !_SYS_LOCKF_H_ */ | #endif /* !_SYS_LOCKF_H_ */ |