Changeset 494f417 in mainline for uspace/srv/logger


Ignore:
Timestamp:
2012-08-16T11:58:46Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7034b443
Parents:
eab3d04
Message:

Allow changing level of individual namespaces

Location:
uspace/srv/logger
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/logger/logger.h

    reab3d04 r494f417  
    5454void namespace_writer_detach(logging_namespace_t *);
    5555
     56int namespace_change_level(logging_namespace_t *, log_level_t);
     57
    5658void namespace_wait_for_reader_change(logging_namespace_t *, bool *);
    5759bool namespace_has_reader(logging_namespace_t *, log_level_t);
  • uspace/srv/logger/main.c

    reab3d04 r494f417  
    4848#include "logger.h"
    4949
     50static int handle_namespace_level_change(sysarg_t new_level)
     51{
     52        void *namespace_name;
     53        int rc = async_data_write_accept(&namespace_name, true, 0, 0, 0, NULL);
     54        if (rc != EOK) {
     55                return rc;
     56        }
     57
     58        logging_namespace_t *namespace = namespace_writer_attach((const char *) namespace_name);
     59        free(namespace_name);
     60        if (namespace == NULL)
     61                return ENOENT;
     62
     63        rc = namespace_change_level(namespace, (log_level_t) new_level);
     64        namespace_writer_detach(namespace);
     65
     66        return rc;
     67}
     68
    5069static void connection_handler_control(void)
    5170{
     
    6786                case LOGGER_CTL_SET_DEFAULT_LEVEL:
    6887                        rc = set_default_logging_level(IPC_GET_ARG1(call));
     88                        async_answer_0(callid, rc);
     89                        break;
     90                case LOGGER_CTL_SET_NAMESPACE_LEVEL:
     91                        rc = handle_namespace_level_change(IPC_GET_ARG1(call));
    6992                        async_answer_0(callid, rc);
    7093                        break;
  • uspace/srv/logger/namespace.c

    reab3d04 r494f417  
    3434#include <str.h>
    3535#include <stdio.h>
     36#include <errno.h>
    3637#include "logger.h"
    3738
     
    198199}
    199200
     201int namespace_change_level(logging_namespace_t *namespace, log_level_t level)
     202{
     203        if (level >= LVL_LIMIT)
     204                return ERANGE;
     205
     206        fibril_mutex_lock(&namespace->guard);
     207        namespace->level = level;
     208        fibril_condvar_broadcast(&namespace->level_changed_cv);
     209        fibril_mutex_unlock(&namespace->guard);
     210
     211        return EOK;
     212}
     213
     214
    200215bool namespace_has_reader(logging_namespace_t *namespace, log_level_t level)
    201216{
Note: See TracChangeset for help on using the changeset viewer.