NAME
Linux::Perl - Linux system calls with pure Perl
SYNOPSIS
my $efd = Linux::Perl::eventfd->new();
#...or, if you know your architecture:
my $efd = Linux::Perl::eventfd::x86_64->new();
DESCRIPTION
Linux::Perl’s goal is to provide, without use of XS, feature-complete implementations of Linux kernel features that the Perl interpreter does not expose.
In memory-sensitive environments it is useful to minimize the number of XS modules that Perl loads. Oftentimes the CPAN modules that implement support for various Linux system calls, though, will bring in XS for the sake of writing platform-neutral code.
Linux::Perl accommodates use cases where platform neutrality is less of a concern than minimizing memory usage.
MODULES
Each family of system calls lives in its own namespace under Linux::Perl
:
The distribution contains a number of other modules, none of which is currently intended for outside use.
PLATFORM-SPECIFIC INVOCATION
Linux::Perl achieves functionality by hard-coding each supported platform’s number for each required system call. As a consequence, any new platforms’ system calls will need to be added manually.
To allow optimization for portability or efficiency, each implementation can be called with a platform-neutral syntax as well as with a platform-specific one; for example:
my $efd = Linux::Perl::eventfd->new();
my $efd = Linux::Perl::eventfd::x86_64->new();
The platform-specific call is a bit lighter because it avoids loading Config to determine the current platform.
PLATFORM SUPPORT
x86_64
and arm
are the best-supported platforms. i686
and i386
also have some support.
Support for adding new platforms just involves adding new modules with the necessary constants to the distribution.
Note also that a 64-bit Perl is generally assumed.
REPOSITORY
https://github.com/FGasper/p5-Linux-Perl
AUTHOR
Felipe Gasper (FELIPE)
COPYRIGHT
Copyright 2018 by Gasper Software Consulting
LICENSE
This distribution is released under the same license as Perl.