8,7 → 8,8 |
#include <unistd.h> |
#include <syscall.h> |
#include <ipc/ipc.h> |
#include <udebug.h> |
#include <fibril.h> |
#include <errno.h> |
|
#include "syscalls.h" |
#include "errors.h" |
18,6 → 19,7 |
unsigned threadid_buf[TIDBUF_SIZE]; |
|
int phoneid; |
int abort_trace; |
|
int task_connect(int taskid) |
{ |
114,6 → 116,22 |
} |
} |
|
int keyboard_fibril(void *arg) |
{ |
(void)arg; |
|
printf("keyboard fibril started\n"); |
|
getchar(); |
printf("keyboard fibril setting abort_trace\n"); |
abort_trace = 1; |
printf("keyboard fibril sending debug_end()\n"); |
debug_end(phoneid); |
printf("keyboard fibril exitting\n"); |
|
return EOK; |
} |
|
void trace_loop(void) |
{ |
int rc; |
123,8 → 141,18 |
unsigned sc_id; |
int sc_rc; |
int rv_type; |
fid_t kb_fid; |
|
while (1) { |
abort_trace = 0; |
kb_fid = fibril_create(keyboard_fibril, NULL); |
if (kb_fid == 0) { |
printf("Failed creating keyboard fibril\n"); |
return; |
} |
fibril_add_ready(kb_fid); |
|
while (!abort_trace) { |
|
/* Run thread until a syscall is executed */ |
rc = debug_go(phoneid, threadid_buf[0], |
&ev_type, &sc_id, &sc_rc); |
151,6 → 179,8 |
break; |
} |
} |
|
printf("trace_loop() exiting\n"); |
} |
|
|
181,7 → 211,14 |
} |
|
trace_loop(); |
/* |
printf("press 'd' to disconnect\n"); |
while ((i = getchar()) != 'd') |
putchar(i); |
|
printf("call debug_end()\n"); |
debug_end(phoneid); |
*/ |
printf("done\n"); |
return; |
} |
188,7 → 225,9 |
|
int main(void) |
{ |
trace_active_task(); |
while (1) { |
trace_active_task(); |
} |
} |
|
/** @} |