Project 2 Grading Criterion
Basic Signal Functionality - (40/100 points)
- Full Credit - ALL
the following functionalities should be working correctly:
- Register handler
- Send signal
- Handle signal
- Return from signal correctly
- Partial Credit - If the basic signal functionality is not working, however, your code shows that you made a good effort in the project, you will receive
(20 Pts) as partial credit.
SIGCHLD - (15/100 points)
(5 Pts) SIGCHLD should be handled by Def_Child_Handler
handler if there is no registered handle (i.e. the child should be reaped).
(10 Pts) Whenever a child process dies, a SIGCHLD should be sent to parent.
SIG_IGN & SIG_DFL - (15/100 points)
- (5 Pts) Passing SIG_IGN as a handler to a signal should result in calling the ignore handler as defined by
- (5 Pts) Passing SIG_DFL as a handler to a signal should result in calling the default handler as defined by
- (5 Pts) If a process receives a signal and no explicit signal handler has been defined for that signal by Sys_Signal, then the default signal handler will be invoked (as defined by
Testing Non-reentrant Handler Code - (10/100 points)
- (5 Pts) Handling Multiple Same Signals: Indicate that one signal is pending while executing the handler no matter how many times the signal received.
- (5 Pts) Handling Multiple Different Signals: Indicate all signals as pending once.
Handling Errors - (10/100 points)
- (2 Pts) Registering a handler for SIGKILL
- (2 Pts) Registering a handler for non-exiting signal
- (2 Pts) Sending a signal to a non-existing PID
- (2 Pts) Sending a non-existing signal
- (2 Pts) Passing NULL to Sys_RegDeliver as a default handler or ignore ohandler or return signal (signal trampoline)
Sys_WaitNoPID - (10/100 points)
- (5 Pts) Sys_WaitNoPID should reap ANY zombie child process that happens to have terminated, and whose refCount is 1.
- (5 Pts) Return -1 if there is no dead processes.