Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/taskmon/taskmon.c

    r7e752b2 r444a54e  
    4444#include <macros.h>
    4545#include <errno.h>
    46 #include <str_error.h>
    4746
    4847#define NAME  "taskmon"
     
    5049static void fault_event(ipc_callid_t callid, ipc_call_t *call)
    5150{
    52         const char *fname;
     51        char *argv[6];
     52        char *fname;
     53        char *dump_fname;
    5354        char *s_taskid;
    54         int rc;
     55        char **s;
    5556
    5657        task_id_t taskid;
     
    6061        thread = IPC_GET_ARG3(*call);
    6162
    62         if (asprintf(&s_taskid, "%" PRIu64, taskid) < 0) {
     63        if (asprintf(&s_taskid, "%" PRIuTASKID, taskid) < 0) {
    6364                printf("Memory allocation failed.\n");
    6465                return;
    6566        }
    6667
    67         printf(NAME ": Task %" PRIu64 " fault in thread %p.\n", taskid,
    68             (void *) thread);
    69 
    70         fname = "/app/taskdump";
    71 
    72 #ifdef CONFIG_WRITE_CORE_FILES
    73         char *dump_fname;
    74 
    75         if (asprintf(&dump_fname, "/data/core%" PRIu64, taskid) < 0) {
     68        if (asprintf(&dump_fname, "/data/core%" PRIuTASKID, taskid) < 0) {
    7669                printf("Memory allocation failed.\n");
    7770                return;
    7871        }
    7972
    80         printf(NAME ": Executing %s -c %s -t %s\n", fname, dump_fname, s_taskid);
    81         rc = task_spawnl(NULL, fname, fname, "-c", dump_fname, "-t", s_taskid,
    82             NULL);
     73        printf(NAME ": Task %" PRIuTASKID " fault in thread %p.\n", taskid, thread);
     74
     75#ifdef CONFIG_WRITE_CORE_FILES
     76        argv[0] = "/app/taskdump";
     77        argv[1] = "-c";
     78        argv[2] = dump_fname;
     79        argv[3] = "-t";
     80        argv[4] = s_taskid;
     81        argv[5] = NULL;
    8382#else
    84         printf(NAME ": Executing %s -t %s\n", fname, s_taskid);
    85         rc = task_spawnl(NULL, fname, fname, "-t", s_taskid, NULL);
     83        argv[0] = "/app/taskdump";
     84        argv[1] = "-t";
     85        argv[2] = s_taskid;
     86        argv[3] = NULL;
    8687#endif
    87         if (rc != EOK) {
    88                 printf("%s: Error spawning %s (%s).\n", NAME, fname,
    89                     str_error(rc));
     88        fname = argv[0];
     89
     90        printf(NAME ": Executing");
     91        s = argv;
     92        while (*s != NULL) {
     93                printf(" %s", *s);
     94                ++s;
    9095        }
     96        putchar('\n');
     97
     98        if (!task_spawn(fname, argv))
     99                printf(NAME ": Error spawning taskdump.\n", fname);
    91100}
    92101
Note: See TracChangeset for help on using the changeset viewer.