From 8223a289727bbda353bd7129512daf00d46d898c Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Thu, 20 Jul 2017 17:36:31 -0700 Subject: C API: Added logging macros --- host/lib/utils/log_c.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 host/lib/utils/log_c.cpp (limited to 'host/lib/utils/log_c.cpp') diff --git a/host/lib/utils/log_c.cpp b/host/lib/utils/log_c.cpp new file mode 100644 index 000000000..bd74a4ecc --- /dev/null +++ b/host/lib/utils/log_c.cpp @@ -0,0 +1,71 @@ +/* + * Copyright 2017 Ettus Research (National Instruments Corp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + + +void UHD_API _uhd_log( + const uhd_log_severity_level_t log_level, + const char *filename, + const int lineno, + const char *component, + const char *format, + ... +) { + int size = 0; + char *c_str = NULL; + va_list ap; + + /* figure out size */ + va_start(ap, format); + size = vsnprintf(c_str, size, format, ap); + va_end(ap); + + if (size < 0) { + return; + } + + /* trailing '\0' */ + size++; + c_str = (char *)malloc(size); + if (!c_str) { + return; + } + + va_start(ap, format); + size = vsnprintf(c_str, size, format, ap); + if (size < 0) { + goto out_free; + } + va_end(ap); + + try { + uhd::_log::log( + static_cast(log_level), + filename, + unsigned(lineno), + component, + boost::this_thread::get_id() + ) << c_str; + } catch (...) {} + +out_free: + free(c_str); + return; +} -- cgit v1.2.3