52 Commits (1e9224d53c86ddad4cb41adbe849059c04d844cd)
 

Author SHA1 Message Date
Avril 1e9224d53c
args: Added `parse_args()`: Attempt to parse the program args into `Options` struct. Added `ArgParseError`, error describing why parsing arguments failed. Added `EXEC_MODE_STRING_TERMINATOR` the terminator used when deciding when to stop parsing an arglist for `-exec/{}`. Added `program_name()`, returns the current executable"s name as a UTF8 string, if the executable"s name was not a UTF8 string, then it is lossily converted to one and invalid characters are replaced.
2 years ago
Avril 0b84adc84f
Added fmt::Display impl for ExecMode that quotes/escapes command or args if needed uses the `POSITIONAL_ARG_STRING` for positional arguments.
2 years ago
Avril 682cd8ec15
args::Option::ExecMode Started argument parsed data structure for `-ecec <command> [<args>...]` (Stdin) `-exec{} <command> [<args>|{}...]` (Positional `"/prof/self/fds/{}" (3++)`).
2 years ago
Avril 6220233d97
Preparation for adding the command-line option `-exec` and `-exec{}`.
2 years ago
Avril 14f32d6262
Explicitly closes `stdout` before process exits.
3 years ago
Avril bc2357c6b6
Attempted to add new feature flag: `memfile-size-output`: Which will pre- or post- set the size of `stdout` to the correct buffer size, allowing consumers of `collect`"s stdout pipe to know the size just like a file. However, `ftruncate()` always fails on stdout. Before re-enabling the feature, we must find out how to set the size of a pipe, if/when you even can, and what syscall(s) you need to do it with.
3 years ago
Avril b2bf26f245
Bumped minor version.
3 years ago
Avril ab56c93532
Bumped minor version.
3 years ago
Avril 395799587b
Removed `stackalloc` dependancy.
3 years ago
Avril 289db974cd
TODO: Find out how to set the length of stdout if possible, so that the consumer of `collect` in a pipeline need only use one syscall splice() to read all the collected data at once, like a file.
3 years ago
Avril b47a27c60f
(partial-merge from (probably) now-defunct branch `hugetlb`.)
3 years ago
Avril 35c6cabce3
memfile::hp: Changed `get_masks()` to return an iterator of `SizedMask` instead of just `Mask` to retain the size of the huge-page itself in bytes (for `ftruncate()` calls, and `mmap()` calls.)
3 years ago
Avril dbf2dbffde
Removed `hugetlb` feature flag: It cannot be used for our use-case.
3 years ago
Avril 8ea3a23e27
Using huge-pages for this is folly from the start: For one, we never actually map the fallocate()"d memory. And two... hugetlbfs does not support write()s in any way, splice()s, send_file()s... It only supports read(), and mmap() (its primary use-case...); which isn"t relevant for us.
3 years ago
Avril 872ea74421
It seems creating HUGETLB memory files either just doesn"t work or changes their behaviour so that any (or at least, small arbitrary) writing or fallocate()ing to them fails... Read up on MFD_HUGETLB more then re-do a test like `memfd_create_wrapper()` to find out why... and if it depends on the MAP_HUGE_ mask, and if so, find one that works... (We know when masks are invalid, since the error message is different. The masks collected via `get_masks()` *are* valid for this system, they just prevent the fd from being any way useful.)
3 years ago
Avril bdfd0a6268
memfile::hp: Added `PartialEq` impl for `c_int` (checks `MAP_HUGE` from `.raw()`), and `c_uint` (checks `memfd_create()` useable constant from `.mask()`.)
3 years ago
Avril 573845a667
memfile::hp: Added `get_masks()`: Returns an iterator over all `MAP_HUGE` masks found on system.
3 years ago
Avril 9b4bb475c0
Added extension methods for flattening `eyre::Result<eyre:Result<T>>`s and related constructs.
3 years ago
Avril e7b96af012
memfile::hp: Added test for `Mask`"s `.raw()` (`MAP_HHUGE_` flag generation.)
3 years ago
Avril c4f73ccfa0
memfile::hp: `find_size_bytes()` fixed and tested; should change function to return `eyre::Result<usize>` instead of `Option<usize>` considering how many different failure-paths exist.
3 years ago
Avril 9c18a5b940
memfile::hp: Added `Mask`: Converts bytes into a suitable `MAP_HUGE_` constant via its `.raw()` method, and a suitable flag for `memfd_create()` via its `.mask()` method.
3 years ago
Avril b882f0ae97
Completed `hp::find_size_bytes()`, and added const-generated lookup table for non "k" seperators.
3 years ago
Avril d46efebbf7
Added huge-page mask calculation algorithm to comment of module file `memfile::hp`.
3 years ago
Avril b1a64475f6
Merge branch 'master' into safe-memfd: memfile: Merged `RawFile::try_link_from()`: Analogue to `try_link_to()`.
3 years ago
Avril c6032467fa
memfile: Added `RawFile::try_link_from()`: Analogue to `try_link_to()`. Instrumented and added panicking versions of both functions. Added `clone_from()` impl that uses `try_link_from()` (i.e. `dup2()`)
3 years ago
Avril 59363848a2
Started: `memfile::hp`: `MFD_HUGETLB` can be used when a size is known to exceed into the boundary of a hugepage. Currently in the process of writing function to collect all possible hugepage sizes and generate the correct flag masks for `memfd_create(, MFD_HUGETLB | ...)` for each one; and the smallest one that contains the known size can be used for the `memfd_create()` call (if the size fits any at all.)
3 years ago
Avril bbed62e738
Version bump (revision): v1.0.2
3 years ago
Avril 2c839da13b
Bumped stackalloc version: Use PLT for trampoline: Causing random linker errors on some machines.
3 years ago
Avril 0262ca88d9
Added TODOs for specific bugs (and impl related ideas for how to go about preventing/warning in the event of `mode-memfd` system OOM) ; moved some RawFd-related functions into a submodule
3 years ago
Avril 8dd7ddaed8
Version bump v1.0.1
3 years ago
Avril 9ecd0ea3d8
Fixed silly bug preventing building on rust-stable.
3 years ago
Avril 1e207ca453
Create LICENSE
3 years ago
Avril 9125199d80
Added Cargo keywords (tags)
3 years ago
Avril 225a0a08f0
Fix README
3 years ago
Avril 8fe92b0951
Version 1.0.0!
3 years ago
Avril f05c1466c7
Added README.md
3 years ago
Avril 8390072309
Reached version 1.0.0!
3 years ago
Avril 515a63c3a2
Fixed bug with `memfile` feature not setting stream length properly without `memfile-preallocate`
3 years ago
Avril 23d022b5fe
Added working memfile implementation
3 years ago
Avril 0628853b43
Working memfile implementation
3 years ago
Avril edb57c7c95
memfile: Disambiguated memfile errors resulting in `fallocate()` sizes being too large or the call itself failing.
3 years ago
Avril b3dbb30deb
Fix imports for when feature `memfile` is disabled.
3 years ago
Avril ed957bcec8
feature memfile: added `RawFile::open_mem()`
3 years ago
Avril 65c297b228
Started adding `memfile` feature: Use a `memfd_create()`d in-memory temporary file.
3 years ago
Avril 80a2d65262
Made spantrace capture optional at the compilation level.
3 years ago
Avril 3af34dc78f
Better documented `jemalloc` feature.
3 years ago
Avril cc37f604f1
Fixed tracing causing huge unneeded bottleneck in non `bytes` builds.
3 years ago
Avril bea5cda4a1
Fixed not copying to buffer when not using feature `bytes`.
3 years ago
Avril 1cdd5b2187
Made `bytes` an optional feature.
3 years ago
Avril 4cf1c88a3f
Update gitignore
3 years ago