- File:
-
- 1 edited
-
libcfa/src/concurrency/io/call.cfa.in (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io/call.cfa.in
r1afd9ccb rcefd0b9 31 31 Prelude = """#define __cforall_thread__ 32 32 33 #include <unistd.h>34 #include <errno.h>35 #include <sys/socket.h>36 #include <time.hfa>37 38 33 #include "bits/defs.hfa" 39 34 #include "kernel.hfa" … … 48 43 #include <assert.h> 49 44 #include <stdint.h> 45 #include <errno.h> 50 46 #include <linux/io_uring.h> 47 51 48 #include "kernel/fwd.hfa" 52 49 … … 85 82 // I/O Forwards 86 83 //============================================================================================= 84 #include <time.hfa> 85 86 // Some forward declarations 87 #include <errno.h> 88 #include <unistd.h> 87 89 88 90 extern "C" { 91 #include <asm/types.h> 92 #include <sys/socket.h> 93 #include <sys/syscall.h> 94 89 95 #if defined(CFA_HAVE_PREADV2) 90 96 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); 92 98 #endif 93 99 #if defined(CFA_HAVE_PWRITEV2) 94 100 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); 96 102 #endif 97 103 … … 108 114 struct msghdr; 109 115 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); 114 122 115 123 extern int fallocate(int fd, int mode, off_t offset, off_t len); 116 124 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); 120 128 extern int close(int fd); 121 129 122 extern ssize_t read (int fd, void * buf, size_t count);130 extern ssize_t read (int fd, void *buf, size_t count); 123 131 124 132 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); 128 136 extern ssize_t tee(int fd_in, int fd_out, size_t len, unsigned int flags); 129 137 } … … 224 232 calls = [ 225 233 # 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)', { 227 235 'fd' : 'fd', 228 'addr': '(typeof(sqe->addr))iov', 236 'off' : 'offset', 237 'addr': '(uintptr_t)iov', 229 238 'len' : 'iovcnt', 230 'off' : 'offset',231 'rw_flags' : 'flags'232 239 }, define = 'CFA_HAVE_PREADV2'), 233 240 # 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)', { 235 242 'fd' : 'fd', 236 'addr': '(typeof(sqe->addr))iov',237 'len' : 'iovcnt',238 243 'off' : 'offset', 239 'rw_flags' : 'flags' 244 'addr': '(uintptr_t)iov', 245 'len' : 'iovcnt' 240 246 }, define = 'CFA_HAVE_PWRITEV2'), 241 247 # CFA_HAVE_IORING_OP_FSYNC … … 244 250 }), 245 251 # 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)', { 247 253 'fd': 'epfd', 254 'addr': 'fd', 248 255 'len': 'op', 249 'addr': 'fd', 250 'off': '(typeof(sqe->off))event' 256 'off': '(uintptr_t)event' 251 257 }), 252 258 # CFA_HAVE_IORING_OP_SYNC_FILE_RANGE … … 258 264 }), 259 265 # 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', 263 269 'len': '1', 264 270 'msg_flags': 'flags' 265 271 }), 266 272 # 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', 270 276 'len': '1', 271 277 'msg_flags': 'flags' 272 278 }), 273 279 # 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', 277 283 'len': 'len', 278 284 'msg_flags': 'flags' 279 285 }), 280 286 # 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', 284 290 'len': 'len', 285 291 'msg_flags': 'flags' 286 292 }), 287 293 # CFA_HAVE_IORING_OP_ACCEPT 288 Call('ACCEPT', 'int accept4(int sockfd, __SOCKADDR_ARG addr, socklen_t * restrictaddrlen, 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', 292 298 'accept_flags': 'flags' 293 299 }), 294 300 # CFA_HAVE_IORING_OP_CONNECT 295 Call('CONNECT', 'int connect(int sockfd, __CONST_SOCKADDR_ARGaddr, 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', 298 304 'off': 'addrlen' 299 305 }), … … 301 307 Call('FALLOCATE', 'int fallocate(int fd, int mode, off_t offset, off_t len)', { 302 308 'fd': 'fd', 309 'addr': '(uintptr_t)len', 303 310 'len': 'mode', 304 'off': 'offset', 305 'addr': 'len' 311 'off': 'offset' 306 312 }), 307 313 # CFA_HAVE_IORING_OP_FADVISE … … 313 319 }), 314 320 # 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', 317 323 'len': 'length', 318 324 'fadvise_advice': 'advice' 319 325 }), 320 326 # 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)', { 322 328 '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;' 326 332 }), 327 333 # 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)', { 329 335 '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', 333 339 }, define = 'CFA_HAVE_OPENAT2'), 334 340 # CFA_HAVE_IORING_OP_CLOSE … … 337 343 }), 338 344 # 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)', { 340 346 'fd': 'dirfd', 341 ' addr': '(typeof(sqe->addr))pathname',342 ' statx_flags': 'flags',347 'off': '(uintptr_t)statxbuf', 348 'addr': 'pathname', 343 349 'len': 'mask', 344 ' off': '(typeof(sqe->off))statxbuf'350 'statx_flags': 'flags' 345 351 }, define = 'CFA_HAVE_STATX'), 346 352 # CFA_HAVE_IORING_OP_READ 347 353 Call('READ', 'ssize_t read(int fd, void * buf, size_t count)', { 348 354 'fd': 'fd', 349 'addr': '( typeof(sqe->addr))buf',355 'addr': '(uintptr_t)buf', 350 356 'len': 'count' 351 357 }), … … 353 359 Call('WRITE', 'ssize_t write(int fd, void * buf, size_t count)', { 354 360 'fd': 'fd', 355 'addr': '( typeof(sqe->addr))buf',361 'addr': '(uintptr_t)buf', 356 362 'len': 'count' 357 363 }), 358 364 # 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)', { 360 366 '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', 362 368 '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', 364 370 'len': 'len', 365 371 'splice_flags': 'flags'
Note:
See TracChangeset
for help on using the changeset viewer.