-- File: Lock.Mesa,  Last Edit: HGM  December 18, 1980  10:34 PM
Lock: DEFINITIONS =
  BEGIN
  ReadWrite: TYPE = {read, write};
  LockDisk: PROCEDURE [fileName: STRING, why: ReadWrite, fast: BOOLEAN ← FALSE]
    RETURNS [BOOLEAN];
  LockDiskAndWait: PROCEDURE [fileName: STRING, why: ReadWrite];
  UnlockDisk: PROCEDURE [fileName: STRING, fast: BOOLEAN ← FALSE];
  EnumerateLocks: PROCEDURE [PROCEDURE [Lock]];
  GetLockLocation: PROCEDURE RETURNS [POINTER TO Lock];
  Lock: TYPE = POINTER TO LockObject;
  LockObject: TYPE = RECORD [
    next: Lock, name: STRING, useCount: CARDINAL, write: BOOLEAN];
  END.