Fred Drake | a94414a | 2001-05-10 15:33:31 +0000 | [diff] [blame] | 1 | import struct, fcntl |
Guido van Rossum | 19806f4 | 1994-05-03 14:46:18 +0000 | [diff] [blame] | 2 | |
| 3 | def writelock(f): |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 4 | _lock(f, fcntl.F_WRLCK) |
Guido van Rossum | 19806f4 | 1994-05-03 14:46:18 +0000 | [diff] [blame] | 5 | |
| 6 | def readlock(f): |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 7 | _lock(f, fcntl.F_RDLCK) |
Guido van Rossum | 19806f4 | 1994-05-03 14:46:18 +0000 | [diff] [blame] | 8 | |
| 9 | def unlock(f): |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 10 | _lock(f, fcntl.F_UNLCK) |
Guido van Rossum | 19806f4 | 1994-05-03 14:46:18 +0000 | [diff] [blame] | 11 | |
| 12 | def _lock(f, op): |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 13 | dummy = fcntl.fcntl(f.fileno(), fcntl.F_SETLKW, |
| 14 | struct.pack('2h8l', op, |
| 15 | 0, 0, 0, 0, 0, 0, 0, 0, 0)) |