- File:
-
- 1 edited
-
libcfa/src/concurrency/iocall.cfa (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/iocall.cfa
r5751a56 refc171d1 20 20 //============================================================================================= 21 21 22 #if defined( CFA_HAVE_LINUX_IO_URING_H)22 #if defined(HAVE_LINUX_IO_URING_H) 23 23 #include <stdint.h> 24 24 #include <linux/io_uring.h> … … 122 122 #if defined(HAVE_PREADV2) 123 123 ssize_t cfa_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) { 124 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_READV)124 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READV) 125 125 return preadv2(fd, iov, iovcnt, offset, flags); 126 126 #else … … 134 134 135 135 ssize_t cfa_preadv2_fixed(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) { 136 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_READV)136 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READV) 137 137 return preadv2(fd, iov, iovcnt, offset, flags); 138 138 #else … … 149 149 #if defined(HAVE_PWRITEV2) 150 150 ssize_t cfa_pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) { 151 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_WRITEV)151 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_WRITEV) 152 152 return pwritev2(fd, iov, iovcnt, offset, flags); 153 153 #else … … 162 162 163 163 int cfa_fsync(int fd) { 164 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_FSYNC)164 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_FSYNC) 165 165 return fsync(fd); 166 166 #else … … 174 174 175 175 int cfa_sync_file_range(int fd, int64_t offset, int64_t nbytes, unsigned int flags) { 176 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_SYNC_FILE_RANGE)176 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_SYNC_FILE_RANGE) 177 177 return sync_file_range(fd, offset, nbytes, flags); 178 178 #else … … 190 190 191 191 ssize_t cfa_sendmsg(int sockfd, const struct msghdr *msg, int flags) { 192 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_SENDMSG)192 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_SENDMSG) 193 193 return sendmsg(sockfd, msg, flags); 194 194 #else … … 203 203 204 204 ssize_t cfa_recvmsg(int sockfd, struct msghdr *msg, int flags) { 205 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_RECVMSG)205 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_RECVMSG) 206 206 return recvmsg(sockfd, msg, flags); 207 207 #else … … 216 216 217 217 ssize_t cfa_send(int sockfd, const void *buf, size_t len, int flags) { 218 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_SEND)218 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_SEND) 219 219 return send( sockfd, buf, len, flags ); 220 220 #else … … 231 231 232 232 ssize_t cfa_recv(int sockfd, void *buf, size_t len, int flags) { 233 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_RECV)233 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_RECV) 234 234 return recv( sockfd, buf, len, flags ); 235 235 #else … … 246 246 247 247 int cfa_accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags) { 248 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_ACCEPT)248 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_ACCEPT) 249 249 return accept4( sockfd, addr, addrlen, flags ); 250 250 #else … … 261 261 262 262 int cfa_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) { 263 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_CONNECT)263 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_CONNECT) 264 264 return connect( sockfd, addr, addrlen ); 265 265 #else … … 275 275 276 276 int cfa_fallocate(int fd, int mode, uint64_t offset, uint64_t len) { 277 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_FALLOCATE)277 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_FALLOCATE) 278 278 return fallocate( fd, mode, offset, len ); 279 279 #else … … 290 290 291 291 int cfa_fadvise(int fd, uint64_t offset, uint64_t len, int advice) { 292 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_FADVISE)292 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_FADVISE) 293 293 return posix_fadvise( fd, offset, len, advice ); 294 294 #else … … 305 305 306 306 int cfa_madvise(void *addr, size_t length, int advice) { 307 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_MADVISE)307 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_MADVISE) 308 308 return madvise( addr, length, advice ); 309 309 #else … … 320 320 321 321 int cfa_openat(int dirfd, const char *pathname, int flags, mode_t mode) { 322 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_OPENAT)322 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_OPENAT) 323 323 return openat( dirfd, pathname, flags, mode ); 324 324 #else … … 335 335 336 336 int cfa_close(int fd) { 337 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_CLOSE)337 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_CLOSE) 338 338 return close( fd ); 339 339 #else … … 349 349 struct statx; 350 350 int cfa_statx(int dirfd, const char *pathname, int flags, unsigned int mask, struct statx *statxbuf) { 351 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_STATX)351 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_STATX) 352 352 #if defined(__NR_statx) 353 353 return syscall( __NR_statx, dirfd, pathname, flags, mask, statxbuf ); … … 367 367 368 368 ssize_t cfa_read(int fd, void *buf, size_t count) { 369 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_READ)369 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READ) 370 370 return read( fd, buf, count ); 371 371 #else … … 379 379 380 380 ssize_t cfa_write(int fd, void *buf, size_t count) { 381 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_WRITE)381 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_WRITE) 382 382 return read( fd, buf, count ); 383 383 #else … … 391 391 392 392 ssize_t cfa_splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags) { 393 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_SPLICE)393 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_SPLICE) 394 394 return splice( fd_in, off_in, fd_out, off_out, len, flags ); 395 395 #else … … 405 405 } 406 406 407 ssize_t cfa_splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags, int in_flags, int out_flags) {408 #if !defined(CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_SPLICE)409 return splice( fd_in, off_in, fd_out, off_out, len, flags );410 #else411 __submit_prelude412 413 (*sqe){ IORING_OP_SPLICE, fd_out, 0p, len, off_out };414 sqe->splice_fd_in = fd_in;415 sqe->splice_off_in = off_in;416 sqe->splice_flags = flags | out_flags;417 sqe->flags = in_flags;418 419 __submit_wait420 #endif421 }422 423 407 ssize_t cfa_tee(int fd_in, int fd_out, size_t len, unsigned int flags) { 424 #if !defined( CFA_HAVE_LINUX_IO_URING_H) || !defined(CFA_HAVE_IORING_OP_TEE)408 #if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_TEE) 425 409 return tee( fd_in, fd_out, len, flags ); 426 410 #else … … 445 429 446 430 bool has_user_level_blocking( fptr_t func ) { 447 #if defined( CFA_HAVE_LINUX_IO_URING_H)431 #if defined(HAVE_LINUX_IO_URING_H) 448 432 #if defined(HAVE_PREADV2) 449 433 if( /*func == (fptr_t)preadv2 || */ 450 434 func == (fptr_t)cfa_preadv2 ) 451 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_READV ,452 return IS_DEFINED( CFA_HAVE_IORING_OP_READV);435 #define _CFA_IO_FEATURE_IORING_OP_READV , 436 return IS_DEFINED(IORING_OP_READV); 453 437 #endif 454 438 … … 456 440 if( /*func == (fptr_t)pwritev2 || */ 457 441 func == (fptr_t)cfa_pwritev2 ) 458 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_WRITEV ,459 return IS_DEFINED( CFA_HAVE_IORING_OP_WRITEV);442 #define _CFA_IO_FEATURE_IORING_OP_WRITEV , 443 return IS_DEFINED(IORING_OP_WRITEV); 460 444 #endif 461 445 462 446 if( /*func == (fptr_t)fsync || */ 463 447 func == (fptr_t)cfa_fsync ) 464 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_FSYNC ,465 return IS_DEFINED( CFA_HAVE_IORING_OP_FSYNC);448 #define _CFA_IO_FEATURE_IORING_OP_FSYNC , 449 return IS_DEFINED(IORING_OP_FSYNC); 466 450 467 451 if( /*func == (fptr_t)ync_file_range || */ 468 452 func == (fptr_t)cfa_sync_file_range ) 469 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_SYNC_FILE_RANGE ,470 return IS_DEFINED( CFA_HAVE_IORING_OP_SYNC_FILE_RANGE);453 #define _CFA_IO_FEATURE_IORING_OP_SYNC_FILE_RANGE , 454 return IS_DEFINED(IORING_OP_SYNC_FILE_RANGE); 471 455 472 456 if( /*func == (fptr_t)sendmsg || */ 473 457 func == (fptr_t)cfa_sendmsg ) 474 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_SENDMSG ,475 return IS_DEFINED( CFA_HAVE_IORING_OP_SENDMSG);458 #define _CFA_IO_FEATURE_IORING_OP_SENDMSG , 459 return IS_DEFINED(IORING_OP_SENDMSG); 476 460 477 461 if( /*func == (fptr_t)recvmsg || */ 478 462 func == (fptr_t)cfa_recvmsg ) 479 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_RECVMSG ,480 return IS_DEFINED( CFA_HAVE_IORING_OP_RECVMSG);463 #define _CFA_IO_FEATURE_IORING_OP_RECVMSG , 464 return IS_DEFINED(IORING_OP_RECVMSG); 481 465 482 466 if( /*func == (fptr_t)send || */ 483 467 func == (fptr_t)cfa_send ) 484 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_SEND ,485 return IS_DEFINED( CFA_HAVE_IORING_OP_SEND);468 #define _CFA_IO_FEATURE_IORING_OP_SEND , 469 return IS_DEFINED(IORING_OP_SEND); 486 470 487 471 if( /*func == (fptr_t)recv || */ 488 472 func == (fptr_t)cfa_recv ) 489 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_RECV ,490 return IS_DEFINED( CFA_HAVE_IORING_OP_RECV);473 #define _CFA_IO_FEATURE_IORING_OP_RECV , 474 return IS_DEFINED(IORING_OP_RECV); 491 475 492 476 if( /*func == (fptr_t)accept4 || */ 493 477 func == (fptr_t)cfa_accept4 ) 494 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_ACCEPT ,495 return IS_DEFINED( CFA_HAVE_IORING_OP_ACCEPT);478 #define _CFA_IO_FEATURE_IORING_OP_ACCEPT , 479 return IS_DEFINED(IORING_OP_ACCEPT); 496 480 497 481 if( /*func == (fptr_t)connect || */ 498 482 func == (fptr_t)cfa_connect ) 499 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_CONNECT ,500 return IS_DEFINED( CFA_HAVE_IORING_OP_CONNECT);483 #define _CFA_IO_FEATURE_IORING_OP_CONNECT , 484 return IS_DEFINED(IORING_OP_CONNECT); 501 485 502 486 if( /*func == (fptr_t)fallocate || */ 503 487 func == (fptr_t)cfa_fallocate ) 504 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_FALLOCATE ,505 return IS_DEFINED( CFA_HAVE_IORING_OP_FALLOCATE);488 #define _CFA_IO_FEATURE_IORING_OP_FALLOCATE , 489 return IS_DEFINED(IORING_OP_FALLOCATE); 506 490 507 491 if( /*func == (fptr_t)posix_fadvise || */ 508 492 func == (fptr_t)cfa_fadvise ) 509 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_FADVISE ,510 return IS_DEFINED( CFA_HAVE_IORING_OP_FADVISE);493 #define _CFA_IO_FEATURE_IORING_OP_FADVISE , 494 return IS_DEFINED(IORING_OP_FADVISE); 511 495 512 496 if( /*func == (fptr_t)madvise || */ 513 497 func == (fptr_t)cfa_madvise ) 514 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_MADVISE ,515 return IS_DEFINED( CFA_HAVE_IORING_OP_MADVISE);498 #define _CFA_IO_FEATURE_IORING_OP_MADVISE , 499 return IS_DEFINED(IORING_OP_MADVISE); 516 500 517 501 if( /*func == (fptr_t)openat || */ 518 502 func == (fptr_t)cfa_openat ) 519 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_OPENAT ,520 return IS_DEFINED( CFA_HAVE_IORING_OP_OPENAT);503 #define _CFA_IO_FEATURE_IORING_OP_OPENAT , 504 return IS_DEFINED(IORING_OP_OPENAT); 521 505 522 506 if( /*func == (fptr_t)close || */ 523 507 func == (fptr_t)cfa_close ) 524 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_CLOSE ,525 return IS_DEFINED( CFA_HAVE_IORING_OP_CLOSE);508 #define _CFA_IO_FEATURE_IORING_OP_CLOSE , 509 return IS_DEFINED(IORING_OP_CLOSE); 526 510 527 511 if( /*func == (fptr_t)read || */ 528 512 func == (fptr_t)cfa_read ) 529 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_READ ,530 return IS_DEFINED( CFA_HAVE_IORING_OP_READ);513 #define _CFA_IO_FEATURE_IORING_OP_READ , 514 return IS_DEFINED(IORING_OP_READ); 531 515 532 516 if( /*func == (fptr_t)write || */ 533 517 func == (fptr_t)cfa_write ) 534 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_WRITE ,535 return IS_DEFINED( CFA_HAVE_IORING_OP_WRITE);518 #define _CFA_IO_FEATURE_IORING_OP_WRITE , 519 return IS_DEFINED(IORING_OP_WRITE); 536 520 537 521 if( /*func == (fptr_t)splice || */ 538 func == (fptr_t)(ssize_t (*)(int, loff_t *, int, loff_t *, size_t, unsigned int))cfa_splice, 539 func == (fptr_t)(ssize_t (*)(int, loff_t *, int, loff_t *, size_t, unsigned int, int, int))cfa_splice ) 540 #define _CFA_IO_FEATURE_CFA_HAVE_IORING_OP_SPLICE , 541 return IS_DEFINED(CFA_HAVE_IORING_OP_SPLICE); 522 func == (fptr_t)cfa_splice ) 523 #define _CFA_IO_FEATURE_IORING_OP_SPLICE , 524 return IS_DEFINED(IORING_OP_SPLICE); 542 525 543 526 if( /*func == (fptr_t)tee || */ 544 527 func == (fptr_t)cfa_tee ) 545 #define _CFA_IO_FEATURE_ CFA_HAVE_IORING_OP_TEE ,546 return IS_DEFINED( CFA_HAVE_IORING_OP_TEE);528 #define _CFA_IO_FEATURE_IORING_OP_TEE , 529 return IS_DEFINED(IORING_OP_TEE); 547 530 #endif 548 531
Note:
See TracChangeset
for help on using the changeset viewer.