int file_thread_done(int thread_id) { if (file_io_mode == FILE_IO_MODE_ASYNC && aio_ctxts[thread_id].nrequests > 0) return file_wait(thread_id, aio_ctxts[thread_id].nrequests); return 0; }
int file_submit_or_wait(struct iocb *iocb, sb_file_op_t type, ssize_t len, int thread_id) { sb_aio_oper_t *oper; struct iocb *iocbp; oper = (sb_aio_oper_t *)malloc(sizeof(sb_aio_oper_t)); if (oper == NULL) { log_text(LOG_FATAL, "Failed to allocate AIO operation!"); return 1; } memcpy(&oper->iocb, iocb, sizeof(*iocb)); oper->type = type; oper->len = len; iocbp = &oper->iocb; if (io_submit(aio_ctxts[thread_id].io_ctxt, 1, &iocbp) < 1) { log_errno(LOG_FATAL, "io_submit() failed!"); return 1; } aio_ctxts[thread_id].nrequests++; if (aio_ctxts[thread_id].nrequests < file_async_backlog) return 0; return file_wait(thread_id, 1); }
static int modem_power_enable(void) { int ret; ret = file_write(MODEM_POWER_PATH, "off", 3); if (ret < 0) { #ifdef CAVAN_DEBUG error_msg("write file \"%s\"", MODEM_POWER_PATH); #endif return ret; } visual_ssleep(5); ret = file_write(MODEM_POWER_PATH, "on", 2); if (ret < 0) { #ifdef CAVAN_DEBUG error_msg("write file \"%s\"", MODEM_POWER_PATH); #endif return ret; } visual_ssleep(5); ret = file_wait(MODEM_TTY_DEVICE, "c", 10); if (ret < 0) { #ifdef CAVAN_DEBUG error_msg("modem power enable failed"); #endif return ret; } visual_ssleep(5); return set_usb_power(); }