diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-06-02 10:22:14 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-06-02 10:22:14 +0000 |
commit | a24ad2c346471f3066e051459112341c02a039fc (patch) | |
tree | 6446521c7ebac7e27dcd033815f6a8b1a65da249 /winsup/cygwin/include/fcntl.h | |
parent | fa35814af1fe24f596142c993f050f5eb0a74914 (diff) | |
download | cygnal-a24ad2c346471f3066e051459112341c02a039fc.tar.gz cygnal-a24ad2c346471f3066e051459112341c02a039fc.tar.bz2 cygnal-a24ad2c346471f3066e051459112341c02a039fc.zip |
* autoload.cc (CancelSynchronousIo): Define.
* fcntl.cc (fcntl64): Drop handling of locking commands.
* fhandler.h (class fhandler_disk_file): Add mandatory_locking.
(fhandler_disk_file::fcntl): Declare.
(fhandler_disk_file::mand_lock): Declare.
* fhandler_disk_file.cc (fhandler_disk_file::fhandler_disk_file):
Initialize mandatory_locking.
(fhandler_disk_file::fcntl): New method. Handle F_LCK_MANDATORY and
locking commands.
(fhandler_disk_file::dup): Duplicate mandatory_locking. Fix a bug
when duplicating prw_handle failed.
(fhandler_disk_file::fixup_after_fork): Reset mandatory_locking.
* flock.cc (fhandler_disk_file::lock): Add comment.
(struct lock_parms): New struct to pass parameters to blocking_lock_thr
thread function.
(blocking_lock_thr): New thread function.
(fhandler_disk_file::mand_lock): New methof implementing mandatory
locking with Windows semantics.
* ntdll.h (NtLockFile): Declare.
(NtUnlockFile): Declare.
* include/fcntl.h: Fix a comment.
(F_LCK_MANDATORY): Define. Add lengthy comment to explain.
Diffstat (limited to 'winsup/cygwin/include/fcntl.h')
-rw-r--r-- | winsup/cygwin/include/fcntl.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/winsup/cygwin/include/fcntl.h b/winsup/cygwin/include/fcntl.h index 9c3ddf926..fe8a1fc42 100644 --- a/winsup/cygwin/include/fcntl.h +++ b/winsup/cygwin/include/fcntl.h @@ -1,6 +1,6 @@ /* fcntl.h - Copyright 1996, 1998, 2000, 2001, 2005, 2006, 2009, 2010 Red Hat, Inc. + Copyright 1996, 1998, 2000, 2001, 2005, 2006, 2009, 2010, 2013 Red Hat, Inc. This file is part of Cygwin. @@ -14,12 +14,29 @@ details. */ #include <sys/fcntl.h> #define O_NDELAY _FNDELAY -/* sys/fcntl defines values up to 0x40000 (O_NOINHERIT). */ +/* sys/_default_fcntl.h defines values up to 0x40000 (O_NOINHERIT). */ #define _FDIRECT 0x80000 #define _FNOFOLLOW 0x100000 #define _FDIRECTORY 0x200000 #define _FEXECSRCH 0x400000 +/* F_LCK_MANDATORY: Request mandatory locks for this file descriptor. + + Cygwin extension to fcntl file locking mechanism. By default, fcntl file + locks are advisory locks. This works nicely as long as only Cygwin + processes interact. If you have the requirement to interact with native + Windows applications which use Windows mandatory file locking, your have + to use mandatory locking as well. The command + + fcntl (fd, F_LCK_MANDATORY, 1) + + switches subsequent F_GETLK, F_SETLK, F_SETLKW calls to mandatory locking + for this file descriptor and subsequently duplicated ones WITHIN THE SAME + PROCESS. Note that mandatory locks are NOT inherited by child processes, + nor do they survive an execve call. This fully corresponds to Windows + mandatory locking semantics. */ +#define F_LCK_MANDATORY 0x99 + /* POSIX-1.2008 requires this flag and allows to set it to 0 if its functionality is not required. */ #define O_TTY_INIT 0 |