-- 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.