void xenbus_dev_verror(device_t dev, int err, const char *fmt, va_list ap) { int ret; unsigned int len; char *printf_buffer = NULL, *path_buffer = NULL; #define PRINTF_BUFFER_SIZE 4096 printf_buffer = malloc(PRINTF_BUFFER_SIZE,M_XENBUS, M_WAITOK); len = sprintf(printf_buffer, "%i ", err); ret = vsnprintf(printf_buffer+len, PRINTF_BUFFER_SIZE-len, fmt, ap); KASSERT(len + ret <= PRINTF_BUFFER_SIZE-1, ("xenbus error message too big")); device_printf(dev, "Error %s\n", printf_buffer); path_buffer = error_path(dev); if (path_buffer == NULL) { printf("xenbus: failed to write error node for %s (%s)\n", xenbus_get_node(dev), printf_buffer); goto fail; } if (xs_write(XST_NIL, path_buffer, "error", printf_buffer) != 0) { printf("xenbus: failed to write error node for %s (%s)\n", xenbus_get_node(dev), printf_buffer); goto fail; } fail: if (printf_buffer) free(printf_buffer,M_XENBUS); if (path_buffer) free(path_buffer,M_XENBUS); }
bool check_extensions(int count , char* files[]){ for (int i = NUM_ARGS +1; i < count ; i++){ std::string tmp = files[i]; boost::filesystem::path error_path(tmp); std::string extension = error_path.extension().c_str(); int txt = extension.compare(".txt"); int csv = extension.compare(".csv"); int CSV = extension.compare(".CSV"); bool filetype_ok = false; if (!txt) { filetype_ok = true; } if (!csv) { filetype_ok = true; } if (!CSV) { filetype_ok = true; } if (!filetype_ok) { std::cerr << "Filetype? " << files[i]<<'\t'<<i << '\t' << NUM_ARGS << std::endl; return false; } } return true; }
static void _dev_error(struct xenbus_device *dev, int err, const char *fmt, va_list ap) { int ret; unsigned int len; char *printf_buffer = NULL, *path_buffer = NULL; #define PRINTF_BUFFER_SIZE 4096 printf_buffer = malloc(PRINTF_BUFFER_SIZE, M_DEVBUF, M_NOWAIT); if (printf_buffer == NULL) goto fail; len = snprintf(printf_buffer, PRINTF_BUFFER_SIZE, "%i ", -err); ret = vsnprintf(printf_buffer+len, PRINTF_BUFFER_SIZE-len, fmt, ap); KASSERT(len + ret < PRINTF_BUFFER_SIZE); dev->xbusd_has_error = 1; path_buffer = error_path(dev); if (path_buffer == NULL) { printk("xenbus: failed to write error node for %s (%s)\n", dev->xbusd_path, printf_buffer); goto fail; } if (xenbus_write(NULL, path_buffer, "error", printf_buffer) != 0) { printk("xenbus: failed to write error node for %s (%s)\n", dev->xbusd_path, printf_buffer); goto fail; } fail: if (printf_buffer) free(printf_buffer, M_DEVBUF); if (path_buffer) free(path_buffer, M_DEVBUF); }
static void xenbus_va_dev_error(struct xenbus_device *dev, int err, const char *fmt, va_list ap) { int ret; unsigned int len; char *printf_buffer = NULL; char *path_buffer = NULL; #define PRINTF_BUFFER_SIZE 4096 printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_KERNEL); if (printf_buffer == NULL) goto fail; len = sprintf(printf_buffer, "%i ", -err); ret = vsnprintf(printf_buffer+len, PRINTF_BUFFER_SIZE-len, fmt, ap); BUG_ON(len + ret > PRINTF_BUFFER_SIZE-1); dev_err(&dev->dev, "%s\n", printf_buffer); path_buffer = error_path(dev); if (path_buffer == NULL) { dev_err(&dev->dev, "failed to write error node for %s (%s)\n", dev->nodename, printf_buffer); goto fail; } if (xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer) != 0) { dev_err(&dev->dev, "failed to write error node for %s (%s)\n", dev->nodename, printf_buffer); goto fail; } fail: kfree(printf_buffer); kfree(path_buffer); }