projects
/
osmocom-bb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix against corrupted output in parallel logging
[osmocom-bb.git]
/
src
/
logging.c
diff --git
a/src/logging.c
b/src/logging.c
index
8fd2e00
..
948b2a6
100644
(file)
--- a/
src/logging.c
+++ b/
src/logging.c
@@
-261,7
+261,7
@@
static void _logp(int subsys, int level, char *file, int line,
* in undefined state. Since _output uses vsnprintf and it may
* be called several times, we have to pass a copy of ap. */
va_copy(bp, ap);
* in undefined state. Since _output uses vsnprintf and it may
* be called several times, we have to pass a copy of ap. */
va_copy(bp, ap);
- _output(tar, subsys, level, file, line, cont, format,
a
p);
+ _output(tar, subsys, level, file, line, cont, format,
b
p);
va_end(bp);
}
}
va_end(bp);
}
}
@@
-475,8
+475,9
@@
int log_target_file_reopen(struct log_target *target)
}
/* This generates the logging command string for VTY. */
}
/* This generates the logging command string for VTY. */
-const char *log_vty_command_string(const struct log_info *info)
+const char *log_vty_command_string(const struct log_info *
unused_
info)
{
{
+ struct log_info *info = osmo_log_info;
int len = 0, offset = 0, ret, i, rem;
int size = strlen("logging level () ()") + 1;
char *str;
int len = 0, offset = 0, ret, i, rem;
int size = strlen("logging level () ()") + 1;
char *str;
@@
-549,8
+550,9
@@
err:
}
/* This generates the logging command description for VTY. */
}
/* This generates the logging command description for VTY. */
-const char *log_vty_command_description(const struct log_info *info)
+const char *log_vty_command_description(const struct log_info *
unused_
info)
{
{
+ struct log_info *info = osmo_log_info;
char *str;
int i, ret, len = 0, offset = 0, rem;
unsigned int size =
char *str;
int i, ret, len = 0, offset = 0, rem;
unsigned int size =
@@
-619,7
+621,7
@@
int log_init(const struct log_info *inf, void *ctx)
osmo_log_info->num_cat_user = inf->num_cat;
/* total number = number of user cat + library cat */
osmo_log_info->num_cat_user = inf->num_cat;
/* total number = number of user cat + library cat */
- osmo_log_info->num_cat = inf->num_cat +
OSMO_NUM_DLIB
;
+ osmo_log_info->num_cat = inf->num_cat +
ARRAY_SIZE(internal_cat)
;
osmo_log_info->cat = talloc_zero_array(osmo_log_info,
struct log_info_cat,
osmo_log_info->cat = talloc_zero_array(osmo_log_info,
struct log_info_cat,
@@
-637,4
+639,11
@@
int log_init(const struct log_info *inf, void *ctx)
}
/* copy over the library part */
}
/* copy over the library part */
+ for (i = 0; i < ARRAY_SIZE(internal_cat); i++) {
+ unsigned int cn = osmo_log_info->num_cat_user + i;
+ memcpy(&osmo_log_info->cat[cn],
+ &internal_cat[i], sizeof(struct log_info_cat));
+ }
+
+ return 0;
}
}