Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/io/call.cfa.in

    r1afd9ccb rcefd0b9  
    3131Prelude = """#define __cforall_thread__
    3232
    33 #include <unistd.h>
    34 #include <errno.h>
    35 #include <sys/socket.h>
    36 #include <time.hfa>
    37 
    3833#include "bits/defs.hfa"
    3934#include "kernel.hfa"
     
    4843        #include <assert.h>
    4944        #include <stdint.h>
     45        #include <errno.h>
    5046        #include <linux/io_uring.h>
     47
    5148        #include "kernel/fwd.hfa"
    5249
     
    8582// I/O Forwards
    8683//=============================================================================================
     84#include <time.hfa>
     85
     86// Some forward declarations
     87#include <errno.h>
     88#include <unistd.h>
    8789
    8890extern "C" {
     91        #include <asm/types.h>
     92        #include <sys/socket.h>
     93        #include <sys/syscall.h>
     94
    8995#if defined(CFA_HAVE_PREADV2)
    9096        struct iovec;
    91         extern ssize_t preadv2 (int fd, const struct iovec * iov, int iovcnt, off_t offset, int flags);
     97        extern ssize_t preadv2 (int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    9298#endif
    9399#if defined(CFA_HAVE_PWRITEV2)
    94100        struct iovec;
    95         extern ssize_t pwritev2(int fd, const struct iovec * iov, int iovcnt, off_t offset, int flags);
     101        extern ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    96102#endif
    97103
     
    108114        struct msghdr;
    109115        struct sockaddr;
    110         extern ssize_t sendmsg(int sockfd, const struct msghdr * msg, int flags);
    111         extern ssize_t recvmsg(int sockfd, struct msghdr * msg, int flags);
    112         extern ssize_t send(int sockfd, const void * buf, size_t len, int flags);
    113         extern ssize_t recv(int sockfd, void * buf, size_t len, int flags);
     116        extern ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
     117        extern ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
     118        extern ssize_t send(int sockfd, const void *buf, size_t len, int flags);
     119        extern ssize_t recv(int sockfd, void *buf, size_t len, int flags);
     120        extern int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);
     121        extern int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
    114122
    115123        extern int fallocate(int fd, int mode, off_t offset, off_t len);
    116124        extern int posix_fadvise(int fd, off_t offset, off_t len, int advice);
    117         extern int madvise(void * addr, size_t length, int advice);
    118 
    119         extern int openat(int dirfd, const char * pathname, int flags, mode_t mode);
     125        extern int madvise(void *addr, size_t length, int advice);
     126
     127        extern int openat(int dirfd, const char *pathname, int flags, mode_t mode);
    120128        extern int close(int fd);
    121129
    122         extern ssize_t read (int fd, void * buf, size_t count);
     130        extern ssize_t read (int fd, void *buf, size_t count);
    123131
    124132        struct epoll_event;
    125         extern int epoll_ctl(int epfd, int op, int fd, struct epoll_event * event);
    126 
    127         extern ssize_t splice(int fd_in, __off64_t * off_in, int fd_out, __off64_t * off_out, size_t len, unsigned int flags);
     133        extern int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
     134
     135        extern ssize_t splice(int fd_in, __off64_t *off_in, int fd_out, __off64_t *off_out, size_t len, unsigned int flags);
    128136        extern ssize_t tee(int fd_in, int fd_out, size_t len, unsigned int flags);
    129137}
     
    224232calls = [
    225233        # CFA_HAVE_IORING_OP_READV
    226         Call('READV', 'ssize_t preadv2(int fd, const struct iovec * iov, int iovcnt, off_t offset, int flags)', {
     234        Call('READV', 'ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags)', {
    227235                'fd'  : 'fd',
    228                 'addr': '(typeof(sqe->addr))iov',
     236                'off' : 'offset',
     237                'addr': '(uintptr_t)iov',
    229238                'len' : 'iovcnt',
    230                 'off' : 'offset',
    231                 'rw_flags' : 'flags'
    232239        }, define = 'CFA_HAVE_PREADV2'),
    233240        # CFA_HAVE_IORING_OP_WRITEV
    234         Call('WRITEV', 'ssize_t pwritev2(int fd, const struct iovec * iov, int iovcnt, off_t offset, int flags)', {
     241        Call('WRITEV', 'ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags)', {
    235242                'fd'  : 'fd',
    236                 'addr': '(typeof(sqe->addr))iov',
    237                 'len' : 'iovcnt',
    238243                'off' : 'offset',
    239                 'rw_flags' : 'flags'
     244                'addr': '(uintptr_t)iov',
     245                'len' : 'iovcnt'
    240246        }, define = 'CFA_HAVE_PWRITEV2'),
    241247        # CFA_HAVE_IORING_OP_FSYNC
     
    244250        }),
    245251        # CFA_HAVE_IORING_OP_EPOLL_CTL
    246         Call('EPOLL_CTL', 'int epoll_ctl(int epfd, int op, int fd, struct epoll_event * event)', {
     252        Call('EPOLL_CTL', 'int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)', {
    247253                'fd': 'epfd',
     254                'addr': 'fd',
    248255                'len': 'op',
    249                 'addr': 'fd',
    250                 'off': '(typeof(sqe->off))event'
     256                'off': '(uintptr_t)event'
    251257        }),
    252258        # CFA_HAVE_IORING_OP_SYNC_FILE_RANGE
     
    258264        }),
    259265        # CFA_HAVE_IORING_OP_SENDMSG
    260         Call('SENDMSG', 'ssize_t sendmsg(int sockfd, const struct msghdr * msg, int flags)', {
    261                 'fd': 'sockfd',
    262                 'addr': '(typeof(sqe->addr))(struct msghdr *)msg',
     266        Call('SENDMSG', 'ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags)', {
     267                'fd': 'sockfd',
     268                'addr': '(uintptr_t)(struct msghdr *)msg',
    263269                'len': '1',
    264270                'msg_flags': 'flags'
    265271        }),
    266272        # CFA_HAVE_IORING_OP_RECVMSG
    267         Call('RECVMSG', 'ssize_t recvmsg(int sockfd, struct msghdr * msg, int flags)', {
    268                 'fd': 'sockfd',
    269                 'addr': '(typeof(sqe->addr))(struct msghdr *)msg',
     273        Call('RECVMSG', 'ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags)', {
     274                'fd': 'sockfd',
     275                'addr': '(uintptr_t)(struct msghdr *)msg',
    270276                'len': '1',
    271277                'msg_flags': 'flags'
    272278        }),
    273279        # CFA_HAVE_IORING_OP_SEND
    274         Call('SEND', 'ssize_t send(int sockfd, const void * buf, size_t len, int flags)', {
    275                 'fd': 'sockfd',
    276                 'addr': '(typeof(sqe->addr))buf',
     280        Call('SEND', 'ssize_t send(int sockfd, const void *buf, size_t len, int flags)', {
     281                'fd': 'sockfd',
     282                'addr': '(uintptr_t)buf',
    277283                'len': 'len',
    278284                'msg_flags': 'flags'
    279285        }),
    280286        # CFA_HAVE_IORING_OP_RECV
    281         Call('RECV', 'ssize_t recv(int sockfd, void * buf, size_t len, int flags)', {
    282                 'fd': 'sockfd',
    283                 'addr': '(typeof(sqe->addr))buf',
     287        Call('RECV', 'ssize_t recv(int sockfd, void *buf, size_t len, int flags)', {
     288                'fd': 'sockfd',
     289                'addr': '(uintptr_t)buf',
    284290                'len': 'len',
    285291                'msg_flags': 'flags'
    286292        }),
    287293        # CFA_HAVE_IORING_OP_ACCEPT
    288         Call('ACCEPT', 'int accept4(int sockfd, __SOCKADDR_ARG addr, socklen_t * restrict addrlen, int flags)', {
    289                 'fd': 'sockfd',
    290                 'addr': '(typeof(sqe->addr))&addr',
    291                 'addr2': '(typeof(sqe->addr2))addrlen',
     294        Call('ACCEPT', 'int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags)', {
     295                'fd': 'sockfd',
     296                'addr': '(uintptr_t)addr',
     297                'addr2': '(uintptr_t)addrlen',
    292298                'accept_flags': 'flags'
    293299        }),
    294300        # CFA_HAVE_IORING_OP_CONNECT
    295         Call('CONNECT', 'int connect(int sockfd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen)', {
    296                 'fd': 'sockfd',
    297                 'addr': '(typeof(sqe->addr))&addr',
     301        Call('CONNECT', 'int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)', {
     302                'fd': 'sockfd',
     303                'addr': '(uintptr_t)addr',
    298304                'off': 'addrlen'
    299305        }),
     
    301307        Call('FALLOCATE', 'int fallocate(int fd, int mode, off_t offset, off_t len)', {
    302308                'fd': 'fd',
     309                'addr': '(uintptr_t)len',
    303310                'len': 'mode',
    304                 'off': 'offset',
    305                 'addr': 'len'
     311                'off': 'offset'
    306312        }),
    307313        # CFA_HAVE_IORING_OP_FADVISE
     
    313319        }),
    314320        # CFA_HAVE_IORING_OP_MADVISE
    315         Call('MADVISE', 'int madvise(void * addr, size_t length, int advice)', {
    316                 'addr': '(typeof(sqe->addr))addr',
     321        Call('MADVISE', 'int madvise(void *addr, size_t length, int advice)', {
     322                'addr': '(uintptr_t)addr',
    317323                'len': 'length',
    318324                'fadvise_advice': 'advice'
    319325        }),
    320326        # CFA_HAVE_IORING_OP_OPENAT
    321         Call('OPENAT', 'int openat(int dirfd, const char * pathname, int flags, mode_t mode)', {
     327        Call('OPENAT', 'int openat(int dirfd, const char *pathname, int flags, mode_t mode)', {
    322328                'fd': 'dirfd',
    323                 'addr': '(typeof(sqe->addr))pathname',
    324                 'open_flags': 'flags;',
    325                 'len': 'mode'
     329                'addr': '(uintptr_t)pathname',
     330                'len': 'mode',
     331                'open_flags': 'flags;'
    326332        }),
    327333        # CFA_HAVE_IORING_OP_OPENAT2
    328         Call('OPENAT2', 'int openat2(int dirfd, const char * pathname, struct open_how * how, size_t size)', {
     334        Call('OPENAT2', 'int openat2(int dirfd, const char *pathname, struct open_how * how, size_t size)', {
    329335                'fd': 'dirfd',
    330                 'addr': '(typeof(sqe->addr))pathname',
    331                 'off': '(typeof(sqe->off))how',
    332                 'len': 'sizeof(*how)'
     336                'addr': 'pathname',
     337                'len': 'sizeof(*how)',
     338                'off': '(uintptr_t)how',
    333339        }, define = 'CFA_HAVE_OPENAT2'),
    334340        # CFA_HAVE_IORING_OP_CLOSE
     
    337343        }),
    338344        # CFA_HAVE_IORING_OP_STATX
    339         Call('STATX', 'int statx(int dirfd, const char * pathname, int flags, unsigned int mask, struct statx * statxbuf)', {
     345        Call('STATX', 'int statx(int dirfd, const char *pathname, int flags, unsigned int mask, struct statx *statxbuf)', {
    340346                'fd': 'dirfd',
    341                 'addr': '(typeof(sqe->addr))pathname',
    342                 'statx_flags': 'flags',
     347                'off': '(uintptr_t)statxbuf',
     348                'addr': 'pathname',
    343349                'len': 'mask',
    344                 'off': '(typeof(sqe->off))statxbuf'
     350                'statx_flags': 'flags'
    345351        }, define = 'CFA_HAVE_STATX'),
    346352        # CFA_HAVE_IORING_OP_READ
    347353        Call('READ', 'ssize_t read(int fd, void * buf, size_t count)', {
    348354                'fd': 'fd',
    349                 'addr': '(typeof(sqe->addr))buf',
     355                'addr': '(uintptr_t)buf',
    350356                'len': 'count'
    351357        }),
     
    353359        Call('WRITE', 'ssize_t write(int fd, void * buf, size_t count)', {
    354360                'fd': 'fd',
    355                 'addr': '(typeof(sqe->addr))buf',
     361                'addr': '(uintptr_t)buf',
    356362                'len': 'count'
    357363        }),
    358364        # CFA_HAVE_IORING_OP_SPLICE
    359         Call('SPLICE', 'ssize_t splice(int fd_in, __off64_t * off_in, int fd_out, __off64_t * off_out, size_t len, unsigned int flags)', {
     365        Call('SPLICE', 'ssize_t splice(int fd_in, __off64_t *off_in, int fd_out, __off64_t *off_out, size_t len, unsigned int flags)', {
    360366                'splice_fd_in': 'fd_in',
    361                 'splice_off_in': 'off_in ? (typeof(sqe->splice_off_in))*off_in : (typeof(sqe->splice_off_in))-1',
     367                'splice_off_in': 'off_in ? (__u64)*off_in : (__u64)-1',
    362368                'fd': 'fd_out',
    363                 'off': 'off_out ? (typeof(sqe->off))*off_out : (typeof(sqe->off))-1',
     369                'off': 'off_out ? (__u64)*off_out : (__u64)-1',
    364370                'len': 'len',
    365371                'splice_flags': 'flags'
Note: See TracChangeset for help on using the changeset viewer.