Changes in uspace/app/trace/trace.c [ffa2c8ef:f019cc07] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/trace/trace.c
rffa2c8ef rf019cc07 36 36 #include <stdlib.h> 37 37 #include <unistd.h> 38 #include <ipc/ipc.h> 38 39 #include <fibril.h> 39 40 #include <errno.h> … … 42 43 #include <task.h> 43 44 #include <mem.h> 44 #include <str .h>45 #include <string.h> 45 46 #include <bool.h> 46 47 #include <loader/loader.h> 47 48 #include <io/console.h> 48 49 #include <io/keycode.h> 49 #include <fibril_synch.h> 50 #include <sys/types.h> 51 #include <sys/typefmt.h> 50 #include <fibril_sync.h> 52 51 53 52 #include <libc.h> … … 148 147 int rc; 149 148 150 rc = async_connect_kbox(task_id);149 rc = ipc_connect_kbox(task_id); 151 150 152 151 if (rc == ENOTSUP) { … … 160 159 if (rc < 0) { 161 160 printf("Error connecting\n"); 162 printf("ipc_connect_task(% " PRIu64 ") -> %d ", task_id, rc);161 printf("ipc_connect_task(%lld) -> %d ", task_id, rc); 163 162 return rc; 164 163 } … … 199 198 printf("Threads:"); 200 199 for (i = 0; i < n_threads; i++) { 201 printf(" [%d] (hash %p)", 1 + i, (void *)thread_hash_buf[i]);202 } 203 printf("\ntotal of % zu threads\n", tb_needed / sizeof(uintptr_t));200 printf(" [%d] (hash 0x%lx)", 1+i, thread_hash_buf[i]); 201 } 202 printf("\ntotal of %u threads\n", tb_needed / sizeof(uintptr_t)); 204 203 205 204 return 0; … … 223 222 case V_HASH: 224 223 case V_PTR: 225 printf(" %p", (void *)val);224 printf("0x%08lx", val); 226 225 break; 227 226 … … 247 246 case V_CHAR: 248 247 if (sval >= 0x20 && sval < 0x7f) { 249 printf("'%c'", (char)sval);248 printf("'%c'", sval); 250 249 } else { 251 250 switch (sval) { … … 256 255 case '\t': printf("'\\t'"); break; 257 256 case '\\': printf("'\\\\'"); break; 258 default: printf("'\\x%02 " PRIxn "'", val); break;257 default: printf("'\\x%02lX'", val); break; 259 258 } 260 259 } … … 276 275 277 276 putchar('('); 278 if (n > 0) printf("% " PRIun, sc_args[0]);277 if (n > 0) printf("%ld", sc_args[0]); 279 278 for (i = 1; i < n; i++) { 280 printf(", % " PRIun, sc_args[i]);279 printf(", %ld", sc_args[i]); 281 280 } 282 281 putchar(')'); … … 286 285 { 287 286 ipc_call_t call; 288 sysarg_t phoneid;287 ipcarg_t phoneid; 289 288 290 289 if (sc_rc == (sysarg_t) IPC_CALLRET_FATAL || … … 294 293 phoneid = sc_args[0]; 295 294 296 IPC_SET_ IMETHOD(call, sc_args[1]);295 IPC_SET_METHOD(call, sc_args[1]); 297 296 IPC_SET_ARG1(call, sc_args[2]); 298 297 IPC_SET_ARG2(call, sc_args[3]); … … 330 329 phoneidx = sc_args[0]; 331 330 332 IPC_SET_ IMETHOD(question, sc_args[1]);331 IPC_SET_METHOD(question, sc_args[1]); 333 332 IPC_SET_ARG1(question, sc_args[2]); 334 333 IPC_SET_ARG2(question, sc_args[3]); … … 488 487 { 489 488 async_serialize_start(); 490 printf("New thread, hash %p\n", (void *)hash);489 printf("New thread, hash 0x%lx\n", hash); 491 490 async_serialize_end(); 492 491 … … 509 508 } 510 509 511 printf("Start tracing thread [%u] (hash %p).\n", 512 thread_id, (void *) thread_hash); 510 printf("Start tracing thread [%d] (hash 0x%lx).\n", thread_id, thread_hash); 513 511 514 512 while (!abort_trace) { … … 516 514 fibril_mutex_lock(&state_lock); 517 515 if (paused) { 518 printf("Thread [% u] paused. Press R to resume.\n",516 printf("Thread [%d] paused. Press R to resume.\n", 519 517 thread_id); 520 518 … … 522 520 fibril_condvar_wait(&state_cv, &state_lock); 523 521 524 printf("Thread [% u] resumed.\n", thread_id);522 printf("Thread [%d] resumed.\n", thread_id); 525 523 } 526 524 fibril_mutex_unlock(&state_lock); … … 554 552 break; 555 553 case UDEBUG_EVENT_THREAD_E: 556 printf("Thread %" PRIun "exited.\n", val0);554 printf("Thread 0x%lx exited.\n", val0); 557 555 fibril_mutex_lock(&state_lock); 558 556 abort_trace = true; … … 585 583 } 586 584 587 static loader_t *preload_task(const char *path, char * *argv,585 static loader_t *preload_task(const char *path, char *const argv[], 588 586 task_id_t *task_id) 589 587 { … … 591 589 int rc; 592 590 593 /* Spawn a program loader */ 591 /* Spawn a program loader */ 594 592 ldr = loader_connect(); 595 593 if (ldr == NULL) … … 607 605 608 606 /* Send arguments */ 609 rc = loader_set_args(ldr, (const char **)argv);607 rc = loader_set_args(ldr, argv); 610 608 if (rc != EOK) 611 609 goto error; … … 744 742 abort_trace = true; 745 743 udebug_end(phoneid); 746 async_hangup(phoneid);744 ipc_hangup(phoneid); 747 745 748 746 ipcp_cleanup(); … … 870 868 } 871 869 872 static display_mask_t parse_display_mask(c onst char *text)870 static display_mask_t parse_display_mask(char *text) 873 871 { 874 872 display_mask_t dm; 875 const char *c = text; 876 873 char *c; 874 875 c = text; 876 877 877 while (*c) { 878 878 switch (*c) { 879 case 't': 880 dm = dm | DM_THREAD; 881 break; 882 case 's': 883 dm = dm | DM_SYSCALL; 884 break; 885 case 'i': 886 dm = dm | DM_IPC; 887 break; 888 case 'p': 889 dm = dm | DM_SYSTEM | DM_USER; 890 break; 879 case 't': dm = dm | DM_THREAD; break; 880 case 's': dm = dm | DM_SYSCALL; break; 881 case 'i': dm = dm | DM_IPC; break; 882 case 'p': dm = dm | DM_SYSTEM | DM_USER; break; 891 883 default: 892 884 printf("Unexpected event type '%c'.\n", *c); 893 885 exit(1); 894 886 } 895 887 896 888 ++c; 897 889 } 898 890 899 891 return dm; 900 892 } … … 902 894 static int parse_args(int argc, char *argv[]) 903 895 { 896 char *arg; 904 897 char *err_p; 905 898 906 899 task_id = 0; 907 900 908 --argc; 909 ++argv; 901 --argc; ++argv; 910 902 911 903 while (argc > 0) { 912 char *arg = *argv;904 arg = *argv; 913 905 if (arg[0] == '+') { 914 906 display_mask = parse_display_mask(&arg[1]); … … 916 908 if (arg[1] == 't') { 917 909 /* Trace an already running task */ 918 --argc; 919 ++argv; 910 --argc; ++argv; 920 911 task_id = strtol(*argv, &err_p, 10); 921 912 task_ldr = NULL; … … 927 918 } 928 919 } else { 929 printf("Uknown option '% c'\n", arg[0]);920 printf("Uknown option '%s'\n", arg[0]); 930 921 print_syntax(); 931 922 return -1; … … 934 925 break; 935 926 } 936 937 --argc; 938 ++argv; 927 928 --argc; ++argv; 939 929 } 940 930 941 931 if (task_id != 0) { 942 if (argc == 0) 943 return 0; 932 if (argc == 0) return 0; 944 933 printf("Extra arguments\n"); 945 934 print_syntax(); … … 955 944 /* Preload the specified program file. */ 956 945 printf("Spawning '%s' with arguments:\n", *argv); 957 958 char **cp = argv; 959 while (*cp) 960 printf("'%s'\n", *cp++); 961 946 { 947 char **cp = argv; 948 while (*cp) printf("'%s'\n", *cp++); 949 } 962 950 task_ldr = preload_task(*argv, argv, &task_id); 963 951 task_wait_for = true; … … 984 972 rc = connect_task(task_id); 985 973 if (rc < 0) { 986 printf("Failed connecting to task % " PRIu64 ".\n", task_id);974 printf("Failed connecting to task %lld.\n", task_id); 987 975 return 1; 988 976 } 989 977 990 printf("Connected to task % " PRIu64 ".\n", task_id);978 printf("Connected to task %lld.\n", task_id); 991 979 992 980 if (task_ldr != NULL)
Note:
See TracChangeset
for help on using the changeset viewer.