Ignore:
Timestamp:
Jul 24, 2020, 12:49:02 PM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
42cd451e
Parents:
54eb5ebd
Message:

Added support for using liburing to check for kernel support for IORING_OPs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/configure.ac

    r54eb5ebd rf854ee32  
    128128#io_uring 5.5 uses enum values
    129129#io_uring 5.6 and later uses probes
     130define(ioring_ops, [IORING_OP_NOP,IORING_OP_READV,IORING_OP_WRITEV,IORING_OP_FSYNC,IORING_OP_READ_FIXED,IORING_OP_WRITE_FIXED,IORING_OP_POLL_ADD,IORING_OP_POLL_REMOVE,IORING_OP_SYNC_FILE_RANGE,IORING_OP_SENDMSG,IORING_OP_RECVMSG,IORING_OP_TIMEOUT,IORING_OP_TIMEOUT_REMOVE,IORING_OP_ACCEPT,IORING_OP_ASYNC_CANCEL,IORING_OP_LINK_TIMEOUT,IORING_OP_CONNECT,IORING_OP_FALLOCATE,IORING_OP_OPENAT,IORING_OP_CLOSE,IORING_OP_FILES_UPDATE,IORING_OP_STATX,IORING_OP_READ,IORING_OP_WRITE,IORING_OP_FADVISE,IORING_OP_MADVISE,IORING_OP_SEND,IORING_OP_RECV,IORING_OP_OPENAT2,IORING_OP_EPOLL_CTL,IORING_OP_SPLICE,IORING_OP_PROVIDE_BUFFERS,IORING_OP_REMOVE_BUFFER])
     131
     132define(ioring_from_decls, [
     133        m4_foreach([op], [ioring_ops], [
     134                AC_CHECK_DECL(op, [AC_DEFINE([CFA_HAVE_]op)], [], [[#include <linux/io_uring.h>]])
     135        ])
     136])
    130137
    131138AC_CHECK_HEADERS([linux/io_uring.h], [
    132139        AC_DEFINE(CFA_HAVE_LINUX_IO_URING_H)
    133         # AC_CHECK_HEADER([liburing.h], [
    134         #       AC_CHECK_LIB([uring], [io_uring_get_probe])
    135         # ])
    136         m4_foreach([op], [IORING_OP_NOP,IORING_OP_READV,IORING_OP_WRITEV,IORING_OP_FSYNC,IORING_OP_READ_FIXED,IORING_OP_WRITE_FIXED,IORING_OP_POLL_ADD,IORING_OP_POLL_REMOVE,IORING_OP_SYNC_FILE_RANGE,IORING_OP_SENDMSG,IORING_OP_RECVMSG,IORING_OP_TIMEOUT,IORING_OP_TIMEOUT_REMOVE,IORING_OP_ACCEPT,IORING_OP_ASYNC_CANCEL,IORING_OP_LINK_TIMEOUT,IORING_OP_CONNECT,IORING_OP_FALLOCATE,IORING_OP_OPENAT,IORING_OP_CLOSE,IORING_OP_FILES_UPDATE,IORING_OP_STATX,IORING_OP_READ,IORING_OP_WRITE,IORING_OP_FADVISE,IORING_OP_MADVISE,IORING_OP_SEND,IORING_OP_RECV,IORING_OP_OPENAT2,IORING_OP_EPOLL_CTL,IORING_OP_SPLICE,IORING_OP_PROVIDE_BUFFERS,IORING_OP_REMOVE_BUFFER], [
    137                 AC_CHECK_DECL(op, [AC_DEFINE([CFA_HAVE_]op)], [], [[#include <linux/io_uring.h>]])
     140        AC_CHECK_HEADER([liburing.h], [
     141                AC_CHECK_LIB([uring], [io_uring_get_probe], [
     142                        m4_foreach([op], [ioring_ops], [
     143                                AC_CHECK_DECL(op, [
     144                                        AC_RUN_IFELSE([
     145                                                AC_LANG_PROGRAM(
     146                                                        [[#include <liburing.h>]],
     147                                                        [[int main() {]]
     148                                                        [[      struct io_uring_probe *probe = io_uring_get_probe();]]
     149                                                        [[      if(io_uring_opcode_supported(probe, ]]op[[))]]
     150                                                        [[              return 0;]]
     151                                                        [[      else]]
     152                                                        [[              return 1;]]
     153                                                        [[}]]
     154                                                )
     155                                        ],[
     156                                                AC_DEFINE([CFA_HAVE_]op)
     157                                        ],[
     158                                                AC_MSG_FAILURE([Check support for] op [ with liburing failed])
     159                                        ])
     160                                ], [], [[#include <linux/io_uring.h>]])
     161                        ])
     162                ], [
     163                        ioring_from_decls
     164                ])
     165        ], [
     166                ioring_from_decls
    138167        ])
    139168])
Note: See TracChangeset for help on using the changeset viewer.