Changeset cba45af in mainline for uspace/srv/logger/ctl.c


Ignore:
Timestamp:
2012-08-16T21:01:55Z (12 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2bf781a
Parents:
e005f92
Message:

Rewrite logger (work in progress)

Major issues

  • no locking
  • no clean-up (at all)
File:
1 edited

Legend:

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

    re005f92 rcba45af  
    4343#include "logger.h"
    4444
    45 static int handle_namespace_level_change(sysarg_t new_level)
     45static int handle_toplog_level_change(sysarg_t new_level)
    4646{
    47         void *namespace_name;
    48         int rc = async_data_write_accept(&namespace_name, true, 0, 0, 0, NULL);
     47        void *top_name;
     48        int rc = async_data_write_accept(&top_name, true, 0, 0, 0, NULL);
    4949        if (rc != EOK) {
    5050                return rc;
    5151        }
    5252
    53         logging_namespace_t *namespace = namespace_writer_attach((const char *) namespace_name);
    54         free(namespace_name);
    55         if (namespace == NULL)
     53        logger_toplevel_log_t *toplog = find_or_create_toplevel_log(top_name);
     54        free(top_name);
     55        if (toplog == NULL)
    5656                return ENOENT;
    5757
    58         rc = namespace_change_level(namespace, (log_level_t) new_level);
    59         namespace_writer_detach(namespace);
     58        toplog->logged_level = new_level;
    6059
    61         return rc;
     60        return EOK;
    6261}
    6362
    64 static int handle_context_level_change(sysarg_t new_level)
     63static int handle_log_level_change(sysarg_t new_level)
    6564{
    66         void *namespace_name;
    67         int rc = async_data_write_accept(&namespace_name, true, 0, 0, 0, NULL);
     65        void *top_name;
     66        int rc = async_data_write_accept(&top_name, true, 0, 0, 0, NULL);
    6867        if (rc != EOK) {
    6968                return rc;
    7069        }
    7170
    72         logging_namespace_t *namespace = namespace_writer_attach((const char *) namespace_name);
    73         free(namespace_name);
    74         if (namespace == NULL)
     71        logger_toplevel_log_t *toplog = find_or_create_toplevel_log(top_name);
     72        free(top_name);
     73        if (toplog == NULL)
    7574                return ENOENT;
    7675
    77         void *context_name;
    78         rc = async_data_write_accept(&context_name, true, 0, 0, 0, NULL);
    79         if (rc != EOK) {
    80                 namespace_writer_detach(namespace);
     76
     77        void *log_name;
     78        rc = async_data_write_accept(&log_name, true, 0, 0, 0, NULL);
     79        if (rc != EOK)
    8180                return rc;
     81
     82        rc = ENOENT;
     83        for (size_t i = 0; i < toplog->sublog_count; i++) {
     84                if (str_cmp(toplog->sublogs[i].name, (const char *) log_name) == 0) {
     85                        toplog->sublogs[i].logged_level = new_level;
     86                        rc = EOK;
     87                        break;
     88                }
    8289        }
    8390
    84         rc = namespace_change_context_level(namespace, context_name, new_level);
    85         free(context_name);
    86         namespace_writer_detach(namespace);
     91        free(log_name);
    8792
    8893        return rc;
     
    101106                        break;
    102107
    103                 int rc;
    104 
    105108                switch (IPC_GET_IMETHOD(call)) {
    106                 case LOGGER_CTL_GET_DEFAULT_LEVEL:
    107                         async_answer_1(callid, EOK, get_default_logging_level());
    108                         break;
    109                 case LOGGER_CTL_SET_DEFAULT_LEVEL:
    110                         rc = set_default_logging_level(IPC_GET_ARG1(call));
     109                case LOGGER_CTL_SET_DEFAULT_LEVEL: {
     110                        int rc = set_default_logging_level(IPC_GET_ARG1(call));
    111111                        async_answer_0(callid, rc);
    112112                        break;
    113                 case LOGGER_CTL_SET_NAMESPACE_LEVEL:
    114                         rc = handle_namespace_level_change(IPC_GET_ARG1(call));
     113                }
     114                case LOGGER_CTL_SET_TOP_LOG_LEVEL: {
     115                        int rc = handle_toplog_level_change(IPC_GET_ARG1(call));
    115116                        async_answer_0(callid, rc);
    116117                        break;
    117                 case LOGGER_CTL_SET_CONTEXT_LEVEL:
    118                         rc = handle_context_level_change(IPC_GET_ARG1(call));
     118                }
     119                case LOGGER_CTL_SET_LOG_LEVEL: {
     120                        int rc = handle_log_level_change(IPC_GET_ARG1(call));
    119121                        async_answer_0(callid, rc);
    120122                        break;
     123                }
    121124                default:
    122125                        async_answer_0(callid, EINVAL);
Note: See TracChangeset for help on using the changeset viewer.