CS170 The KOS Pipes Lab Rubric
- 10 points: Building
- 10 points: Makefile allows successful build
- 100 points: General Implementation
- 90 points: Correct fd implementation (e.g. per process fd table and a system-wide open file/device table)
- 10 points: fd table size is consistent with other syscalls
- 50 points: dup
- 10 points: Correct return - new fd is lowest available fd
- 10 points: Checks for major error conditions
- 30 points: Correct internal fd handling (ref counting, device type, etc)
- 60 points: dup2
- 10 points: Checks for major error conditions
- 10 points: Do nothing when old fd equals new fd
- 15 points: Correct internal fd handling (ref counting, device type, etc)
- 15 points: Correct return - new fd
- 10 points: Correct close behavior if target fd was open
- 150 points: pipe
- 75 points: Correct pipe implementation (changes to fd table, internal entries/ref counts, etc)
- 25 points: Correct arg (fildes[2]) on success and no changes to arg (fildes[2]) on failure
- 50 points: Checks for major error conditions
- 150 points: read
- 50 points: General pipe read works (buffering, multiple readers, etc)
- 25 points: Console read( still works)
- 50 points: Pipe block and unblock behavior
- 10 points: Pipe blocks if pipe is open (writers exist) and there is nothing read
- 20 points: Pipe unblocks if pipe is open (writers exist) and something was read (but not the full requested read)
- 20 points: Pipe unblocks if write end is closed (no writers)
- 25 points: Checks for major error conditions
- 150 points: write
- 50 points: General pipe write works (buffering, multiple writers, etc)
- 25 points: Console write (still works)
- 50 points: Pipe block and unblock behavior
- 20 points: Pipe blocks if pipe is open (readers exist) and pipe is full
- 30 points: Pipe unblocks if read end is closed (no readers)
- 25 points: Checks for major error conditions
- 40 points: fork
- Correct fd table handling (ref counts, etc)
- 30 points: exec
- Correct fd table handling (preserve fd table)
- 30 points: close
- Decrements reference counts, frees pipes as needed (excluding read/write unblock behavior as it's part of read/write syscall)
- 30 points: exit
- Closes the process's open file descriptors, etc