Changeset a3b339b4 in mainline


Ignore:
Timestamp:
2013-04-03T20:14:16Z (11 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
220210c8
Parents:
c8830a2
Message:

Fix /app/trace

Location:
uspace/app/trace
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/trace/ipc_desc.c

    rc8830a2 ra3b339b4  
    4949        { IPC_M_DATA_READ,        "DATA_READ" },
    5050        { IPC_M_DEBUG,            "DEBUG" },
    51        
    52         /* Terminating entry */
    53         { 0, NULL }
    5451};
     52
     53size_t ipc_methods_len = sizeof(ipc_methods) / sizeof(ipc_m_desc_t);
    5554
    5655/** @}
  • uspace/app/trace/ipc_desc.h

    rc8830a2 ra3b339b4  
    4242
    4343extern ipc_m_desc_t ipc_methods[];
     44extern size_t ipc_methods_len;
    4445
    4546#endif
  • uspace/app/trace/ipcp.c

    rc8830a2 ra3b339b4  
    140140void ipcp_init(void)
    141141{
    142         ipc_m_desc_t *desc;
    143         oper_t *oper;
    144 
    145142        val_type_t arg_def[OPER_MAX_ARGS] = {
    146143                V_INTEGER,
     
    162159        proto_system = proto_new("system");
    163160
    164         desc = ipc_methods;
    165         while (desc->number != 0) {
    166                 oper = oper_new(desc->name, OPER_MAX_ARGS, arg_def, V_INTEGER,
    167                         OPER_MAX_ARGS, arg_def);
    168                 proto_add_oper(proto_system, desc->number, oper);
    169 
    170                 ++desc;
     161        for (size_t i = 0; i < ipc_methods_len; i++) {
     162                oper_t *oper = oper_new(ipc_methods[i].name, OPER_MAX_ARGS,
     163                    arg_def, V_INTEGER, OPER_MAX_ARGS, arg_def);
     164                proto_add_oper(proto_system, ipc_methods[i].number, oper);
    171165        }
    172166
  • uspace/app/trace/syscalls.c

    rc8830a2 ra3b339b4  
    4646
    4747    [SYS_TASK_GET_ID] = { "task_get_id",                1,      V_ERRNO },
     48    [SYS_TASK_SET_NAME] = { "task_set_name",            2,      V_ERRNO },
    4849    [SYS_FUTEX_SLEEP] = { "futex_sleep_timeout",        3,      V_ERRNO },
    4950    [SYS_FUTEX_WAKEUP] = { "futex_wakeup",              1,      V_ERRNO },
     
    8283};
    8384
     85const size_t syscall_desc_len = (sizeof(syscall_desc) / sizeof(sc_desc_t));
     86
    8487/** @}
    8588 */
  • uspace/app/trace/syscalls.h

    rc8830a2 ra3b339b4  
    3636#define SYSCALLS_H_
    3737
     38#include <stdbool.h>
     39#include <unistd.h>
     40
    3841#include "trace.h"
    3942
     
    4548
    4649extern const sc_desc_t syscall_desc[];
     50extern const size_t syscall_desc_len;
     51
     52static inline bool syscall_desc_defined(unsigned sc_id)
     53{
     54        return (sc_id < syscall_desc_len && syscall_desc[sc_id].name != NULL);
     55}
    4756
    4857#endif
  • uspace/app/trace/trace.c

    rc8830a2 ra3b339b4  
    136136        }
    137137
    138         free(task_ldr);
    139138        task_ldr = NULL;
    140139
     
    348347        if ((display_mask & DM_SYSCALL) != 0) {
    349348                /* Print syscall name and arguments */
    350                 printf("%s", syscall_desc[sc_id].name);
    351                 print_sc_args(sc_args, syscall_desc[sc_id].n_args);
     349                if (syscall_desc_defined(sc_id)) {
     350                        printf("%s", syscall_desc[sc_id].name);
     351                        print_sc_args(sc_args, syscall_desc[sc_id].n_args);
     352                }
     353                else {
     354                        printf("unknown_syscall<%d>", sc_id);
     355                        print_sc_args(sc_args, 6);
     356                }
    352357        }
    353358}
     
    372377        if ((display_mask & DM_SYSCALL) != 0) {
    373378                /* Print syscall return value */
    374                 rv_type = syscall_desc[sc_id].rv_type;
     379                if (syscall_desc_defined(sc_id))
     380                        rv_type = syscall_desc[sc_id].rv_type;
     381                else
     382                        rv_type = V_PTR;
    375383                print_sc_retval(sc_rc, rv_type);
    376384        }
     
    497505        ldr = loader_connect();
    498506        if (ldr == NULL)
    499                 return 0;
     507                return NULL;
    500508
    501509        /* Get task ID. */
Note: See TracChangeset for help on using the changeset viewer.