mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-11 08:03:16 -04:00
sys-kernel/xpmem: initial import
Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
1
sys-kernel/xpmem/Manifest
Normal file
1
sys-kernel/xpmem/Manifest
Normal file
@@ -0,0 +1 @@
|
|||||||
|
DIST xpmem-2.6.3_p20210217.tar.gz 55906 BLAKE2B 609f9b18529e06504c02cbee3383355e161ebcad98d558ff518d125cf4b795fd32f0b6eba8e23c67e4ccf6eb2b6686be21594335a48fcdee71344ee063af65e3 SHA512 fb09d7120686957d02c29c7058e6b1e1de35637252c4942efcd722306117384cb6bdc8d3e175c26d3de56c36dd6946f53fa341473a7ad660d68847a23d331bb3
|
||||||
55
sys-kernel/xpmem/metadata.xml
Normal file
55
sys-kernel/xpmem/metadata.xml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||||
|
<pkgmetadata>
|
||||||
|
<longdescription lang="en">
|
||||||
|
This is an experimental version of XPMEM based on a version provided by
|
||||||
|
Cray and uploaded to https://code.google.com/p/xpmem. This version supports
|
||||||
|
any kernel 3.12 and newer. Keep in mind there may be bugs and this version
|
||||||
|
may cause kernel panics, code crashes, eat your cat, etc.
|
||||||
|
|
||||||
|
XPMEM is a Linux kernel module that enables a process to map the
|
||||||
|
memory of another process into its virtual address space. Source code
|
||||||
|
can be obtained by cloning the Git repository, original Mercurial
|
||||||
|
repository or by downloading a tarball from the link above.
|
||||||
|
|
||||||
|
The XPMEM API has three main functions:
|
||||||
|
|
||||||
|
xpmem_make()
|
||||||
|
xpmem_get()
|
||||||
|
xpmem_attach()
|
||||||
|
|
||||||
|
A process calls xpmem_make() to export a region of its virtual address
|
||||||
|
space. Other processes can then attach to the region by calling
|
||||||
|
xpmem_get() and xpmem_attach(). After a memory region is attached, it
|
||||||
|
is accessed via direct loads and stores. This enables upper-level
|
||||||
|
protocols such as MPI and SHMEM to perform single-copy address-space
|
||||||
|
to address-space transfers, completely at user-level.
|
||||||
|
|
||||||
|
Note, there is a limitation to the usage of an attached region. Any
|
||||||
|
system call that will call get_user_pages() on the region from the
|
||||||
|
non-owning process with get EFAULT. This include pthread mutexes
|
||||||
|
and condition variable, and SYS V semaphores. We intend to address
|
||||||
|
this limitation in a future release.
|
||||||
|
|
||||||
|
XPMEM regions are free to have "holes" in them, meaning virtual memory
|
||||||
|
regions that are not allocated. This makes XPMEM somewhat more
|
||||||
|
flexible than mmap(). A process could, for example, export a region
|
||||||
|
via XPMEM starting at address 0 and extending 4 GB. Accesses to
|
||||||
|
allocated (valid) virtual addresses in this region proceed normally,
|
||||||
|
and pages are mapped between address spaces on demand. A segfault will
|
||||||
|
occur if the source process or any other process mapping the region
|
||||||
|
tries to access an unallocated (invalid) virtual address in the
|
||||||
|
region.
|
||||||
|
</longdescription>
|
||||||
|
<maintainer type="person">
|
||||||
|
<email>lssndrbarbieri@gmail.com</email>
|
||||||
|
<name>Alessandro Barbieri</name>
|
||||||
|
</maintainer>
|
||||||
|
<use>
|
||||||
|
<flag name="modules">Build the kernel module</flag>
|
||||||
|
</use>
|
||||||
|
<upstream>
|
||||||
|
<bugs-to>https://github.com/hjelmn/xpmem/issues</bugs-to>
|
||||||
|
<remote-id type="github">hjelmn/xpmem</remote-id>
|
||||||
|
</upstream>
|
||||||
|
</pkgmetadata>
|
||||||
56
sys-kernel/xpmem/xpmem-2.6.3_p20210217.ebuild
Normal file
56
sys-kernel/xpmem/xpmem-2.6.3_p20210217.ebuild
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# Copyright 1999-2020 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
inherit autotools linux-mod
|
||||||
|
|
||||||
|
MODULES_OPTIONAL_USE="modules"
|
||||||
|
MY_REV="242eaa1eca92567c2118afe21e37cafc524f9166"
|
||||||
|
|
||||||
|
DESCRIPTION="Linux Cross-Memory Attach"
|
||||||
|
HOMEPAGE="https://github.com/hjelmn/xpmem"
|
||||||
|
SRC_URI="https://github.com/hjelmn/xpmem/archive/${MY_REV}.tar.gz -> ${P}.tar.gz"
|
||||||
|
S="${WORKDIR}/${PN}-${MY_REV}"
|
||||||
|
|
||||||
|
LICENSE="LGPL-2.1"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64"
|
||||||
|
IUSE="+modules"
|
||||||
|
|
||||||
|
MODULE_NAMES="xpmem(misc:${WORKDIR}/module/kernel:${WORKDIR}/module/kernel)"
|
||||||
|
BUILD_TARGETS="all"
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
AT_M4DIR="m4" eautoreconf
|
||||||
|
if use modules; then
|
||||||
|
cp -r "${S}" "${WORKDIR}/module" || die
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
local myconf=(
|
||||||
|
--disable-kernel-module
|
||||||
|
)
|
||||||
|
econf "${myconf[@]}"
|
||||||
|
|
||||||
|
if use modules; then
|
||||||
|
pushd "${WORKDIR}/module" || die
|
||||||
|
econf
|
||||||
|
popd || die
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
default
|
||||||
|
use modules && linux-mod_src_compile
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
einstalldocs
|
||||||
|
default
|
||||||
|
use modules && linux-mod_src_install
|
||||||
|
find "${ED}" -name '*.la' -delete || die
|
||||||
|
find "${ED}" -name '*.a' -delete || die
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user