diff options
Diffstat (limited to 'packages/linux-uml/linux-uml-2.4.26/10-flock.patch')
-rw-r--r-- | packages/linux-uml/linux-uml-2.4.26/10-flock.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/linux-uml/linux-uml-2.4.26/10-flock.patch b/packages/linux-uml/linux-uml-2.4.26/10-flock.patch index e69de29bb2..c64b34d8be 100644 --- a/packages/linux-uml/linux-uml-2.4.26/10-flock.patch +++ b/packages/linux-uml/linux-uml-2.4.26/10-flock.patch @@ -0,0 +1,33 @@ +Index: linux-2.4.24-2/arch/um/os-Linux/file.c +--- linux-2.4.24-2/arch/um/os-Linux/file.c 7 Apr 2004 20:44:49 -0000 1.29 ++++ linux-2.4.24-2/arch/um/os-Linux/file.c 17 May 2004 18:35:49 -0000 +@@ -688,6 +688,7 @@ + + int os_lock_file(int fd, int excl) + { ++#if USE_FCNTL_LOCK + int type = excl ? F_WRLCK : F_RDLCK; + struct flock lock = ((struct flock) { .l_type = type, + .l_whence = SEEK_SET, +@@ -710,6 +711,21 @@ + err = save; + out: + return(err); ++#else ++ int type = excl ? LOCK_EX : LOCK_SH; ++ int err, save; ++ ++ err = flock(fd, type | LOCK_NB); ++ if(!err) ++ goto out; ++ ++ save = -errno; ++ ++ printk("file already locked\n"); ++ err = save; ++ out: ++ return(err); ++#endif + } + + int os_ftruncate(int fd, __u64 size) |