Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset f039dba in mainline for uspace/srv/logger/writer.c


Ignore:
Timestamp:
2012-08-17T09:57:27Z (9 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master
Children:
b1912b0c
Parents:
f72ae3b
Message:

Logger also works with hierarchy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/logger/writer.c

    rf72ae3b rf039dba  
    4949
    5050
    51 static logger_toplevel_log_t *handle_create_toplevel_log(void)
     51static logger_log_t *handle_create_log(sysarg_t parent)
    5252{
    5353        void *name;
     
    5656                return NULL;
    5757
    58         logger_toplevel_log_t *log = find_or_create_toplevel_log(name);
     58        logger_log_t *log = find_or_create_log(name, parent);
    5959
    6060        free(name);
     
    6363}
    6464
    65 static int handle_receive_message(sysarg_t toplevel_log_id, sysarg_t log_id, sysarg_t level)
     65static int handle_receive_message(sysarg_t log_id, sysarg_t level)
    6666{
    67         logger_toplevel_log_t *log = find_toplevel_log(toplevel_log_id);
     67        logger_log_t *log = find_log_by_id(log_id);
    6868        if (log == NULL)
    69                 return ENOENT;
    70 
    71         if (log_id > log->sublog_count)
    7269                return ENOENT;
    7370
     
    7774                return rc;
    7875
    79         if (!shall_log_message(log, log_id, level)) {
     76        if (!shall_log_message(log, level)) {
    8077                free(message);
    8178                return EOK;
    8279        }
    8380
    84         printf("[%s/%s] %s: %s\n",
    85             log->name, log->sublogs[log_id].name,
    86             log_level_str(level),
     81        printf("[%s] %s: %s\n",
     82            log->full_name, log_level_str(level),
    8783            (const char *) message);
    8884
     
    9086
    9187        return EOK;
    92 }
    93 
    94 static int handle_create_sub_log(sysarg_t toplevel_log_id, sysarg_t *log_id)
    95 {
    96         logger_toplevel_log_t *log = find_toplevel_log(toplevel_log_id);
    97         if (log == NULL)
    98                 return ENOENT;
    99 
    100         void *name;
    101         int rc = async_data_write_accept(&name, true, 0, 0, 0, NULL);
    102         if (rc != EOK)
    103                 return rc;
    104 
    105         rc = add_sub_log(log, name, log_id);
    106 
    107         free(name);
    108 
    109         return rc;
    11088}
    11189
     
    125103
    126104                switch (IPC_GET_IMETHOD(call)) {
    127                 case LOGGER_WRITER_CREATE_TOPLEVEL_LOG: {
    128                         logger_toplevel_log_t *log = handle_create_toplevel_log();
     105                case LOGGER_WRITER_CREATE_LOG: {
     106                        logger_log_t *log = handle_create_log(IPC_GET_ARG1(call));
    129107                        if (log == NULL) {
    130108                                async_answer_0(callid, ENOMEM);
     
    136114                case LOGGER_WRITER_MESSAGE: {
    137115                        int rc = handle_receive_message(IPC_GET_ARG1(call),
    138                             IPC_GET_ARG2(call), IPC_GET_ARG3(call));
     116                            IPC_GET_ARG2(call));
    139117                        async_answer_0(callid, rc);
    140                         break;
    141                 }
    142                 case LOGGER_WRITER_CREATE_SUB_LOG: {
    143                         sysarg_t log_id;
    144                         int rc = handle_create_sub_log(IPC_GET_ARG1(call), &log_id);
    145                         async_answer_1(callid, rc, log_id);
    146118                        break;
    147119                }
Note: See TracChangeset for help on using the changeset viewer.