Changeset 793cce15 in mainline for uspace/lib/c/generic/io/log.c


Ignore:
Timestamp:
2012-08-16T14:22:56Z (12 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
32b26cf7
Parents:
9a53e00
Message:

Add logging contexts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/io/log.c

    r9a53e00 r793cce15  
    8686}
    8787
    88 static int logger_message(async_sess_t *session, log_level_t level, const char *message)
     88static int logger_message(async_sess_t *session, log_context_t ctx, log_level_t level, const char *message)
    8989{
    9090        async_exch_t *exchange = async_exchange_begin(session);
     
    9393        }
    9494
    95         aid_t reg_msg = async_send_1(exchange, LOGGER_MESSAGE, level, NULL);
     95        aid_t reg_msg = async_send_2(exchange, LOGGER_MESSAGE,
     96            ctx, level, NULL);
    9697        int rc = async_data_write_start(exchange, message, str_size(message));
    9798        sysarg_t reg_msg_rc;
     
    241242}
    242243
    243 bool _log_shall_record(log_level_t level)
     244/** Create logging context.
     245 *
     246 * This function always returns a valid context.
     247 */
     248log_context_t log_context_create(const char *name)
     249{
     250        async_exch_t *exchange = async_exchange_begin(logger_session);
     251        if (exchange == NULL)
     252                return LOG_CONTEXT_DEFAULT;
     253
     254        ipc_call_t answer;
     255        aid_t reg_msg = async_send_0(exchange, LOGGER_CREATE_CONTEXT, &answer);
     256        int rc = async_data_write_start(exchange, name, str_size(name));
     257        sysarg_t reg_msg_rc;
     258        async_wait_for(reg_msg, &reg_msg_rc);
     259
     260        async_exchange_end(exchange);
     261
     262        if ((rc != EOK) || (reg_msg_rc != EOK))
     263                return LOG_CONTEXT_DEFAULT;
     264
     265        return IPC_GET_ARG1(answer);
     266}
     267
     268bool _log_shall_record(log_context_t context, log_level_t level)
    244269{
    245270        return get_current_observed_level() >= level;
     
    253278 * @param fmt           Format string (no traling newline).
    254279 */
    255 void _log_msg(log_level_t level, const char *fmt, ...)
     280void _log_ctx_msg(log_context_t ctx, log_level_t level, const char *fmt, ...)
    256281{
    257282        va_list args;
    258283
    259284        va_start(args, fmt);
    260         _log_msgv(level, fmt, args);
     285        _log_ctx_msgv(ctx, level, fmt, args);
    261286        va_end(args);
    262287}
     
    269294 * @param fmt           Format string (no trailing newline)
    270295 */
    271 void _log_msgv(log_level_t level, const char *fmt, va_list args)
     296void _log_ctx_msgv(log_context_t ctx, log_level_t level, const char *fmt, va_list args)
    272297{
    273298        assert(level < LVL_LIMIT);
     
    283308
    284309        vsnprintf(message_buffer, MESSAGE_BUFFER_SIZE, fmt, args);
    285         logger_message(logger_session, level, message_buffer);
     310        logger_message(logger_session, ctx, level, message_buffer);
    286311}
    287312
Note: See TracChangeset for help on using the changeset viewer.