1 #include <stdlib.h> 2 #include <unistd.h> 3 4 #include "nfs_flock.h" 5 6 int lock_reg(int fd, int type, off_t offset, int whence, off_t len, int cmd) 7 { 8 struct flock lock; 9 10 lock.l_type = type; 11 lock.l_start = offset; 12 lock.l_whence = whence; 13 lock.l_len = len; 14 15 return (fcntl(fd, cmd, &lock)); 16 } 17 18 int lock_test(int fd, int type, off_t offset, int whence, int len) 19 { 20 struct flock lock; 21 22 lock.l_type = type; 23 lock.l_start = offset; 24 lock.l_whence = whence; 25 lock.l_len = len; 26 27 if (fcntl(fd, F_GETLK, &lock) < 0) { 28 perror("F_GETLK"); 29 exit(2); 30 } 31 32 if (lock.l_type == F_UNLCK) 33 return (0); 34 35 return (lock.l_pid); 36 } 37