Robert Millan <r...@debian.org> wrote: > If you can write a Linux-compatible sendfile() which uses BSD-ish SYS_sendfile > as backend, I guess they'll have no problem exporting a new symbol in glibc? > After all, it's glibc who claims to provide it (via <sys/sendfile.h>).
I emulate Linux sendfile on (non-Debian) FreeBSD that way in cmogstored. Feel free to grab the linux_sendfile() wrapper from cmogstored: http://bogomips.org/cmogstored.git/plain/http_get.c The linux_sendfile wrapper is trivial and I'm OK with relicensing from the existing GPLv3+ to any DFSG-approved license > > Otherwise > > each and every software will need substantial patching on kFreeBSD > > to achieve better throughput, since it would need to link to > > freebsd-glue and rely on the FreeBSD signature of sendfile(), > > or to be rewritten using bsd_sendfile. > > You don't have to rewrite anything to use bsd_sendfile(). If you're trying > to build BSD software, you can use freebsd-glue if you think this will ease > your > porting work. Interesting, I didn't know about bsd_sendfile nor freebsd-glue, I was using pread+write to emulate it on Debian kFreeBSD. Can't seem to detect bsd_sendfile, though (maybe I'm missing something obvious, this is on Debian sid x86_64, kFreeBSD): $ gcc -o x x.c -Wall /tmp/ccJILHMP.o: In function `main': x.c:(.text+0x30): undefined reference to `bsd_sendfile' collect2: error: ld returned 1 exit status --------------------------- x.c ------------------------- #include <sys/types.h> #include <sys/socket.h> #include <sys/uio.h> int bsd_sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); int main(void) { int a = bsd_sendfile(0, 1, 0, 5, NULL, NULL, 0); return a; } --------------------------- x.c ------------------------- -- To UNSUBSCRIBE, email to debian-bsd-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140217091201.ga18...@dcvr.yhbt.net