… | |
… | |
1195 | const_iv (MAP_STACK) |
1195 | const_iv (MAP_STACK) |
1196 | |
1196 | |
1197 | const_iv (MREMAP_MAYMOVE) |
1197 | const_iv (MREMAP_MAYMOVE) |
1198 | const_iv (MREMAP_FIXED) |
1198 | const_iv (MREMAP_FIXED) |
1199 | |
1199 | |
1200 | const_iv (F_DUPFD_CLOEXEC) |
|
|
1201 | |
|
|
1202 | const_iv (MSG_CMSG_CLOEXEC) |
1200 | const_iv (MSG_CMSG_CLOEXEC) |
1203 | const_iv (SOCK_CLOEXEC) |
1201 | const_iv (SOCK_CLOEXEC) |
|
|
1202 | |
|
|
1203 | const_iv (F_DUPFD_CLOEXEC) |
|
|
1204 | |
|
|
1205 | const_iv (F_ADD_SEALS) |
|
|
1206 | const_iv (F_GET_SEALS) |
|
|
1207 | const_iv (F_SEAL_SEAL) |
|
|
1208 | const_iv (F_SEAL_SHRINK) |
|
|
1209 | const_iv (F_SEAL_GROW) |
|
|
1210 | const_iv (F_SEAL_WRITE) |
1204 | |
1211 | |
1205 | const_iv (F_OFD_GETLK) |
1212 | const_iv (F_OFD_GETLK) |
1206 | const_iv (F_OFD_SETLK) |
1213 | const_iv (F_OFD_SETLK) |
1207 | const_iv (F_OFD_GETLKW) |
1214 | const_iv (F_OFD_GETLKW) |
1208 | |
1215 | |
… | |
… | |
2488 | RETVAL = 0; |
2495 | RETVAL = 0; |
2489 | #endif |
2496 | #endif |
2490 | OUTPUT: |
2497 | OUTPUT: |
2491 | RETVAL |
2498 | RETVAL |
2492 | |
2499 | |
2493 | int |
2500 | void |
|
|
2501 | accept4 (aio_rfd rfh, SV *sockaddr, int salen, int flags) |
|
|
2502 | PPCODE: |
|
|
2503 | { |
|
|
2504 | SV *retval; |
|
|
2505 | #if HAVE_ACCEPT4 |
|
|
2506 | socklen_t salen_ = salen ? salen + 1 : 0; |
|
|
2507 | |
|
|
2508 | if (salen) |
|
|
2509 | { |
|
|
2510 | sv_upgrade (sockaddr, SVt_PV); |
|
|
2511 | sv_grow (sockaddr, salen_); |
|
|
2512 | } |
|
|
2513 | |
|
|
2514 | int res = accept4 (rfh, salen ? (struct sockaddr *)SvPVX (sockaddr) : 0, salen ? &salen_ : 0, flags); |
|
|
2515 | |
|
|
2516 | retval = newmortalFH (res, O_RDWR); |
|
|
2517 | |
|
|
2518 | if (res >= 0 && salen > 0) |
|
|
2519 | { |
|
|
2520 | if (salen_ > salen + 1) |
|
|
2521 | salen_ = salen + 1; |
|
|
2522 | |
|
|
2523 | SvPOK_only (sockaddr); |
|
|
2524 | SvCUR_set (sockaddr, salen_); |
|
|
2525 | } |
|
|
2526 | #else |
|
|
2527 | errno = ENOSYS; |
|
|
2528 | retval = &PL_sv_undef; |
|
|
2529 | #endif |
|
|
2530 | XPUSHs (retval); |
|
|
2531 | } |
|
|
2532 | |
|
|
2533 | ssize_t |
2494 | splice (aio_rfd rfh, SV *off_in, aio_wfd wfh, SV *off_out, size_t length, unsigned int flags) |
2534 | splice (aio_rfd rfh, SV *off_in, aio_wfd wfh, SV *off_out, size_t length, unsigned int flags) |
2495 | CODE: |
2535 | CODE: |
2496 | { |
2536 | { |
2497 | #if HAVE_LINUX_SPLICE |
2537 | #if HAVE_LINUX_SPLICE |
2498 | loff_t off_in_, off_out_; |
2538 | loff_t off_in_, off_out_; |
… | |
… | |
2506 | #endif |
2546 | #endif |
2507 | } |
2547 | } |
2508 | OUTPUT: |
2548 | OUTPUT: |
2509 | RETVAL |
2549 | RETVAL |
2510 | |
2550 | |
2511 | int |
2551 | ssize_t |
2512 | tee (aio_rfd rfh, aio_wfd wfh, size_t length, unsigned int flags) |
2552 | tee (aio_rfd rfh, aio_wfd wfh, size_t length, unsigned int flags) |
2513 | CODE: |
2553 | CODE: |
2514 | #if HAVE_LINUX_SPLICE |
2554 | #if HAVE_LINUX_SPLICE |
2515 | RETVAL = tee (rfh, wfh, length, flags); |
2555 | RETVAL = tee (rfh, wfh, length, flags); |
2516 | #else |
2556 | #else |
… | |
… | |
2696 | for (bit = 0x40000000U; bit; bit >>= 1) |
2736 | for (bit = 0x40000000U; bit; bit >>= 1) |
2697 | { |
2737 | { |
2698 | rl.rlim_max |= bit; |
2738 | rl.rlim_max |= bit; |
2699 | rl.rlim_cur = rl.rlim_max; |
2739 | rl.rlim_cur = rl.rlim_max; |
2700 | |
2740 | |
2701 | /* nevr decrease the hard limit */ |
2741 | /* never decrease the hard limit */ |
2702 | if (rl.rlim_max < orig_rlim_max) |
2742 | if (rl.rlim_max < orig_rlim_max) |
2703 | break; |
2743 | break; |
2704 | |
2744 | |
2705 | if (0 != setrlimit (RLIMIT_NOFILE, &rl)) |
2745 | if (0 != setrlimit (RLIMIT_NOFILE, &rl)) |
2706 | rl.rlim_max &= ~bit; /* too high, remove bit again */ |
2746 | rl.rlim_max &= ~bit; /* too high, remove bit again */ |