X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=grading%2Ffilesys%2Ffslib.h;h=ea3862490a3d028c807cfc3fcb15aae8097c6d27;hb=3836cfc77ccaace693f83be1ed5a290bce26e564;hp=b1d654fda4b857a84451f14e5462472151de8537;hpb=c36e5b768f46fc098377b9a70d2b1c02405ef14a;p=pintos-anon diff --git a/grading/filesys/fslib.h b/grading/filesys/fslib.h index b1d654f..ea38624 100644 --- a/grading/filesys/fslib.h +++ b/grading/filesys/fslib.h @@ -4,6 +4,7 @@ #include #include #include +#include extern const char test_name[]; extern bool quiet; @@ -11,7 +12,21 @@ extern bool quiet; void msg (const char *, ...) PRINTF_FORMAT (1, 2); void fail (const char *, ...) PRINTF_FORMAT (1, 2) NO_RETURN; -#define check(SUCCESS, ...) \ +/* Takes an expression to test for SUCCESS and a message, which + may include printf-style arguments. Logs the message, then + tests the expression. If it is zero, indicating failure, + emits the message as a failure. + + Somewhat tricky to use: + + - SUCCESS must not have side effects that affect the + message, because that will cause the original message and + the failure message to differ. + + - The message must not have side effects of its own, because + it will be printed twice on failure, or zero times on + success if quiet is set. */ +#define CHECK(SUCCESS, ...) \ do \ { \ msg (__VA_ARGS__); \ @@ -32,6 +47,9 @@ void check_file (const char *filename, const void *buf, size_t filesize); void compare_bytes (const void *read_data, const void *expected_data, size_t size, size_t ofs, const char *filename); +void exec_children (const char *child_name, pid_t pids[], size_t child_cnt); +void join_children (pid_t pids[], size_t child_cnt); + void test_main (void); #endif /* fslib.h */