CS318 - Pintos
Pintos source browser for JHU CS318 course
lib.h
Go to the documentation of this file.
1 #ifndef TESTS_LIB_H
2 #define TESTS_LIB_H
3 
4 #include <debug.h>
5 #include <stdbool.h>
6 #include <stddef.h>
7 #include <syscall.h>
8 
9 extern const char *test_name;
10 extern bool quiet;
11 
12 void msg (const char *, ...) PRINTF_FORMAT (1, 2);
13 void fail (const char *, ...) PRINTF_FORMAT (1, 2) NO_RETURN;
14 
15 /** Takes an expression to test for SUCCESS and a message, which
16  may include printf-style arguments. Logs the message, then
17  tests the expression. If it is zero, indicating failure,
18  emits the message as a failure.
19 
20  Somewhat tricky to use:
21 
22  - SUCCESS must not have side effects that affect the
23  message, because that will cause the original message and
24  the failure message to differ.
25 
26  - The message must not have side effects of its own, because
27  it will be printed twice on failure, or zero times on
28  success if quiet is set. */
29 #define CHECK(SUCCESS, ...) \
30  do \
31  { \
32  msg (__VA_ARGS__); \
33  if (!(SUCCESS)) \
34  fail (__VA_ARGS__); \
35  } \
36  while (0)
37 
38 void shuffle (void *, size_t cnt, size_t size);
39 
40 void exec_children (const char *child_name, pid_t pids[], size_t child_cnt);
41 void wait_children (pid_t pids[], size_t child_cnt);
42 
43 void check_file_handle (int fd, const char *file_name,
44  const void *buf_, size_t filesize);
45 void check_file (const char *file_name, const void *buf, size_t filesize);
46 
47 void compare_bytes (const void *read_data, const void *expected_data,
48  size_t size, size_t ofs, const char *file_name);
49 
50 #endif /**< test/lib.h */
compare_bytes
void compare_bytes(const void *read_data, const void *expected_data, size_t size, size_t ofs, const char *file_name)
test/lib.h
Definition: lib.c:163
test_name
const char * test_name
Child process for syn-read test.
Definition: child-syn-read.c:14
quiet
bool quiet
Definition: lib.c:9
buf
static char buf[BUF_SIZE]
Definition: child-syn-read.c:16
stdbool.h
exec_children
void exec_children(const char *child_name, pid_t pids[], size_t child_cnt)
Definition: lib.c:80
msg
void msg(const char *,...) PRINTF_FORMAT(1
Definition: lib.c:28
wait_children
void wait_children(pid_t pids[], size_t child_cnt)
Definition: lib.c:94
filesize
int filesize(int fd)
Definition: syscall.c:109
file_name
static const char file_name[]
tests/filesys/base/syn-read.h
Definition: syn-read.h:5
pid_t
int pid_t
Process identifier.
Definition: syscall.h:8
NO_RETURN
void void NO_RETURN
Definition: lib.h:13
check_file
void check_file(const char *file_name, const void *buf, size_t filesize)
Definition: lib.c:151
check_file_handle
void check_file_handle(int fd, const char *file_name, const void *buf_, size_t filesize)
Definition: lib.c:108
stddef.h
fail
void void fail(const char *,...) PRINTF_FORMAT(1
Definition: lib.c:40
debug.h
shuffle
void shuffle(void *, size_t cnt, size_t size)
Definition: lib.c:67
PRINTF_FORMAT
#define PRINTF_FORMAT(FMT, FIRST)
Definition: debug.h:10