Changeset 80d8885 in mainline for uspace/srv/logger/namespace.c


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

Set levels for individual contexts

File:
1 edited

Legend:

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

    r32b26cf7 r80d8885  
    7171        if (context >= namespace->context_count) {
    7272                fibril_mutex_unlock(&namespace->guard);
     73                fprintf(stderr, "Invalid context!\n");
    7374                return LVL_FATAL;
    7475        }
     
    265266}
    266267
     268int namespace_change_context_level(logging_namespace_t *namespace, const char *context, log_level_t new_level)
     269{
     270        if (new_level >= LVL_LIMIT)
     271                return ERANGE;
     272
     273        int rc;
     274        fibril_mutex_lock(&namespace->guard);
     275        for (size_t i = 0; i < namespace->context_count; i++) {
     276                if (str_cmp(namespace->context[i].name, context) == 0) {
     277                        namespace->context[i].level = new_level;
     278                        rc = EOK;
     279                        fibril_condvar_broadcast(&namespace->level_changed_cv);
     280                        goto leave;
     281                }
     282        }
     283        rc =  ENOENT;
     284
     285leave:
     286        fibril_mutex_unlock(&namespace->guard);
     287        return rc;
     288}
     289
    267290void namespace_wait_for_reader_change(logging_namespace_t *namespace, bool *has_reader_now)
    268291{
    269292        fibril_mutex_lock(&namespace->guard);
    270         log_level_t previous_level = namespace->level;
    271         while (previous_level == namespace->level) {
    272                 fibril_condvar_wait(&namespace->level_changed_cv, &namespace->guard);
    273         }
     293        // FIXME: properly watch for state change
     294        fibril_condvar_wait(&namespace->level_changed_cv, &namespace->guard);
    274295        *has_reader_now = true;
    275296        fibril_mutex_unlock(&namespace->guard);
Note: See TracChangeset for help on using the changeset viewer.