redox-os issueshttps://gitlab.redox-os.org/groups/redox-os/-/issues2023-10-22T23:45:53Zhttps://gitlab.redox-os.org/redox-os/relibc/-/issues/184Tracking issue for missing functions to compile CPython 3.122023-10-22T23:45:53ZDarley BarretoTracking issue for missing functions to compile CPython 3.12- [ ] bindtextdomain
- [ ] bind_textdomain_codeset
- [ ] clock_nanosleep
- [ ] close_range
- [ ] confstr
- [ ] copy_file_range
- [ ] ctermid
- [ ] __ctype_b_loc
- [ ] __ctype_tolower_loc
- [ ] __ctype_toupper_loc
- [ ] dcgettext
- [ ] du...- [ ] bindtextdomain
- [ ] bind_textdomain_codeset
- [ ] clock_nanosleep
- [ ] close_range
- [ ] confstr
- [ ] copy_file_range
- [ ] ctermid
- [ ] __ctype_b_loc
- [ ] __ctype_tolower_loc
- [ ] __ctype_toupper_loc
- [ ] dcgettext
- [ ] dup3
- [ ] eventfd
- [ ] eventfd_read
- [ ] eventfd_write
- [ ] faccessat
- [ ] fchmodat
- [ ] fchownat
- [ ] fcntl64
- [ ] fdopendir
- [ ] fexecve
- [ ] fgetxattr
- [ ] flistxattr
- [ ] fopen64
- [ ] forkpty
- [ ] fremovexattr
- [ ] fsetxattr
- [ ] fstat64
- [ ] fstatat64
- [ ] fstatvfs64
- [ ] ftruncate64
- [ ] getloadavg
- [ ] getresgid
- [ ] getresuid
- [ ] getrlimit64
- [ ] getrusage
- [ ] getxattr
- [ ] initgroups
- [ ] lgetxattr
- [ ] __libc_current_sigrtmax
- [ ] __libc_current_sigrtmin
- [ ] __libc_start_main
- [ ] linkat
- [ ] listxattr
- [ ] llistxattr
- [ ] lockf64
- [ ] login_tty
- [ ] lremovexattr
- [ ] lseek64
- [ ] lsetxattr
- [ ] lstat64
- [ ] memfd_create
- [ ] mkdirat
- [ ] mkfifoat
- [ ] mknod
- [ ] mknodat
- [ ] mmap64
- [ ] nice
- [ ] nl_langinfo
- [ ] open64
- [ ] openat64
- [ ] openpty
- [ ] pause
- [ ] posix_fadvise64
- [ ] posix_fallocate64
- [ ] posix_spawn
- [ ] posix_spawnattr_destroy
- [ ] posix_spawnattr_init
- [ ] posix_spawnattr_setflags
- [ ] posix_spawnattr_setpgroup
- [ ] posix_spawnattr_setschedparam
- [ ] posix_spawnattr_setschedpolicy
- [ ] posix_spawnattr_setsigdefault
- [ ] posix_spawnattr_setsigmask
- [ ] posix_spawn_file_actions_addclose
- [ ] posix_spawn_file_actions_adddup2
- [ ] posix_spawn_file_actions_addopen
- [ ] posix_spawn_file_actions_destroy
- [ ] posix_spawn_file_actions_init
- [ ] posix_spawnp
- [ ] pread64
- [ ] preadv64v2
- [ ] pwrite64
- [ ] pwritev64v2
- [ ] readdir64
- [ ] readlinkat
- [ ] removexattr
- [ ] renameat
- [ ] __sched_cpualloc
- [ ] __sched_cpucount
- [ ] __sched_cpufree
- [ ] sched_getaffinity
- [ ] sched_getparam
- [ ] sched_get_priority_max
- [ ] sched_get_priority_min
- [ ] sched_getscheduler
- [ ] sched_rr_get_interval
- [ ] sched_setaffinity
- [ ] sched_setparam
- [ ] sched_setscheduler
- [ ] sem_clockwait
- [ ] sendfile64
- [ ] setegid
- [ ] seteuid
- [ ] setns
- [ ] setresgid
- [ ] setresuid
- [ ] setrlimit64
- [ ] setxattr
- [ ] sigwaitinfo
- [ ] splice
- [ ] stat64
- [ ] statvfs64
- [ ] symlinkat
- [ ] syscall
- [ ] __sysconf
- [ ] textdomain
- [ ] times
- [ ] truncate64
- [ ] __uflow
- [ ] unlinkat
- [ ] unshare
- [ ] utimensat
- [ ] wait3
- [ ] wait4
- [ ] waitid
- [ ] wcsftime
- [ ] wcsxfrmhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1406Failed to build on archlinux via podman2023-10-27T13:26:17ZLucas KentFailed to build on archlinux via podmanAs per: https://doc.redox-os.org/book/ch02-06-podman-build.html#new-working-directory
I did:
```shell
curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/podman_bootstrap.sh -o podman_bootstrap.sh
time bash -e podman_bootstrap...As per: https://doc.redox-os.org/book/ch02-06-podman-build.html#new-working-directory
I did:
```shell
curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/podman_bootstrap.sh -o podman_bootstrap.sh
time bash -e podman_bootstrap.sh
cd redox
make all
```
And then got the following:
```console
rukai@memes redox$ make all
rm -f build/container.tag
If podman_home dir cannot be removed, remove with "sudo rm".
rm -rf /home/rukai2/Projects/Crates/redox/foo/redox/build/podman || true
podman image rm --force redox-base || true
ERRO[0000] cannot find UID/GID for user rukai: no subuid ranges found for user "rukai" in /etc/subuid - check rootless mode in man pages.
WARN[0000] Using rootless single mapping into the namespace. This might break some images. Check /etc/subuid and /etc/subgid for adding sub*ids if not using a network user
mkdir -p /home/rukai2/Projects/Crates/redox/foo/redox/build/podman
Building Podman image. This may take some time.
sed s/_UID_/`id -u`/ podman/redox-base-containerfile | podman build --file - --volume /home/rukai2/Projects/Crates/redox/foo/redox:/mnt/redox:Z --volume /home/rukai2/Projects/Crates/redox/foo/redox/build/podman:/home:Z --tag redox-base
STEP 1/3: FROM ubuntu:latest
Resolved "ubuntu" as an alias (/etc/containers/registries.conf.d/00-shortnames.conf)
Trying to pull docker.io/library/ubuntu:latest...
Getting image source signatures
Copying blob aece8493d397 done |
Error: creating build container: copying system image from manifest list: writing blob: adding layer with blob "sha256:aece8493d3972efa43bfd4ee3cdba659c0f787f8f59c82fb3e48c87cbb22a12e": processing tar file(potentially insufficient UIDs or GIDs available in user namespace (requested 0:42 for /etc/gshadow): Check /etc/subuid and /etc/subgid if configured locally and run "podman system migrate": lchown /etc/gshadow: invalid argument): exit status 1
make: *** [mk/podman.mk:57: build/container.tag] Error 1
```
I also got this issue when following: https://doc.redox-os.org/book/ch02-06-podman-build.html#existing-working-directory
I tried that originally before trying the from new working directory build.https://gitlab.redox-os.org/redox-os/redoxfs/-/issues/44Disk encryption uses AES in ECB mode2023-10-18T00:07:21ZJavaDisk encryption uses AES in ECB modeThe encryption feature of the FS encrypts all AES-blocks with the same key, therefor the encryption is ineffective and barely does anything.
Good example of what the issue with ECB is:
![image](/uploads/04818ee0cef5de84c8fb1c3e9c4e7bff...The encryption feature of the FS encrypts all AES-blocks with the same key, therefor the encryption is ineffective and barely does anything.
Good example of what the issue with ECB is:
![image](/uploads/04818ee0cef5de84c8fb1c3e9c4e7bff/image.png)
More information about issues with ECB:
https://crypto.stackexchange.com/questions/20941/why-shouldnt-i-use-ecb-encryptionhttps://gitlab.redox-os.org/redox-os/chashmap/-/issues/15CHashMap support Borrow?2023-10-15T18:22:18ZJeremy SollerCHashMap support Borrow?*Created by: sbant*
The std::collection::HashMap 's get function like this:
fn get<Q: ?Sized>(&self, k: &Q) -> Option<&V> where K: Borrow<Q>, Q: Hash + Eq
can CHashMap support the Borrow Trait?
let map = CHashMap::new();
let s =...*Created by: sbant*
The std::collection::HashMap 's get function like this:
fn get<Q: ?Sized>(&self, k: &Q) -> Option<&V> where K: Borrow<Q>, Q: Hash + Eq
can CHashMap support the Borrow Trait?
let map = CHashMap::new();
let s = "some str";
so can use map.get(s), not map.get(&s.to_string())https://gitlab.redox-os.org/redox-os/ptyd/-/issues/3Improve PTY security2023-10-15T18:21:29ZJeremy SollerImprove PTY securityCurrently, any process can open any PTY. This allows any process to spy on PTY contents.
This must be fixed, while still allowing `less` to reopen its controlling terminal when piping.Currently, any process can open any PTY. This allows any process to spy on PTY contents.
This must be fixed, while still allowing `less` to reopen its controlling terminal when piping.https://gitlab.redox-os.org/redox-os/relibc/-/issues/183WASM WASI compatibility2023-10-21T20:12:15ZDaniel OlanoWASM WASI compatibilityHello! Just wanted to bring some discussion about this topic.
There is this big fancy train call WASM that will surely get far and seems to me that people jumping on board might benefit form its momentum. And what better that a new fre...Hello! Just wanted to bring some discussion about this topic.
There is this big fancy train call WASM that will surely get far and seems to me that people jumping on board might benefit form its momentum. And what better that a new fresh, secure and lightweight OS? It might be already to late to make Redox completely Web Assembly centric but some adaptations could be made to make it play better with wasm apps using the Web Assembly System Interface? The plan of WASI is to have a modular set of non web system APIs so WASM apps can run outside of the web in a secure way, currently they started with the [core API system calls](https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-api.md) to implement basic IO functionality.
I don't know much about anything but in my simple way to see things I would seem that if Redox syscalls heppen to be the same as WASI and a WASM app targeting this kind of runtime is run using a JIT compiler built-in or compiled ahead of time at "installation" time, the app just "just work"? What do you guys think about being more web assembly friendly? does it deviate too much from the design choices of Redox? ultimately I just want to see this project to succeed, been a patreon for some time and see an opportunity there to gain back momentum that has been lost over time. :sweat\_smile:
As web technologies supporter I would definitely be very exited to see a WASM centric OS whether is Redox based or not, WASI runtimes will be popular and Operating systems built around it will be used, for sure there will be linux distros just for that that will see a big success in the cloud for example but I rather see Redox there ;) on the plus side all this wasm stuff compilers and runtimes are being written in Rust so they would integrate much nicely with Redox than with any other OS.
What do you think? makes some sense?https://gitlab.redox-os.org/redox-os/bootloader/-/issues/6Redox would not boot after installing with fs password.2023-10-14T15:26:02ZRon WilliamsRedox would not boot after installing with fs password.User reported that Redox would not boot after installing with fs password. No password prompt was displayed.
https://matrix.to/#/!VRFarxUZgQhGPZpROi:matrix.org/$6oB9BNYbUVG7Wmj4ZT-u1NIofMClVG7i4KB9WHcrD9I?via=matrix.org&via=mozilla.org&v...User reported that Redox would not boot after installing with fs password. No password prompt was displayed.
https://matrix.to/#/!VRFarxUZgQhGPZpROi:matrix.org/$6oB9BNYbUVG7Wmj4ZT-u1NIofMClVG7i4KB9WHcrD9I?via=matrix.org&via=mozilla.org&via=westwork.orghttps://gitlab.redox-os.org/redox-os/drivers/-/issues/38Invalid/ Missing register writes in ixgbe driver2023-09-25T18:26:58ZRamla-IInvalid/ Missing register writes in ixgbe driverThe following bugs are present in the ixgbe driver:
1. Write to reserved bits \[15:12\] of the DTXMXSZRQ register
2. Bits of RDRXCTL are not set by software. According to the datasheet:
1. RDRXCTL.RSCFRSTSIZE is by default 0x8 and s...The following bugs are present in the ixgbe driver:
1. Write to reserved bits \[15:12\] of the DTXMXSZRQ register
2. Bits of RDRXCTL are not set by software. According to the datasheet:
1. RDRXCTL.RSCFRSTSIZE is by default 0x8 and should be set to 0 by software.
2. RDRXCTL.RSCACKC is by default 0 and should be set to 1 by software.
3. RDRXCTL.FCOE_WRFIX is by default 0 and should be set to 1 by software.
3. The FCTRL register should only be modified/ updated when the RXCTRL.RXEN bit is set to 0, but the `set_promisc` function updates the filters after RXCTRL.RXEN is set.https://gitlab.redox-os.org/redox-os/termion/-/issues/196events() does not work with I/O Safety2023-09-23T17:29:26ZAlan Somersevents() does not work with I/O SafetyTermion does not work with Rust's I/O Safety features. The problem is that the TermRead::events method captures by move. That's fine if all of the terminals are represented by RawFds, which allow Copy. But OwnedFd does not, nor does i...Termion does not work with Rust's I/O Safety features. The problem is that the TermRead::events method captures by move. That's fine if all of the terminals are represented by RawFds, which allow Copy. But OwnedFd does not, nor does io::Stdin. That creates a problem when one tries to use TermRead::events in combination with other APIs that expect BorrowedFd or OwnedFd. It would be better if TermRead::events would accept either an OwnedFd by move (and implement AsFd too), or accept a BorrowedFd reference and capture its lifetime.
Here's an example of a program that ought to work, but doesn't.
```rust
extern crate nix;
extern crate termion;
use std::os::fd::AsFd;
use nix::poll::{PollFd, PollFlags, poll};
use termion::input::TermRead;
fn main() {
let stdin = std::io::stdin();
// Create a pollfd, so we can poll for keyboard events with a timeout
let pollfd = PollFd::new(stdin.as_fd(), PollFlags::POLLIN);
// Create a Termion Events object to actually read the events.
// But oh no! events() captures by move.
let mut events = stdin.events();
// Wait for events to arrive
// BUILD FAILS: pollfd borrows stdin, which was already moved.
poll(&mut [pollfd][..], 1000);
// Check what event arrived
dbg!(events.next());
}
```
Here are the compile errors:
```
Checking termion v2.0.1 (/usr/home/somers/src/rust/termion)
error[E0505]: cannot move out of `stdin` because it is borrowed
--> examples/borrowed_fd.rs:17:22
|
10 | let stdin = std::io::stdin();
| ----- binding `stdin` declared here
...
13 | let pollfd = PollFd::new(stdin.as_fd(), PollFlags::POLLIN);
| ----- borrow of `stdin` occurs here
...
17 | let mut events = stdin.events();
| ^^^^^ move out of `stdin` occurs here
...
21 | poll(&mut [pollfd][..], 1000);
| ------ borrow later used here
For more information about this error, try `rustc --explain E0505`.
error: could not compile `termion` (example "borrowed_fd") due to previous error
```https://gitlab.redox-os.org/redox-os/cookbook/-/issues/189Recipe logs2023-12-31T11:40:26ZRibbonRecipe logsThis issue will hold all logs of [WIP recipes](https://gitlab.redox-os.org/redox-os/cookbook/-/tree/master/recipes/wip?ref_type=heads), doing this any developer can fix the porting errors more quick.
If you fix a recipe error, reply the...This issue will hold all logs of [WIP recipes](https://gitlab.redox-os.org/redox-os/cookbook/-/tree/master/recipes/wip?ref_type=heads), doing this any developer can fix the porting errors more quick.
If you fix a recipe error, reply the comment with "Fixed".https://gitlab.redox-os.org/redox-os/redox/-/issues/1399Include latest git commit hash in the release file2023-10-27T13:29:42ZKivimangoInclude latest git commit hash in the release fileIt would be good to include the hash and date of the latest commit of the kernel in the /etc/redox-release in the selectable configuration files "files" section.It would be good to include the hash and date of the latest commit of the kernel in the /etc/redox-release in the selectable configuration files "files" section.https://gitlab.redox-os.org/redox-os/cookbook/-/issues/188orbital recipes fails to build when building desktop-minimal config2023-08-24T18:41:11ZKivimangoorbital recipes fails to build when building desktop-minimal configThe following recipes are fails when i building Redox OS with the desktop-minimal configuration:
* orbutils-orblogin
* orbutils-launcher
* orbutils-background
```sh
error: manifest path `/mnt/redox/cookbook/recipes/orbutils-launcher/ta...The following recipes are fails when i building Redox OS with the desktop-minimal configuration:
* orbutils-orblogin
* orbutils-launcher
* orbutils-background
```sh
error: manifest path `/mnt/redox/cookbook/recipes/orbutils-launcher/target/x86_64-unknown-redox/build/Cargo.toml` is a virtual manifest, but this command requires running against an actual package in this workspace
make: *** [mk/repo.mk:16: build/x86_64/desktop-minimal/repo.tag] Error 101
make: *** [mk/repo.mk:14: build/x86_64/desktop-minimal/repo.tag] Error 2
```
These recipes have the old .sh scripts, they are 2 years old.
In the meantime, the parent orbutils package changed its project layout to use the cargo workspaces.https://gitlab.redox-os.org/redox-os/relibc/-/issues/182printf swallowed when unknown format specifiers are encountered2023-08-14T17:51:59ZFlorian Meißnerprintf swallowed when unknown format specifiers are encountered```c
#include <stdio.h>
int main(void) {
int foobar = 0;
printf("%Y", foobar);
return 0;
}
```
glibc Output: `%Y`
relibc Output: nothing```c
#include <stdio.h>
int main(void) {
int foobar = 0;
printf("%Y", foobar);
return 0;
}
```
glibc Output: `%Y`
relibc Output: nothinghttps://gitlab.redox-os.org/redox-os/installer/-/issues/15(feature request) Support specific EFI partition size2023-11-18T02:52:24ZIvan Tan(feature request) Support specific EFI partition sizeSome embedded/iot boards need more space in `EFI` partition to install boot-related firmware.Some embedded/iot boards need more space in `EFI` partition to install boot-related firmware.https://gitlab.redox-os.org/redox-os/redox/-/issues/1398MIPS architecture port2023-08-12T11:40:49ZJeremy SollerMIPS architecture port*Created by: aep*
We're in need of a kernel for MIPS.
- very small
- micro-kernel
- support for virtual memory
- reasonably stable
- reasonable linux compatbility (some porting effort is fine)
Is that something we should attempt...*Created by: aep*
We're in need of a kernel for MIPS.
- very small
- micro-kernel
- support for virtual memory
- reasonably stable
- reasonable linux compatbility (some porting effort is fine)
Is that something we should attempt to do, or would you say that redox-os is not in the right stage yet?https://gitlab.redox-os.org/redox-os/redox/-/issues/1397memtest86+ for the Redox bootloader2023-08-10T06:36:17ZRibbonmemtest86+ for the Redox bootloadermemtest86+ is offered as a package in many Linux distributions, this package has a executable called `memtest-setup` that will run memtest86+ on reboot.
`memtest-setup` is configured to GRUB, thus our port will need to add the memtest86...memtest86+ is offered as a package in many Linux distributions, this package has a executable called `memtest-setup` that will run memtest86+ on reboot.
`memtest-setup` is configured to GRUB, thus our port will need to add the memtest86+ binary to the Redox bootloader.https://gitlab.redox-os.org/redox-os/redox/-/issues/1396Raspi3b+ support2023-10-27T13:41:34ZIvan TanRaspi3b+ supportThis issue cover what is necessary for running Redox OS in raspi3b+(ARM64 device)
* 1. Build u-boot to run `bootloader.efi` with the user-specific Device Tree Blob(DTB) file.
* 2. Pass the dtb file to Redox's kernel.
* 3. Redox's kernel ...This issue cover what is necessary for running Redox OS in raspi3b+(ARM64 device)
* 1. Build u-boot to run `bootloader.efi` with the user-specific Device Tree Blob(DTB) file.
* 2. Pass the dtb file to Redox's kernel.
* 3. Redox's kernel parses dtb file.
* 4. Redox installer support adding files to specific partition, for example, writing the dtb file `/DTB/BROADCOM/bcm2837-rpi-3-b.dtb` to EFI partition.
* 5. Commands for running and debugging Redox OS in qemu.
* 6. Steps for running Redox OS in read hardware(raspi3b+).
# uboot
demo: https://gitlab.redox-os.org/Ivan/u-boot/-/tree/redox/v2022.07?ref_type=heads
# bootloader
demo: https://gitlab.redox-os.org/Ivan/bootloader/-/tree/ivan/raspi3b?ref_type=heads
# kernel
demo: https://gitlab.redox-os.org/Ivan/kernel/-/tree/ivan/raspi3b?ref_type=heads
# installer
demo: https://gitlab.redox-os.org/Ivan/installer/-/tree/ivan/raspi3b?ref_type=heads
https://gitlab.redox-os.org/Ivan/redox_firmware.git
Installation(run as root):
```
#!/bin/sh
#
mount -o loop,offset=$((2048*512)) build/aarch64/server/harddrive.img /mnt/efi_boot
mkdir -p /mnt/efi_boot/dtb/broadcom/
dtc -I dts -O dtb ~/code/redox_project/redox_firmware/platform/raspberry_pi/rpi3/bcm2837-rpi-3-b-plus.dts > bcm2837-rpi-3-b-plus.dtb
cp bcm2837-rpi-3-b-plus.dtb /mnt/efi_boot/dtb/broadcom/bcm2837-rpi-3-b.dtb
umount /mnt/efi_boot
exit
```
# cookbook
demo: https://gitlab.redox-os.org/Ivan/cookbook/-/tree/ivan/raspi3b?ref_type=heads
# qemu
QEMU emulator version 7.2.3 (v7.2.3) or upper.
# command
run:
```
SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-aarch64 -M raspi3b -smp 4,cores=1 \
-serial stdio -display none\
-kernel build/aarch64/server/u-boot.bin \
-sd build/aarch64/server/harddrive.img
```
run with debug:
```
SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-aarch64 -M raspi3b -smp 4,cores=1 \
-serial stdio -display none\
-kernel build/aarch64/server/u-boot.bin \
-sd build/aarch64/server/harddrive.img \
-chardev socket,path=/tmp/gdb-socket,server=on,wait=off,id=gdb0 -gdb chardev:gdb0 -S
```
gdb:
```
./prefix/aarch64-unknown-redox/relibc-install/bin/aarch64-unknown-redox-gdb --eval-command="target remote /tmp/gdb-socket"
```
# Real hardware support
TBDhttps://gitlab.redox-os.org/redox-os/drivers/-/issues/37vesad: Implement Debug for DisplayScheme2023-08-07T06:54:20ZRon Williamsvesad: Implement Debug for DisplaySchemeWhen debugging a problem with `vesad`, I hacked a version of `Debug` for `DisplayScheme` and found it extremely helpful. It would be good to implement this permanently. Be careful not to include the screen buffer.When debugging a problem with `vesad`, I hacked a version of `Debug` for `DisplayScheme` and found it extremely helpful. It would be good to implement this permanently. Be careful not to include the screen buffer.https://gitlab.redox-os.org/redox-os/drivers/-/issues/36vesad: Error in width/height calculation when switching from TextScreen to Gr...2023-08-07T07:08:55ZRon Williamsvesad: Error in width/height calculation when switching from TextScreen to GraphicsScreenIn `vesad/src/scheme.rs`, `SchemeMut for DisplayScheme`, `fn write`, if the command is `Activate` and the mode is `Graphic`, a new `GraphicScreen` is created. However, the `width()` and `height()` are taken from the previous Screen type,...In `vesad/src/scheme.rs`, `SchemeMut for DisplayScheme`, `fn write`, if the command is `Activate` and the mode is `Graphic`, a new `GraphicScreen` is created. However, the `width()` and `height()` are taken from the previous Screen type, which are calculated in pixels for `GraphicsScreen` and in characters for `TextScreen`. So if the previous screen type was `TextScreen`, the width and height are now a fraction of the correct values.
Note that the original `TextScreen` is created with `width` and `height` fields calculated in pixels. It's not clear to me if those fields should always be in pixels and the `width()` and `height()` functions should convert to character sizes. Either way, it is not consistent and should be corrected and documented.
Since the `Screen` struct is `Box<dyn Screen>`, the information is lost about whether the `Screen` is a `TextScreen` or a `GraphicsScreen`, so either the calculations need to be in pixels always, or there needs to be an addition to the `Screen` trait to provide `width_in_pixels()` and `height_in_pixels()`.https://gitlab.redox-os.org/redox-os/kernel/-/issues/134Move address space virtual address range allocation to userspace2023-10-31T14:56:21ZJacob Lorentzon4ldo2@protonmail.comMove address space virtual address range allocation to userspaceThere's currently a lot of code in the kernel dealing solely with managing user address space virtual address allocation. A more minimal kernel would only store the grants and their ranges, which would (1) allow userspace to implement gu...There's currently a lot of code in the kernel dealing solely with managing user address space virtual address allocation. A more minimal kernel would only store the grants and their ranges, which would (1) allow userspace to implement guard pages, (2) remove the need for `mmap_min`, and (3) simplify mmap and similar operations, so that they always behave as `MAP_FIXED_NOREPLACE`.