- File:
-
- 1 edited
-
libcfa/src/concurrency/iocall.cfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/iocall.cfa
r0a92c78 r5877b3e 108 108 109 109 extern ssize_t read (int fd, void *buf, size_t count); 110 111 extern ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags);112 extern ssize_t tee(int fd_in, int fd_out, size_t len, unsigned int flags);113 110 } 114 111 … … 332 329 } 333 330 331 334 332 ssize_t cfa_read(int fd, void *buf, size_t count) { 335 333 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READ) … … 351 349 352 350 (*sqe){ IORING_OP_WRITE, fd, buf, count, 0 }; 353 354 __submit_wait355 #endif356 }357 358 ssize_t cfa_splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags) {359 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_SPLICE)360 return splice( fd_in, off_in, fd_out, off_out, len, flags );361 #else362 __submit_prelude363 364 (*sqe){ IORING_OP_SPLICE, fd_out, 0p, len, off_out };365 sqe->splice_fd_in = fd_in;366 sqe->splice_off_in = off_in;367 sqe->splice_flags = flags;368 369 __submit_wait370 #endif371 }372 373 ssize_t cfa_tee(int fd_in, int fd_out, size_t len, unsigned int flags) {374 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_TEE)375 return tee( fd_in, fd_out, len, flags );376 #else377 __submit_prelude378 379 (*sqe){ IORING_OP_TEE, fd_out, 0p, len, 0 };380 sqe->splice_fd_in = fd_in;381 sqe->splice_flags = flags;382 351 383 352 __submit_wait … … 484 453 #define _CFA_IO_FEATURE_IORING_OP_WRITE , 485 454 return IS_DEFINED(IORING_OP_WRITE); 486 487 if( /*func == (fptr_t)splice || */488 func == (fptr_t)cfa_splice )489 #define _CFA_IO_FEATURE_IORING_OP_SPLICE ,490 return IS_DEFINED(IORING_OP_SPLICE);491 492 if( /*func == (fptr_t)tee || */493 func == (fptr_t)cfa_tee )494 #define _CFA_IO_FEATURE_IORING_OP_TEE ,495 return IS_DEFINED(IORING_OP_TEE);496 455 #endif 497 456
Note:
See TracChangeset
for help on using the changeset viewer.