Lines Matching refs:flock
1587 advisory_lock_intersects(struct advisory_lock* lock, struct flock* flock) in advisory_lock_intersects() argument
1589 if (flock == NULL) in advisory_lock_intersects()
1592 return lock->start <= flock->l_start - 1 + flock->l_len in advisory_lock_intersects()
1593 && lock->end >= flock->l_start; in advisory_lock_intersects()
1600 test_advisory_lock(struct vnode* vnode, struct flock* flock) in test_advisory_lock() argument
1602 flock->l_type = F_UNLCK; in test_advisory_lock()
1614 if (lock->team != team && advisory_lock_intersects(lock, flock)) { in test_advisory_lock()
1616 if (flock->l_type != F_RDLCK || !lock->shared) { in test_advisory_lock()
1618 flock->l_type = lock->shared ? F_RDLCK : F_WRLCK; in test_advisory_lock()
1619 flock->l_whence = SEEK_SET; in test_advisory_lock()
1620 flock->l_start = lock->start; in test_advisory_lock()
1621 flock->l_len = lock->end - lock->start + 1; in test_advisory_lock()
1622 flock->l_pid = lock->team; in test_advisory_lock()
1638 struct file_descriptor* descriptor, struct flock* flock) in release_advisory_lock() argument
1640 FUNCTION(("release_advisory_lock(vnode = %p, flock = %p)\n", vnode, flock)); in release_advisory_lock()
1657 && advisory_lock_intersects(lock, flock)) { in release_advisory_lock()
1661 if (flock != NULL) { in release_advisory_lock()
1662 startsBefore = lock->start < flock->l_start; in release_advisory_lock()
1663 endsBeyond = lock->end > flock->l_start - 1 + flock->l_len; in release_advisory_lock()
1671 lock->end = flock->l_start - 1; in release_advisory_lock()
1674 lock->start = flock->l_start + flock->l_len; in release_advisory_lock()
1685 lock->end = flock->l_start - 1; in release_advisory_lock()
1691 secondLock->start = flock->l_start + flock->l_len; in release_advisory_lock()
1752 struct file_descriptor* descriptor, struct flock* flock, bool wait) in acquire_advisory_lock() argument
1755 vnode, flock, wait ? "yes" : "no")); in acquire_advisory_lock()
1757 bool shared = flock->l_type == F_RDLCK; in acquire_advisory_lock()
1783 && advisory_lock_intersects(lock, flock)) { in acquire_advisory_lock()
1824 lock->start = flock->l_start; in acquire_advisory_lock()
1825 lock->end = flock->l_start - 1 + flock->l_len; in acquire_advisory_lock()
1840 normalize_flock(struct file_descriptor* descriptor, struct flock* flock) in normalize_flock() argument
1842 switch (flock->l_whence) { in normalize_flock()
1846 flock->l_start += descriptor->pos; in normalize_flock()
1861 flock->l_start += stat.st_size; in normalize_flock()
1868 if (flock->l_start < 0) in normalize_flock()
1869 flock->l_start = 0; in normalize_flock()
1870 if (flock->l_len == 0) in normalize_flock()
1871 flock->l_len = OFF_MAX; in normalize_flock()
1874 if (flock->l_start > 0 && OFF_MAX - flock->l_start < flock->l_len) in normalize_flock()
1875 flock->l_len = OFF_MAX - flock->l_start; in normalize_flock()
1877 if (flock->l_len < 0) { in normalize_flock()
1879 flock->l_start += flock->l_len; in normalize_flock()
1880 flock->l_len = -flock->l_len; in normalize_flock()
6206 struct flock flock; in common_fcntl() local
6225 memcpy(&flock, (struct flock*)argument, sizeof(struct flock)); in common_fcntl()
6226 else if (user_memcpy(&flock, (struct flock*)argument, in common_fcntl()
6227 sizeof(struct flock)) != B_OK) in common_fcntl()
6302 struct flock normalizedLock; in common_fcntl()
6304 memcpy(&normalizedLock, &flock, sizeof(struct flock)); in common_fcntl()
6318 flock.l_type = F_UNLCK; in common_fcntl()
6320 memcpy((struct flock*)argument, &flock, in common_fcntl()
6321 sizeof(struct flock)); in common_fcntl()
6323 status = user_memcpy((struct flock*)argument, in common_fcntl()
6324 &flock, sizeof(struct flock)); in common_fcntl()
6333 memcpy((struct flock*)argument, in common_fcntl()
6334 &normalizedLock, sizeof(struct flock)); in common_fcntl()
6336 status = user_memcpy((struct flock*)argument, in common_fcntl()
6337 &normalizedLock, sizeof(struct flock)); in common_fcntl()
6347 status = normalize_flock(descriptor.Get(), &flock); in common_fcntl()
6353 } else if (flock.l_type == F_UNLCK) { in common_fcntl()
6356 &flock); in common_fcntl()
6359 &flock); in common_fcntl()
6364 && flock.l_type == F_WRLCK) in common_fcntl()
6366 && flock.l_type == F_RDLCK)) in common_fcntl()
6371 descriptor->cookie, &flock, op == F_SETLKW); in common_fcntl()
6374 &flock, op == F_SETLKW); in common_fcntl()
9279 struct flock flock; in _user_flock() local
9280 flock.l_start = 0; in _user_flock()
9281 flock.l_len = OFF_MAX; in _user_flock()
9282 flock.l_whence = 0; in _user_flock()
9283 flock.l_type = (operation & LOCK_SH) != 0 ? F_RDLCK : F_WRLCK; in _user_flock()
9288 status = FS_CALL(vnode, release_lock, descriptor->cookie, &flock); in _user_flock()
9290 status = release_advisory_lock(vnode, NULL, descriptor.Get(), &flock); in _user_flock()
9293 status = FS_CALL(vnode, acquire_lock, descriptor->cookie, &flock, in _user_flock()
9296 status = acquire_advisory_lock(vnode, NULL, descriptor.Get(), &flock, in _user_flock()