 
  
  
  
  
 Next: Putting It All Together
Up: File System Physical Representation
 Previous: File Header
 
Nachos supports a single top-level directory, managed by the 
Directory object.  When a file is created, it is added to the
directory; likewise, deleting a file results in its removal from the
directory. Directory entries themselves consist of (filename, fnode,
free_flag) triplets, with the free_flag indicating whether
that directory slot is currently allocated. The following directory
operations are supported:
- Directory(int size):
-  This constructor creates an (in-memory)
directory object capable of holding size entries.
 
- void FetchFrom(OpenFile *file):
-  Fetch the directory contents
stored in file file.
 
- void WriteBack(OpenFile *file):
-  Flush the contents of
the directory to the file file.
 
- int Find(char *name):
-  Search the directory for a file called
name, returning its fnode number if the file exists.
 
- bool Add(char *name, int newSector):
-  Add the file name
with fnode newSector to the directory. Note that this routine
only updates the in-memory copy of the directory.  To make the
directory changes permanent, WriteBack must subsequently be
invoked.
 
- bool Remove(char *name):
-  Remove file name from the
directory. Note that the Remove operator simply updates the
directory; the FileHeader and data sectors associated with
name are deallocated separately. In addition, a subsequent
call to WriteBack is needed to make the changes permanent.
 
- List()
-  Print out the directory contents (debugging).
 
- Print()
-  Print out contents of all files in the directory (debugging).
  
 
Thomas Narten 
Mon Feb  3 15:00:27 EST 1997