@@ -25,7 +25,7 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
2525// macro for defining syscall handlers dynamically
2626#define DEFINE_HANDLER (name , num , ...) \
2727 /* function defination for syscall handler */ \
28- int name##_grate(uint64_t cageid, uint64_t arg1, uint64_t arg1cage, \
28+ int name##_grate(uint64_t cageid, uint64_t arg1, uint64_t arg1cage, \
2929 uint64_t arg2, uint64_t arg2cage, \
3030 uint64_t arg3, uint64_t arg3cage, \
3131 uint64_t arg4, uint64_t arg4cage, \
@@ -35,15 +35,15 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
3535 int thiscage = getpid(); \
3636 int types[] = {__VA_ARGS__}; \
3737 int argsnum = sizeof(types) / sizeof(int); \
38- uint64_t args[] = {arg1, arg2, arg3, arg4, arg5, arg6}; \
38+ uint64_t args[] = {arg1, arg2, arg3, arg4, arg5, arg6}; \
3939 uint64_t argcages[] = {arg1cage, arg2cage, arg3cage, arg4cage, \
4040 arg5cage, arg6cage}; \
4141 \
42- char log_buffer[1024 ]; \
42+ char log_buffer[2048 ]; \
4343 int offset = 0; \
4444 \
4545 /* log buffer to print syscall with args and ret val */ \
46- offset += snprintf (log_buffer + offset , 1024 - offset , "%s(" , #name ); \
46+ offset += snprintf (log_buffer + offset , 1024 - offset , "%s(" , #name ); \
4747 \
4848 for (int i = 0; i < argsnum; i++) { \
4949 if (i > 0) \
@@ -72,29 +72,28 @@ extern syscall_handler_t syscall_handler_table[MAX_SYSCALLS];
7272 } \
7373 } \
7474 offset += snprintf(log_buffer + offset, 1024 - offset, ")"); \
75- \
76- /* flush log buffer before exit */ \
77- int exit_call = (num == 60 ); \
78- if (exit_call ) { \
75+ \
76+ int is_terminal = (num == 59 || num == 60 || num == 231); \
77+ if (is_terminal) { \
7978 fprintf(stderr, "%s\n", log_buffer); \
8079 fflush(stderr); \
8180 } \
8281 \
8382 /* forward interposed syscall */ \
8483 int ret = make_threei_call (num , 0 , \
85- thiscage , arg1cage , \
84+ thiscage , thiscage , \
8685 arg1 , arg1cage , arg2 , arg2cage , \
8786 arg3 , arg3cage , arg4 , arg4cage , \
8887 arg5 , arg5cage , arg6 , arg6cage , 0 ); \
8988 \
90- if (!exit_call ) { \
89+ if (!is_terminal ) { \
9190 fprintf (stderr , "%s = %d\n" , log_buffer , ret ); \
92- } else { \
93- fprintf (stderr , "%s [failed] = %d\n" , log_buffer , ret ); \
91+ } else { \
92+ fprintf (stderr , "%s [failed] = %d\n" , log_buffer , ret ); \
9493 } \
9594 \
9695 /* printing log buffer after return to ensure proper printing */ \
97- /* fprintf(stderr, "%s = %d\n", log_buffer, ret);*/ \
96+ fprintf (stderr , "%s = %d\n" , log_buffer , ret ); \
9897 return ret ; \
9998 } \
10099 \
0 commit comments