Changeset 371bd7d in mainline for uspace/app/trace
- Timestamp:
- 2010-03-27T09:22:17Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 36a75a2
- Parents:
- cd82bb1 (diff), eaf22d4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app/trace
- Files:
-
- 2 deleted
- 8 edited
-
Makefile (modified) (1 diff)
-
Makefile.build (deleted)
-
Makefile.common (deleted)
-
errors.h (modified) (1 diff)
-
ipc_desc.h (modified) (1 diff)
-
ipcp.c (modified) (4 diffs)
-
proto.c (modified) (3 diffs)
-
proto.h (modified) (3 diffs)
-
syscalls.h (modified) (1 diff)
-
trace.c (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/trace/Makefile
rcd82bb1 r371bd7d 28 28 # 29 29 30 include Makefile.common 30 USPACE_PREFIX = ../.. 31 BINARY = trace 31 32 32 .PHONY: all clean 33 SOURCES = \ 34 trace.c \ 35 syscalls.c \ 36 ipcp.c \ 37 ipc_desc.c \ 38 proto.c \ 39 errors.c 33 40 34 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS) 35 -[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV) 36 $(MAKE) -f Makefile.build 37 38 clean: 39 rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm 40 find . -name '*.o' -follow -exec rm \{\} \; 41 include $(USPACE_PREFIX)/Makefile.common -
uspace/app/trace/errors.h
rcd82bb1 r371bd7d 37 37 38 38 typedef struct { 39 c har *name;/**< Error value name (Exx) */40 c har *desc;/**< Error description */39 const char *name; /**< Error value name (Exx) */ 40 const char *desc; /**< Error description */ 41 41 } err_desc_t; 42 42 -
uspace/app/trace/ipc_desc.h
rcd82bb1 r371bd7d 38 38 typedef struct { 39 39 int number; 40 c har *name;40 const char *name; 41 41 } ipc_m_desc_t; 42 42 -
uspace/app/trace/ipcp.c
rcd82bb1 r371bd7d 36 36 #include <stdlib.h> 37 37 #include <adt/hash_table.h> 38 #include <sys/typefmt.h> 38 39 39 40 #include "ipc_desc.h" … … 200 201 201 202 if ((display_mask & DM_IPC) != 0) { 202 printf("Call ID: 0x%lx, phone: %d, proto: %s, method: ", hash,203 printf("Call ID: %p, phone: %d, proto: %s, method: ", hash, 203 204 phone, (proto ? proto->name : "n/a")); 204 205 ipc_m_print(proto, IPC_GET_METHOD(*call)); 205 printf(" args: (%lu, %lu, %lu, %lu, %lu)\n", args[1], args[2], 206 printf(" args: (%" PRIuIPCARG ", %" PRIuIPCARG ", %" PRIuIPCARG 207 ", %" PRIuIPCARG ", %" PRIuIPCARG ")\n", args[1], args[2], 206 208 args[3], args[4], args[5]); 207 209 } … … 279 281 280 282 if ((display_mask & DM_IPC) != 0) { 281 printf("Response to 0x%lx: retval=%ld, args = (%lu, %lu, %lu, %lu, %lu)\n", 282 hash, retval, IPC_GET_ARG1(*answer), 283 IPC_GET_ARG2(*answer), IPC_GET_ARG3(*answer), 284 IPC_GET_ARG4(*answer), IPC_GET_ARG5(*answer)); 283 printf("Response to %p: retval=%ld, args = (%" PRIuIPCARG 284 ", %" PRIuIPCARG ", %" PRIuIPCARG ", %" PRIuIPCARG 285 ", %" PRIuIPCARG ")\n", 286 hash, retval, IPC_GET_ARG1(*answer), 287 IPC_GET_ARG2(*answer), IPC_GET_ARG3(*answer), 288 IPC_GET_ARG4(*answer), IPC_GET_ARG5(*answer)); 285 289 } 286 290 … … 336 340 /* Not a response */ 337 341 if ((display_mask & DM_IPC) != 0) { 338 printf("Not a response (hash 0x%lx)\n", hash);342 printf("Not a response (hash %p)\n", hash); 339 343 } 340 344 return; -
uspace/app/trace/proto.c
rcd82bb1 r371bd7d 157 157 } 158 158 159 static void proto_struct_init(proto_t *proto, c har *name)159 static void proto_struct_init(proto_t *proto, const char *name) 160 160 { 161 161 proto->name = name; … … 164 164 } 165 165 166 proto_t *proto_new(c har *name)166 proto_t *proto_new(const char *name) 167 167 { 168 168 proto_t *p; … … 206 206 } 207 207 208 static void oper_struct_init(oper_t *oper, c har *name)208 static void oper_struct_init(oper_t *oper, const char *name) 209 209 { 210 210 oper->name = name; 211 211 } 212 212 213 oper_t *oper_new(c har *name, int argc, val_type_t *arg_types,213 oper_t *oper_new(const char *name, int argc, val_type_t *arg_types, 214 214 val_type_t rv_type, int respc, val_type_t *resp_types) 215 215 { -
uspace/app/trace/proto.h
rcd82bb1 r371bd7d 43 43 44 44 typedef struct { 45 c har *name;45 const char *name; 46 46 47 47 int argc; … … 56 56 typedef struct { 57 57 /** Protocol name */ 58 c har *name;58 const char *name; 59 59 60 60 /** Maps method number to operation */ … … 70 70 void proto_register(int srv, proto_t *proto); 71 71 proto_t *proto_get_by_srv(int srv); 72 proto_t *proto_new(c har *name);72 proto_t *proto_new(const char *name); 73 73 void proto_delete(proto_t *proto); 74 74 void proto_add_oper(proto_t *proto, int method, oper_t *oper); 75 75 oper_t *proto_get_oper(proto_t *proto, int method); 76 76 77 oper_t *oper_new(c har *name, int argc, val_type_t *arg_types,77 oper_t *oper_new(const char *name, int argc, val_type_t *arg_types, 78 78 val_type_t rv_type, int respc, val_type_t *resp_types); 79 79 -
uspace/app/trace/syscalls.h
rcd82bb1 r371bd7d 39 39 40 40 typedef struct { 41 c har *name;41 const char *name; 42 42 int n_args; 43 43 val_type_t rv_type; -
uspace/app/trace/trace.c
rcd82bb1 r371bd7d 43 43 #include <task.h> 44 44 #include <mem.h> 45 #include <str ing.h>45 #include <str.h> 46 46 #include <bool.h> 47 47 #include <loader/loader.h> 48 48 #include <io/console.h> 49 49 #include <io/keycode.h> 50 #include <fibril_sync.h> 50 #include <fibril_synch.h> 51 #include <sys/types.h> 52 #include <sys/typefmt.h> 51 53 52 54 #include <libc.h> … … 159 161 if (rc < 0) { 160 162 printf("Error connecting\n"); 161 printf("ipc_connect_task(% lld) -> %d ", task_id, rc);163 printf("ipc_connect_task(%" PRIdTASKID ") -> %d ", task_id, rc); 162 164 return rc; 163 165 } … … 198 200 printf("Threads:"); 199 201 for (i = 0; i < n_threads; i++) { 200 printf(" [%d] (hash 0x%lx)", 1+i, thread_hash_buf[i]);202 printf(" [%d] (hash %p)", 1+i, thread_hash_buf[i]); 201 203 } 202 204 printf("\ntotal of %u threads\n", tb_needed / sizeof(uintptr_t)); … … 222 224 case V_HASH: 223 225 case V_PTR: 224 printf(" 0x%08lx", val);226 printf("%p", val); 225 227 break; 226 228 … … 275 277 276 278 putchar('('); 277 if (n > 0) printf("% ld", sc_args[0]);279 if (n > 0) printf("%" PRIdSYSARG, sc_args[0]); 278 280 for (i = 1; i < n; i++) { 279 printf(", % ld", sc_args[i]);281 printf(", %" PRIdSYSARG, sc_args[i]); 280 282 } 281 283 putchar(')'); … … 508 510 } 509 511 510 printf("Start tracing thread [%d] (hash 0x%lx).\n", thread_id, thread_hash);512 printf("Start tracing thread [%d] (hash %p).\n", thread_id, thread_hash); 511 513 512 514 while (!abort_trace) { … … 552 554 break; 553 555 case UDEBUG_EVENT_THREAD_E: 554 printf("Thread 0x%lxexited.\n", val0);556 printf("Thread %p exited.\n", val0); 555 557 fibril_mutex_lock(&state_lock); 556 558 abort_trace = true; … … 583 585 } 584 586 585 static loader_t *preload_task(const char *path, char * const argv[],587 static loader_t *preload_task(const char *path, char **argv, 586 588 task_id_t *task_id) 587 589 { … … 589 591 int rc; 590 592 591 /* Spawn a program loader */ 593 /* Spawn a program loader */ 592 594 ldr = loader_connect(); 593 595 if (ldr == NULL) … … 605 607 606 608 /* Send arguments */ 607 rc = loader_set_args(ldr, argv);609 rc = loader_set_args(ldr, (const char **) argv); 608 610 if (rc != EOK) 609 611 goto error; … … 868 870 } 869 871 870 static display_mask_t parse_display_mask(c har *text)872 static display_mask_t parse_display_mask(const char *text) 871 873 { 872 874 display_mask_t dm; 873 char *c; 874 875 c = text; 876 875 const char *c = text; 876 877 877 while (*c) { 878 878 switch (*c) { 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; 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; 883 891 default: 884 892 printf("Unexpected event type '%c'.\n", *c); 885 893 exit(1); 886 894 } 887 895 888 896 ++c; 889 897 } 890 898 891 899 return dm; 892 900 } … … 894 902 static int parse_args(int argc, char *argv[]) 895 903 { 896 char *arg;897 904 char *err_p; 898 905 899 906 task_id = 0; 900 907 901 --argc; ++argv; 908 --argc; 909 ++argv; 902 910 903 911 while (argc > 0) { 904 arg = *argv;912 char *arg = *argv; 905 913 if (arg[0] == '+') { 906 914 display_mask = parse_display_mask(&arg[1]); … … 908 916 if (arg[1] == 't') { 909 917 /* Trace an already running task */ 910 --argc; ++argv; 918 --argc; 919 ++argv; 911 920 task_id = strtol(*argv, &err_p, 10); 912 921 task_ldr = NULL; … … 925 934 break; 926 935 } 927 928 --argc; ++argv; 936 937 --argc; 938 ++argv; 929 939 } 930 940 931 941 if (task_id != 0) { 932 if (argc == 0) return 0; 942 if (argc == 0) 943 return 0; 933 944 printf("Extra arguments\n"); 934 945 print_syntax(); … … 944 955 /* Preload the specified program file. */ 945 956 printf("Spawning '%s' with arguments:\n", *argv); 946 { 947 char **cp = argv; 948 while (*cp) printf("'%s'\n", *cp++); 949 } 957 958 char **cp = argv; 959 while (*cp) 960 printf("'%s'\n", *cp++); 961 950 962 task_ldr = preload_task(*argv, argv, &task_id); 951 963 task_wait_for = true; … … 972 984 rc = connect_task(task_id); 973 985 if (rc < 0) { 974 printf("Failed connecting to task % lld.\n", task_id);986 printf("Failed connecting to task %" PRIdTASKID ".\n", task_id); 975 987 return 1; 976 988 } 977 989 978 printf("Connected to task % lld.\n", task_id);990 printf("Connected to task %" PRIdTASKID ".\n", task_id); 979 991 980 992 if (task_ldr != NULL)
Note:
See TracChangeset
for help on using the changeset viewer.
