Changeset 3cf862f in mainline for uspace/srv/logger/logs.c


Ignore:
Timestamp:
2012-08-17T10:41:54Z (12 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f5da671
Parents:
bf9ac4e8
Message:

Add basic locking to logger

File:
1 edited

Legend:

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

    rbf9ac4e8 r3cf862f  
    6262}
    6363
    64 logger_log_t *find_or_create_log(const char *name, sysarg_t parent_id)
     64logger_log_t *find_or_create_log_and_acquire(const char *name, sysarg_t parent_id)
    6565{
    6666        logger_log_t *result = NULL;
     
    8888        }
    8989        result->parent = parent;
     90        fibril_mutex_initialize(&result->guard);
    9091
    9192        link_initialize(&result->link);
    9293
     94        fibril_mutex_lock(&result->guard);
     95
    9396        list_append(&result->link, &log_list);
    94 
    9597leave:
    9698        fibril_mutex_unlock(&log_list_guard);
     
    99101}
    100102
    101 logger_log_t *find_log_by_name(const char *name)
     103logger_log_t *find_log_by_name_and_acquire(const char *name)
    102104{
    103105        logger_log_t *result = NULL;
     
    107109                logger_log_t *log = list_get_instance(it, logger_log_t, link);
    108110                if (str_cmp(log->full_name, name) == 0) {
     111                        fibril_mutex_lock(&log->guard);
    109112                        result = log;
    110113                        break;
     
    116119}
    117120
    118 logger_log_t *find_log_by_id(sysarg_t id)
     121logger_log_t *find_log_by_id_and_acquire(sysarg_t id)
    119122{
    120123        logger_log_t *result = NULL;
     
    124127                logger_log_t *log = list_get_instance(it, logger_log_t, link);
    125128                if ((sysarg_t) log == id) {
     129                        fibril_mutex_lock(&log->guard);
    126130                        result = log;
    127131                        break;
     
    147151bool shall_log_message(logger_log_t *log, log_level_t level)
    148152{
    149         return level <= get_actual_log_level(log);
     153        fibril_mutex_lock(&log_list_guard);
     154        bool result = level <= get_actual_log_level(log);
     155        fibril_mutex_unlock(&log_list_guard);
     156        return result;
     157}
     158
     159void log_release(logger_log_t *log)
     160{
     161        assert(fibril_mutex_is_locked(&log->guard));
     162        fibril_mutex_unlock(&log->guard);
    150163}
    151164
Note: See TracChangeset for help on using the changeset viewer.