0a989e8 syscall: use pure Perl sendmsg/recvmsg on *BSD

Authored and Committed by Eric Wong 5 months ago
    syscall: use pure Perl sendmsg/recvmsg on *BSD
    
    While syscall symbols (e.g. SYS_*) have changed on us in FreeBSD
    during the history of Sys::Syscall and this project and did bite
    us in some cases; the actual numbers don't get recycled for new
    syscalls.  We're also fortunate that sendmsg and recvmsg syscalls
    and associated msghdr and cmsg structs predate the BSD forks and
    are compatible across all the BSDs I've tried.
    
    OpenBSD routes Perl `syscall' through libc; while NetBSD + FreeBSD
    document procedures for maintaining backwards compatibility.
    It looks like Dragonfly follows FreeBSD, here.
    
    Tested on i386 OpenBSD, and amd64 {Free,Net,Open,Dragonfly}BSD
    
    This enables *BSD users to use lei, -cindex and future SCM_RIGHTS-only
    features without needing Inline::C.
    
    [1] https://cvsweb.openbsd.org/src/gnu/usr.bin/perl/gen_syscall_emulator.pl
    [2] https://www.netbsd.org/docs/internals/en/chap-processes.html#syscall_versioning
    [3] https://wiki.freebsd.org/AddingSyscalls#Backward_compatibily
    
        
file modified
+7 -2
file modified
+63 -39
file modified
+4 -5