m_interval_node = info.interval_node_path;
if ((m_node_handle = open(m_data_node.c_str(), O_RDWR)) < 0) {
- ERR("accel handle open fail for accel processor, error:%s\n", strerror(errno));
+ _ERRNO(errno, _E, "accel handle open fail for accel processor");
throw ENXIO;
}
try {
instance = new _sensor;
} catch (std::exception &e) {
- ERR("Failed to create %s sensor device, exception: %s", name, e.what());
+ ERR("Failed to create %s sensor device (%s)", name, e.what());
return;
} catch (int err) {
- ERR("Failed to create %s sensor device, err: %d, cause: %s", name, err, strerror(err));
+ _ERRNO(err, _E, "Failed to create %s sensor device", name);
return;
}
m_enable_node = info.enable_node_path;
if ((m_node_handle = open(m_data_node.c_str(), O_RDWR)) < 0) {
- ERR("accel handle open fail for accel processor, error:%s", strerror(errno));
+ _ERRNO(errno, _E, "proxi handle open fail for proxi device");
throw ENXIO;
}
int len = read(m_node_handle, &proxi_event, sizeof(proxi_event));
if (len == -1) {
- DBG("read(m_node_handle) is error:%s", strerror(errno));
+ _ERRNO(errno, _D, "Failed to read from m_node_handle[%d]", m_node_handle);
return false;
}
#define _I INFO
#define _D DBG
+#define _ERRNO(errno, tag, fmt, arg...) do { \
+ char buf[1024]; \
+ char *error = strerror_r(errno, buf, 1024); \
+ if (!error) { \
+ _E("Failed to strerror_r()"); \
+ break; \
+ } \
+ tag(fmt" (%s[%d])", ##arg, error, errno); \
+ } while (0)
+
#if defined(_DEBUG)
# define warn_if(expr, fmt, arg...) do { \
if(expr) { \