// IfsBackup.decl -- definitions for backup system
// Copyright Xerox Corporation 1979, 1980, 1982

// Last modified October 3, 1982  3:52 PM by Taft


//---------------------------------------------------------------------------
structure BFSD:		// Backup File System Descriptor
//---------------------------------------------------------------------------
[
flags word =
   [
   state byte		//state of this entry (see below)
   refresh bit		//file system needs to be refreshed
   ]
errorCode word		//error code for communication to user interface
freePages word 2	//number of free pages in file system
blank word 4		//for future expansion
id word lenDirName	//id of file system
]
manifest lenBFSD = size BFSD/16

manifest
[
numBFSD = 3	//number of BFSDs in BI

//BFSD state values
bfsdEmpty = 0		//slot is empty
bfsdUsable = 1		//usable by backup system
bfsdInUse = 2		//in use by backup system
bfsdUsed = 3		//used by backup system
]

//---------------------------------------------------------------------------
structure BI:		// Backup Info
//---------------------------------------------------------------------------
[
flags word =
   [
   okToGo bit		//ok for backup system to run
   inProgress bit	//backup pass started and not yet completed
   blank bit 6
   version byte		//BI format version number
   ]
timeStart @TIME		//time at which to start backup system (TIME format)
timeStop @TIME		//time at which to stop (TIME format)
timeInterval @TIME	//time interval between backup passes (seconds)
fullPeriod @TIME	//period over which a full dump is performed (seconds)
timeLastStart @TIME	//time at which current backup pass was started
iBFSD word		//index of BFSD currently in use by backup system
bfsd↑0,numBFSD @BFSD	//backup file system descriptors
pathName word lenPathName  //name of file currently being worked on
timeBackupAfter @TIME	//repeat backup of all files last backed up after this
]
manifest lenBI = size BI/16

manifest biVersion = 1

manifest
[
//error codes
ecBackupCreateFD = 400
ecBackupLookupFD = 401
ecBackupCreateFile = 402
ecBackupLookupFile = 403
ecBackupDelete = 404
ecNotBackupFS = 405

ecRestoreCreateFD = 425
ecRestoreLookupFD = 426
ecRestoreNoBackup = 427
ecRestoreObsolete = 428

//result codes passed around the backup process and
//between it and the user interface
backupDone = 451	//backup completed
backupFileBusy = 452	//file busy - can't back up now
backupDiskFull = 453	//backup disk is full
backupHalted = 454	//backup halted externally
backupNotNeeded = 455	//backup not required
backupCantAccess = 456	//unexpectedly failed to back up file for reason
			// other than the ones given above
]