Request to register new user fullname: Martin D Kealey userid: KURAHAUPO mail: CENSORED homepage: why:
I've written a module Linux::Syscalls that provide access to Linux system calls that aren't covered by the POSIX module. So far it covers: - anything to do with files and filenames (mostly the syscalls with the "at" suffix, like fstatat()); - anything that manipulates nanosecond-precision file timestamps (utimens(), gettimeofday(), time()); this includes re-implementing Time::HiRes functions to avoid truncating timestamps to microsecond precision; - processes (waitid(), killpg()); - filesystem layout (using the FIE-map ioctl). I've also written some helper modules that might be useful stand-alone, including Time::Nanosecond, and a git pre-commit checking framework. Time::Nanoseconds is a reasonably complete, usable fixed-precision time library: - epoch-second value semantics, so they're safe to use anywhere a number would be used; - constructors that accept integer-epoch-seconds, float-epoch-seconds, struct timeval, & struct timespec; - two independent implementations (int vector & wide int); - augment standard functions (localtime, gmtime, & strftime); - operator overloads so values behave like normal epoch-second numbers; - values are marked with their precision. Linux::Syscalls is a work in progress. Currently supported architectures are x86_64, i386, and mipsel; I'm open to adding others as necessary (and I'll probably clean up the multi-architecture framework as I figure out how to support it better). Many lesser-used systemcalls are yet to be implemented, so I'm at the point where feedback from users would help improve it. Time to publish! These have all been intentionally written as pure Perl rather than XS, because my primary target has been embedded Linux systems (such as EdgeOS routers) where one doesn't necessarily have a cross-compiler (and Perl can be 15 years out of date). I also doubt it's worth the effort: most syscalls are slow enough that a binary XS module wouldn't achieve a large speed-up factor. https://github.com/kurahaupo/linux-syscalls-perl/ The following links are only valid for PAUSE maintainers: Registration form with editing capabilities: https://pause.perl.org/pause/authenquery?ACTION=add_user&USERID=60000000_000c3ef89a358688&SUBMIT_pause99_add_user_sub=1 Immediate (one click) registration: https://pause.perl.org/pause/authenquery?ACTION=add_user&USERID=60000000_000c3ef89a358688&SUBMIT_pause99_add_user_Definitely=1