aboutsummaryrefslogtreecommitdiffstats
path: root/linux-uml/linux-uml-2.4.26/10-flock.patch
blob: c64b34d8bedb1065b264edbaafe52be20fd4a05f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)