Lines Matching refs:h

81 static int usb_ffs_write(usb_handle* h, const void* data, int len) {  in usb_ffs_write()  argument
82 D("about to write (fd=%d, len=%d)", h->bulk_in.get(), len); in usb_ffs_write()
88 int n = write(h->bulk_in.get(), buf, write_len); in usb_ffs_write()
90 D("ERROR: fd = %d, n = %d: %s", h->bulk_in.get(), n, strerror(errno)); in usb_ffs_write()
97 D("[ done fd=%d ]", h->bulk_in.get()); in usb_ffs_write()
101 static int usb_ffs_read(usb_handle* h, void* data, int len, bool allow_partial) { in usb_ffs_read() argument
102 D("about to read (fd=%d, len=%d)", h->bulk_out.get(), len); in usb_ffs_read()
109 int n = read(h->bulk_out.get(), buf, read_len); in usb_ffs_read()
111 D("ERROR: fd = %d, n = %d: %s", h->bulk_out.get(), n, strerror(errno)); in usb_ffs_read()
128 D("[ done fd=%d ]", h->bulk_out.get()); in usb_ffs_read()
132 static int usb_ffs_do_aio(usb_handle* h, const void* data, int len, bool read) { in usb_ffs_do_aio() argument
133 aio_block* aiob = read ? &h->read_aiob : &h->write_aiob; in usb_ffs_do_aio()
135 int num_bufs = len / h->io_size + (len % h->io_size == 0 ? 0 : 1); in usb_ffs_do_aio()
144 int buf_len = std::min(len, static_cast<int>(h->io_size)); in usb_ffs_do_aio()
188 static int usb_ffs_aio_read(usb_handle* h, void* data, int len, bool /* allow_partial */) { in usb_ffs_aio_read() argument
189 return usb_ffs_do_aio(h, data, len, true); in usb_ffs_aio_read()
192 static int usb_ffs_aio_write(usb_handle* h, const void* data, int len) { in usb_ffs_aio_write() argument
193 return usb_ffs_do_aio(h, data, len, false); in usb_ffs_aio_write()
196 static void usb_ffs_close(usb_handle* h) { in usb_ffs_close() argument
199 h->bulk_out.reset(); in usb_ffs_close()
200 h->bulk_in.reset(); in usb_ffs_close()
203 h->lock.lock(); in usb_ffs_close()
204 h->open_new_connection = true; in usb_ffs_close()
205 h->lock.unlock(); in usb_ffs_close()
206 h->notify.notify_one(); in usb_ffs_close()
207 if (h->aio_type == AIOType::IO_URING) { in usb_ffs_close()
208 exit_io_uring_ffs(h); in usb_ffs_close()
227 auto h = std::make_unique<usb_handle>(); in create_usb_handle() local
230 init_io_uring_ffs(h.get(), num_bufs); in create_usb_handle()
231 h->aio_type = AIOType::IO_URING; in create_usb_handle()
236 h->write = usb_ffs_write; in create_usb_handle()
237 h->read = usb_ffs_read; in create_usb_handle()
238 h->aio_type = AIOType::SYNC_IO; in create_usb_handle()
241 h->write = usb_ffs_aio_write; in create_usb_handle()
242 h->read = usb_ffs_aio_read; in create_usb_handle()
243 aio_block_init(&h->read_aiob, num_bufs); in create_usb_handle()
244 aio_block_init(&h->write_aiob, num_bufs); in create_usb_handle()
245 h->aio_type = AIOType::AIO; in create_usb_handle()
248 h->io_size = io_size; in create_usb_handle()
249 h->close = usb_ffs_close; in create_usb_handle()
250 return h; in create_usb_handle()