
- question: what about function pointers? see libfs.c in this 
  week's example files
- question: how to see the man pages for open(), read(), etc.?
  use "man 2 open" to see the open man page 
  (system calls are in 2nd sec. of man pages; see "man man" for details)
- question: it's lseek not llseek or lllseek or llllseek
- question: for simple examples of open/read/write/close,
  see gen.c, check.c, corrupt.c
  * gen.c     use this to create files of a given size filled with data
              such that each block N has the number N in it 
  * check.c   use this to read back a file and make sure it has the 
              correct data in it  as generated by 'gen'
  * corrupt.c use this to corrupt a block of a file (run 'check' to see 
              that it worked ...)
  compile these as follows: "gcc -o gen gen.c -Wall -std=c99"
- question: should we handle opens to files of the same name
  but in different directories? yes. 
  look at stat() and the st_dev, st_ino fields to make a unique
  identifier for each file that is accessed
- question: two opens to the same file -- O_RDONLY and O_WRONLY -- should
  handle? yes (don't cache data in your library!)
- question: max file length/max file name: handle in some reasonable way
- question: max open files is 1024

- some complications/simplifications...
  * don't worry about: files that are not multiples of 4KB 
  * don't worry about: reads/writes that are not multiples 
    of 4KB and/or 4KB aligned
  * do worry about: files getting deleted 
    (open with O_TRUNC or call truncate() or call unlink())





