Ignore:
File:
1 edited

Legend:

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

    rffa2c8ef rd9fae235  
    3636
    3737#include <stdio.h>
     38#include <ipc/ipc.h>
    3839#include <async.h>
    3940#include <ipc/services.h>
     
    4950static void fault_event(ipc_callid_t callid, ipc_call_t *call)
    5051{
     52        const char *argv[6];
    5153        const char *fname;
     54        char *dump_fname;
    5255        char *s_taskid;
    53         int rc;
     56        const char **s;
    5457
    5558        task_id_t taskid;
     
    5962        thread = IPC_GET_ARG3(*call);
    6063
    61         if (asprintf(&s_taskid, "%" PRIu64, taskid) < 0) {
     64        if (asprintf(&s_taskid, "%" PRIuTASKID, taskid) < 0) {
    6265                printf("Memory allocation failed.\n");
    6366                return;
    6467        }
    6568
    66         printf(NAME ": Task %" PRIu64 " fault in thread %p.\n", taskid,
    67             (void *) thread);
    68 
    69         fname = "/app/taskdump";
    70 
    71 #ifdef CONFIG_WRITE_CORE_FILES
    72         char *dump_fname;
    73 
    74         if (asprintf(&dump_fname, "/data/core%" PRIu64, taskid) < 0) {
     69        if (asprintf(&dump_fname, "/data/core%" PRIuTASKID, taskid) < 0) {
    7570                printf("Memory allocation failed.\n");
    7671                return;
    7772        }
    7873
    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);
     74        printf(NAME ": Task %" PRIuTASKID " fault in thread %p.\n", taskid, thread);
     75
     76#ifdef CONFIG_WRITE_CORE_FILES
     77        argv[0] = "/app/taskdump";
     78        argv[1] = "-c";
     79        argv[2] = dump_fname;
     80        argv[3] = "-t";
     81        argv[4] = s_taskid;
     82        argv[5] = NULL;
    8283#else
    83         printf(NAME ": Executing %s -t %s\n", fname, s_taskid);
    84         rc = task_spawnl(NULL, fname, fname, "-t", s_taskid, NULL);
     84        argv[0] = "/app/taskdump";
     85        argv[1] = "-t";
     86        argv[2] = s_taskid;
     87        argv[3] = NULL;
    8588#endif
    86         if (rc != EOK) {
     89        fname = argv[0];
     90
     91        printf(NAME ": Executing");
     92       
     93        s = argv;
     94        while (*s != NULL) {
     95                printf(" %s", *s);
     96                ++s;
     97        }
     98        putchar('\n');
     99       
     100        int err;
     101        if (!task_spawn(fname, argv, &err))
    87102                printf("%s: Error spawning %s (%s).\n", NAME, fname,
    88                     str_error(rc));
    89         }
     103                    str_error(err));
    90104}
    91105
Note: See TracChangeset for help on using the changeset viewer.