Changes in uspace/srv/taskmon/taskmon.c [92c1680:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/taskmon/taskmon.c
r92c1680 r9d58539 1 1 /* 2 * Copyright (c) 201 3Jiri Svoboda2 * Copyright (c) 2010 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 41 41 #include <task.h> 42 42 #include <event.h> 43 #include <ipc/corecfg.h>44 #include <loc.h>45 43 #include <macros.h> 46 44 #include <errno.h> … … 49 47 #define NAME "taskmon" 50 48 51 static bool write_core_files;52 53 static void corecfg_client_conn(ipc_callid_t , ipc_call_t *, void *);54 55 49 static void fault_event(ipc_callid_t callid, ipc_call_t *call) 56 50 { 57 51 const char *fname; 58 52 char *s_taskid; 59 char *dump_fname;60 53 int rc; 61 54 … … 76 69 fname = "/app/taskdump"; 77 70 78 if (write_core_files) { 79 if (asprintf(&dump_fname, "/data/core%" PRIu64, taskid) < 0) { 80 printf("Memory allocation failed.\n"); 81 return; 82 } 71 #ifdef CONFIG_WRITE_CORE_FILES 72 char *dump_fname; 83 73 84 printf(NAME ": Executing %s -c %s -t %s\n", fname, dump_fname, s_taskid); 85 rc = task_spawnl(NULL, fname, fname, "-c", dump_fname, "-t", s_taskid, 86 NULL); 87 } else { 88 printf(NAME ": Executing %s -t %s\n", fname, s_taskid); 89 rc = task_spawnl(NULL, fname, fname, "-t", s_taskid, NULL); 74 if (asprintf(&dump_fname, "/data/core%" PRIu64, taskid) < 0) { 75 printf("Memory allocation failed.\n"); 76 return; 90 77 } 91 78 79 printf(NAME ": Executing %s -c %s -t %s\n", fname, dump_fname, s_taskid); 80 rc = task_spawnl(NULL, fname, fname, "-c", dump_fname, "-t", s_taskid, 81 NULL); 82 #else 83 printf(NAME ": Executing %s -t %s\n", fname, s_taskid); 84 rc = task_spawnl(NULL, fname, fname, "-t", s_taskid, NULL); 85 #endif 92 86 if (rc != EOK) { 93 87 printf("%s: Error spawning %s (%s).\n", NAME, fname, 94 88 str_error(rc)); 95 }96 }97 98 static void corecfg_get_enable_srv(ipc_callid_t iid, ipc_call_t *icall)99 {100 async_answer_1(iid, EOK, write_core_files);101 }102 103 static void corecfg_set_enable_srv(ipc_callid_t iid, ipc_call_t *icall)104 {105 write_core_files = IPC_GET_ARG1(*icall);106 async_answer_0(iid, EOK);107 }108 109 static void corecfg_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)110 {111 /* Accept the connection */112 async_answer_0(iid, EOK);113 114 while (true) {115 ipc_call_t call;116 ipc_callid_t callid = async_get_call(&call);117 sysarg_t method = IPC_GET_IMETHOD(call);118 119 if (!method) {120 /* The other side has hung up */121 async_answer_0(callid, EOK);122 return;123 }124 125 switch (method) {126 case CORECFG_GET_ENABLE:127 corecfg_get_enable_srv(callid, &call);128 break;129 case CORECFG_SET_ENABLE:130 corecfg_set_enable_srv(callid, &call);131 break;132 }133 89 } 134 90 } … … 138 94 printf("%s: Task Monitoring Service\n", NAME); 139 95 140 #ifdef CONFIG_WRITE_CORE_FILES141 write_core_files = true;142 #else143 write_core_files = false;144 #endif145 96 if (event_subscribe(EVENT_FAULT, 0) != EOK) { 146 97 printf("%s: Error registering fault notifications.\n", NAME); 147 return -1;148 }149 150 async_set_client_connection(corecfg_client_conn);151 152 int rc = loc_server_register(NAME);153 if (rc != EOK) {154 printf("%s: Failed registering server (%d).\n",155 NAME, rc);156 return -1;157 }158 159 service_id_t sid;160 rc = loc_service_register(SERVICE_NAME_CORECFG, &sid);161 if (rc != EOK) {162 printf("%s: Failed registering service (%d).\n",163 NAME, rc);164 98 return -1; 165 99 }
Note:
See TracChangeset
for help on using the changeset viewer.