diff options
Diffstat (limited to 'gnuradio-runtime/lib/vmcircbuf.cc')
-rw-r--r-- | gnuradio-runtime/lib/vmcircbuf.cc | 100 |
1 files changed, 47 insertions, 53 deletions
diff --git a/gnuradio-runtime/lib/vmcircbuf.cc b/gnuradio-runtime/lib/vmcircbuf.cc index 4af5262671..9a80d18a57 100644 --- a/gnuradio-runtime/lib/vmcircbuf.cc +++ b/gnuradio-runtime/lib/vmcircbuf.cc @@ -51,15 +51,16 @@ vmcircbuf_factory* vmcircbuf_sysconfig::get_default_factory() std::vector<gr::vmcircbuf_factory*> all = all_factories(); + logger_ptr logger, debug_logger; + gr::configure_default_loggers(logger, debug_logger, "vmcircbuf_sysconfig"); + char name[1024]; if (gr::vmcircbuf_prefs::get(FACTORY_PREF_KEY, name, sizeof(name)) >= 0) { for (unsigned int i = 0; i < all.size(); i++) { if (strncmp(name, all[i]->name(), strlen(all[i]->name())) == 0) { s_default_factory = all[i]; - if (verbose) - fprintf(stderr, - "gr::vmcircbuf_sysconfig: using %s\n", - s_default_factory->name()); + GR_LOG_INFO(debug_logger, + boost::format("Using %s") % s_default_factory->name()); return s_default_factory; } } @@ -68,8 +69,7 @@ vmcircbuf_factory* vmcircbuf_sysconfig::get_default_factory() // either we don't have a default, or the default named is not in our // list of factories. Find the first factory that works. - if (verbose) - fprintf(stderr, "gr::vmcircbuf_sysconfig: finding a working factory...\n"); + GR_LOG_INFO(debug_logger, "finding a working factory..."); for (unsigned int i = 0; i < all.size(); i++) { if (test_factory(all[i], verbose)) { @@ -79,7 +79,7 @@ vmcircbuf_factory* vmcircbuf_sysconfig::get_default_factory() } // We're screwed! - fprintf(stderr, "gr::vmcircbuf_sysconfig: unable to find a working factory!\n"); + GR_LOG_ERROR(logger, "unable to find a working factory!"); throw std::runtime_error("gr::vmcircbuf_sysconfig"); } @@ -115,36 +115,34 @@ static void init_buffer(const vmcircbuf& c, int counter, int size) p[i] = counter + i; } -static bool -check_mapping(const vmcircbuf& c, int counter, int size, const char* msg, bool verbose) +static bool check_mapping( + const vmcircbuf& c, int counter, int size, const char* msg, logger_ptr debug_logger) { bool ok = true; - if (verbose) - fprintf(stderr, "... %s", msg); + GR_LOG_INFO(debug_logger, msg); unsigned int* p1 = (unsigned int*)c.pointer_to_first_copy(); unsigned int* p2 = (unsigned int*)c.pointer_to_second_copy(); - // fprintf(stderr, "p1 = %p, p2 = %p\n", p1, p2); - for (unsigned int i = 0; i < size / sizeof(int); i++) { if (p1[i] != counter + i) { ok = false; - if (verbose) - fprintf(stderr, " p1[%d] == %u, expected %u\n", i, p1[i], counter + i); + GR_LOG_INFO(debug_logger, + boost::format("p1[%d] == %u, expected %u") % i % p1[i] % + (counter + i)); break; } if (p2[i] != counter + i) { - if (verbose) - fprintf(stderr, " p2[%d] == %u, expected %u\n", i, p2[i], counter + i); + GR_LOG_ERROR(debug_logger, + boost::format("p1[%d] == %u, expected %u") % i % p2[i] % + (counter + i)); ok = false; break; } } - - if (ok && verbose) { - fprintf(stderr, " OK\n"); + if (ok) { + GR_LOG_INFO(debug_logger, "mapping OK"); } return ok; } @@ -170,17 +168,17 @@ test_a_bunch(vmcircbuf_factory* factory, int n, int size, int* start_ptr, bool v std::vector<std::unique_ptr<vmcircbuf>> c(n); int cum_size = 0; + logger_ptr logger, debug_logger; + gr::configure_default_loggers(logger, debug_logger, "gr::test_a_bunch"); + for (int i = 0; i < n; i++) { counter[i] = *start_ptr; *start_ptr += size; if ((c[i] = std::unique_ptr<vmcircbuf>(factory->make(size))) == 0) { - if (verbose) - fprintf( - stderr, - "Failed to allocate gr::vmcircbuf number %d of size %d (cum = %s)\n", - i + 1, - size, - memsize(cum_size)); + GR_LOG_INFO(debug_logger, + boost::format("Failed to allocate gr::vmcircbuf " + "number %d of size %d (cum = %s)") % + (i + 1) % size % memsize(cum_size)) return false; } init_buffer(*c[i], counter[i], size); @@ -190,38 +188,41 @@ test_a_bunch(vmcircbuf_factory* factory, int n, int size, int* start_ptr, bool v for (int i = 0; i < n; i++) { std::string msg = str(boost::format("test_a_bunch_%dx%s[%d]") % n % memsize(size) % i); - ok &= check_mapping(*c[i], counter[i], size, msg.c_str(), verbose); + ok = check_mapping(*c[i], counter[i], size, msg.c_str(), debug_logger) && ok; } return ok; } static bool standard_tests(vmcircbuf_factory* f, int verbose) { - if (verbose >= 1) - fprintf(stderr, "Testing %s...\n", f->name()); + logger_ptr logger, debug_logger; + gr::configure_default_loggers(logger, debug_logger, "standard_tests"); + + GR_LOG_INFO(debug_logger, boost::format("Testing %s...") % f->name()); bool v = verbose >= 2; int granularity = f->granularity(); int start = 0; bool ok = true; - ok &= test_a_bunch(f, 1, 1 * granularity, &start, v); // 1 x 4KB = 4KB + ok = test_a_bunch(f, 1, 1 * granularity, &start, v) && ok; // 1 x 4KB = 4KB if (ok) { - ok &= test_a_bunch(f, 64, 4 * granularity, &start, v); // 64 x 16KB = 1MB - ok &= test_a_bunch(f, 4, 4 * (1L << 20), &start, v); // 4 x 4MB = 16MB - // ok &= test_a_bunch(f, 256, 256 * (1L << 10), &start, v); // 256 x 256KB = - // 64MB + ok = test_a_bunch(f, 64, 4 * granularity, &start, v) && ok; // 64 x 16KB = 1MB + ok = test_a_bunch(f, 4, 4 * (1L << 20), &start, v) && ok; // 4 x 4MB = 16MB + // ok = test_a_bunch(f, 256, 256 * (1L << 10), &start, v) && ok; // 256 x 256KB + // = 64MB } - if (verbose >= 1) - fprintf(stderr, "....... %s: %s", f->name(), ok ? "OK\n" : "Doesn't work\n"); - + GR_LOG_INFO(debug_logger, + boost::format("%s: %s") % f->name() % (ok ? "OK" : "Doesn't work")) return ok; } bool vmcircbuf_sysconfig::test_factory(vmcircbuf_factory* f, int verbose) { + logger_ptr logger, debug_logger; + gr::configure_default_loggers(logger, debug_logger, "gr::vmcircbuf_sysconfig"); // Install local signal handlers for SIGSEGV and SIGBUS. // If something goes wrong, these signals may be invoked. @@ -238,22 +239,15 @@ bool vmcircbuf_sysconfig::test_factory(vmcircbuf_factory* f, int verbose) try { return standard_tests(f, verbose); } catch (gr::signal& sig) { - if (verbose) { - fprintf(stderr, "....... %s: %s", f->name(), "Doesn't work\n"); - fprintf(stderr, - "gr::vmcircbuf_factory::test_factory (%s): caught %s\n", - f->name(), - sig.name().c_str()); - return false; - } + GR_LOG_INFO(debug_logger, + boost::format("vmcircbuf_factory::test_factory (%s): caught %s") % + f->name() % sig.name().c_str()) + return false; } catch (...) { - if (verbose) { - fprintf(stderr, "....... %s: %s", f->name(), "Doesn't work\n"); - fprintf(stderr, - "gr::vmcircbuf_factory::test_factory (%s): some kind of uncaught " - "exception\n", - f->name()); - } + GR_LOG_WARN(debug_logger, + boost::format("vmcircbuf_factory::test_factory (%s) some " + "kind of uncaught exception.") % + f->name()) return false; } return false; // never gets here. shut compiler up. |