From 37acb9a97cd3ff034f529b78739f93707877855c Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 16 Jan 2019 11:12:56 +0100 Subject: mg2d: add a context variable to control the log level Simpler to use than overriding the log callback. API bump. --- libmg2d.v | 2 +- mg2d.c | 3 +++ mg2d.h | 10 +++++++++- mg2d_test.c | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libmg2d.v b/libmg2d.v index ec37512..96151a5 100644 --- a/libmg2d.v +++ b/libmg2d.v @@ -1,4 +1,4 @@ -LIBMG2D_4 { +LIBMG2D_5 { global: mg2d_*; local: *; }; diff --git a/mg2d.c b/mg2d.c index 6b94def..886ef27 100644 --- a/mg2d.c +++ b/mg2d.c @@ -570,6 +570,8 @@ static int mg_levels_alloc(MG2DContext *ctx, size_t domain_size) static void log_default_callback(const MG2DContext *ctx, int level, const char *fmt, va_list vl) { + if (level > ctx->log_level) + return; vfprintf(stderr, fmt, vl); } @@ -623,6 +625,7 @@ MG2DContext *mg2d_solver_alloc(size_t domain_size) ctx->nb_relax_pre = 1; ctx->nb_relax_post = 1; ctx->log_callback = log_default_callback; + ctx->log_level = MG2D_LOG_INFO; ctx->nb_threads = 1; ctx->u = priv->root->solver->u; diff --git a/mg2d.h b/mg2d.h index 834e717..a587a18 100644 --- a/mg2d.h +++ b/mg2d.h @@ -168,7 +168,9 @@ typedef struct MG2DContext { /** * A callback that will be used to print diagnostic messages. * - * Defaults to fprintf(stderr, ...) + * The default implementation prints to stderr. + * + * May be set to NULL to disable logging. */ void (*log_callback)(const struct MG2DContext *ctx, int level, const char *fmt, va_list); @@ -272,6 +274,12 @@ typedef struct MG2DContext { * Time-stepping factor to use for relaxation. */ double cfl_factor; + + /** + * Maximum level of messages printed by the default logging callback. Has no + * effect when log_callback is overridden. + */ + enum MG2DLogLevel log_level; } MG2DContext; /** diff --git a/mg2d_test.c b/mg2d_test.c index 9b55963..c04e824 100644 --- a/mg2d_test.c +++ b/mg2d_test.c @@ -69,6 +69,7 @@ int main(int argc, char **argv) ctx->nb_relax_post = 2; ctx->tol = TOL; ctx->nb_threads = 1; + ctx->log_level = MG2D_LOG_VERBOSE; { MG2DBoundary *bnd = ctx->boundaries[MG2D_BOUNDARY_0L]; -- cgit v1.2.3