/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ /* * sendfile for NOLIBC * Copyright (C) 2026 Daniel Palmer */ /* make sure to include all global symbols */ #include "../nolibc.h" #ifndef _NOLIBC_SYS_SENDFILE_H #define _NOLIBC_SYS_SENDFILE_H #include "../sys.h" #include /* * ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); */ static __attribute__((unused)) ssize_t _sys_sendfile(int out_fd, int in_fd, off_t *offset, size_t count) { __nolibc_static_assert(sizeof(*offset) == sizeof(__kernel_loff_t)); #ifdef __NR_sendfile64 /* 32-bit applications use sendfile64 so offset is treated as a __kernel_loff_t */ return __nolibc_syscall4(__NR_sendfile64, out_fd, in_fd, offset, count); #else __nolibc_static_assert(sizeof(*offset) == sizeof(__kernel_off_t)); return __nolibc_syscall4(__NR_sendfile, out_fd, in_fd, offset, count); #endif } static __attribute__((unused)) ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) { return __sysret(_sys_sendfile(out_fd, in_fd, offset, count)); } #endif /* _NOLIBC_SYS_SENDFILE_H */