62,6 → 62,9 |
int phoneid; |
int abort_trace; |
|
unsigned thash; |
volatile int paused; |
|
void thread_trace_start(unsigned thread_hash); |
|
static proto_t *proto_console; |
334,6 → 337,16 |
case UDEBUG_EVENT_SYSCALL: |
event_syscall(thread_id, thread_hash, val0, (int)val1); |
break; |
case UDEBUG_EVENT_STOP: |
printf("stop event\n"); |
printf("waiting for resume\n"); |
while (paused) { |
usleep(1000000); |
fibril_yield(); |
printf("."); |
} |
printf("resumed\n"); |
break; |
case UDEBUG_EVENT_NEW_THREAD: |
event_new_thread(val0); |
break; |
352,6 → 365,8 |
{ |
fid_t fid; |
|
thash = thread_hash; |
|
fid = fibril_create(trace_loop, (void *)thread_hash); |
if (fid == 0) { |
printf("Warning: Failed creating fibril\n"); |
364,6 → 379,7 |
int taskid; |
int i; |
int rc; |
int c; |
|
printf("Syscall Tracer\n"); |
printf("Press 'c' to connect\n"); |
394,7 → 410,18 |
thread_trace_start(thread_hash_buf[i]); |
} |
|
getchar(); |
while(1) { |
c = getchar(); |
if (c == 'q') break; |
if (c == 'p') { |
paused = 1; |
rc = debug_stop(phoneid, thash); |
printf("stop -> %d\n", rc); |
} |
if (c == 'r') { |
paused = 0; |
} |
} |
|
printf("terminate debugging session...\n"); |
abort_trace = 1; |
413,6 → 440,7 |
oper_t *o; |
|
next_thread_id = 1; |
paused = 0; |
|
proto_init(); |
|