Changeset 3cf862f in mainline
- Timestamp:
- 2012-08-17T10:41:54Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f5da671
- Parents:
- bf9ac4e8
- Location:
- uspace/srv/logger
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified uspace/srv/logger/ctl.c ¶
rbf9ac4e8 r3cf862f 51 51 } 52 52 53 logger_log_t *log = find_log_by_name (full_name);53 logger_log_t *log = find_log_by_name_and_acquire(full_name); 54 54 free(full_name); 55 55 if (log == NULL) … … 57 57 58 58 log->logged_level = new_level; 59 60 log_release(log); 59 61 60 62 return EOK; -
TabularUnified uspace/srv/logger/initlvl.c ¶
rbf9ac4e8 r3cf862f 61 61 return; 62 62 63 logger_log_t *log = find_or_create_log (key, 0);63 logger_log_t *log = find_or_create_log_and_acquire(key, 0); 64 64 if (log == NULL) 65 65 return; 66 66 67 67 log->logged_level = level; 68 69 log_release(log); 68 70 } 69 71 -
TabularUnified uspace/srv/logger/logger.h ¶
rbf9ac4e8 r3cf862f 57 57 link_t link; 58 58 59 fibril_mutex_t guard; 60 59 61 char *name; 60 62 char *full_name; … … 64 66 }; 65 67 66 logger_log_t *find_log_by_name (const char *name);67 logger_log_t *find_or_create_log (const char *name, sysarg_t parent);68 logger_log_t *find_log_by_id (sysarg_t);68 logger_log_t *find_log_by_name_and_acquire(const char *name); 69 logger_log_t *find_or_create_log_and_acquire(const char *name, sysarg_t parent); 70 logger_log_t *find_log_by_id_and_acquire(sysarg_t); 69 71 bool shall_log_message(logger_log_t *, log_level_t); 72 void log_release(logger_log_t *); 70 73 71 74 log_level_t get_default_logging_level(void); -
TabularUnified uspace/srv/logger/logs.c ¶
rbf9ac4e8 r3cf862f 62 62 } 63 63 64 logger_log_t *find_or_create_log (const char *name, sysarg_t parent_id)64 logger_log_t *find_or_create_log_and_acquire(const char *name, sysarg_t parent_id) 65 65 { 66 66 logger_log_t *result = NULL; … … 88 88 } 89 89 result->parent = parent; 90 fibril_mutex_initialize(&result->guard); 90 91 91 92 link_initialize(&result->link); 92 93 94 fibril_mutex_lock(&result->guard); 95 93 96 list_append(&result->link, &log_list); 94 95 97 leave: 96 98 fibril_mutex_unlock(&log_list_guard); … … 99 101 } 100 102 101 logger_log_t *find_log_by_name (const char *name)103 logger_log_t *find_log_by_name_and_acquire(const char *name) 102 104 { 103 105 logger_log_t *result = NULL; … … 107 109 logger_log_t *log = list_get_instance(it, logger_log_t, link); 108 110 if (str_cmp(log->full_name, name) == 0) { 111 fibril_mutex_lock(&log->guard); 109 112 result = log; 110 113 break; … … 116 119 } 117 120 118 logger_log_t *find_log_by_id (sysarg_t id)121 logger_log_t *find_log_by_id_and_acquire(sysarg_t id) 119 122 { 120 123 logger_log_t *result = NULL; … … 124 127 logger_log_t *log = list_get_instance(it, logger_log_t, link); 125 128 if ((sysarg_t) log == id) { 129 fibril_mutex_lock(&log->guard); 126 130 result = log; 127 131 break; … … 147 151 bool shall_log_message(logger_log_t *log, log_level_t level) 148 152 { 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 159 void log_release(logger_log_t *log) 160 { 161 assert(fibril_mutex_is_locked(&log->guard)); 162 fibril_mutex_unlock(&log->guard); 150 163 } 151 164 -
TabularUnified uspace/srv/logger/writer.c ¶
rbf9ac4e8 r3cf862f 56 56 return NULL; 57 57 58 logger_log_t *log = find_or_create_log (name, parent);58 logger_log_t *log = find_or_create_log_and_acquire(name, parent); 59 59 60 60 free(name); … … 65 65 static int handle_receive_message(sysarg_t log_id, sysarg_t level) 66 66 { 67 logger_log_t *log = find_log_by_id (log_id);67 logger_log_t *log = find_log_by_id_and_acquire(log_id); 68 68 if (log == NULL) 69 69 return ENOENT; 70 70 71 void *message ;71 void *message = NULL; 72 72 int rc = async_data_write_accept(&message, true, 1, 0, 0, NULL); 73 73 if (rc != EOK) 74 return rc;74 goto leave; 75 75 76 76 if (!shall_log_message(log, level)) { 77 free(message);78 return EOK;77 rc = EOK; 78 goto leave; 79 79 } 80 80 … … 83 83 (const char *) message); 84 84 85 rc = EOK; 86 87 leave: 88 log_release(log); 85 89 free(message); 86 90 87 return EOK;91 return rc; 88 92 } 89 93 … … 109 113 break; 110 114 } 115 log_release(log); 111 116 async_answer_1(callid, EOK, (sysarg_t) log); 112 117 break;
Note:
See TracChangeset
for help on using the changeset viewer.