#Nyaux
1 messages · Page 51 of 1
they are character devices. your input device sends them, well, input. they process it according to the flags set (found in manpages). then you just read data from them. writing sends data to the backend driver, like the display
I get that
But how do they take over displays, how are keyboard drivers supposed to interract with them, etc.
what's the role of init server in all of it
just have an object that you create your tty with that contains the input and output drivers
hm?
(microkernel shenanigans)
because I'd suppose my tty would habe to be a userspace server
what about multiple displays
n ttys per display?
Usually those are just cloned actually
the way i'd do it is to have something like kmscon, it interacts with the display driver (probably fb) and input drivers and presents a pty
like I've never written a big userspace application, I just don't have a feeling of how the things are connected
Linux KMS/DRM based virtual Console Emulator
Time to nag @ ma_rv about uDRM
udrm 
i mean that part can just be replaced with open("/dev/fb"), mmap, and flanterm
there are fb based emulators as well
I think one was just called fbcon or fbterm
I mean I have flanterm, and a keyboard driver
And userspace
Just no glue for them to run bash
(I mean all of that runs in userspace)
And even fork
I was going to say that "you just need to glue them together now"
do clone() and use that for fork
No, I mean I have full fork already
Which creates a new process and clones open files
and I have POSIX pipes...
Because it's very inconvenient for a microkernel because of setuid
What if I do the terminal thing in Rust? 
the kernel stays in C++ 
I mean I also have Go working...
i need someone to tell me to finish PMM, ping me
i need motivation
need someone to tell me to finish memory managment today
the whole thing
@tardy hull
ty, going to make resize and allocate for my PMM allocator then do another allocator that isnt bitmap and is for random shit physKmalloc
@tardy hull finish the pmm or i will tickle your feet when you go to sleep
ty
ty guys
also opinion on what allocator for kmalloc?
im struggling with the pmm and vmm tho so idk
with the pmm?
slab is really good
- you dont
I just use dlmalloc 
- bitmaps are slow af
bitmaps are ok, but why would you use them when freelist exists
i use it :3
okay but how could i implement a freelist for the pmm?
buddy allocator all the way
im kind of a dumbass
he was talking about the pmm
Just make a list of free pages
Do you know what is a freelist?
Not necessarily, a freelist is not unique to physical memory allocation
well, you traverse the layers but thats still O(1)
buddy is not O(1)
tehnically yes
but if you cap the layers to like 10
then its rather wrong to say its logn
Im pretty sure most operating systems limit the amount of layers right?
ofc
I may look into buddy eventually
It’s pretty easy to implement
i think ill just go with bitmap
Why
no please dont
i will probably solve it
instant allocation
from here whats going on
xd
im tryna nap some more
interesting
why has the nyaux thread become lounge 3 (lounge 2 is uacpi)
mute
OH SHIT
exactly
OH I SEE
id prefer for my thread to not be cluttered lol
we are in nyaux
40K MESSAGES
no sleep for you, only cat bites and cat annoyance
oh shit
freelist just made sense on my head
oh shit
what have i been doing all this time
please move to somewhere else thank you
okay
It is O(1), but slower than freelist since you may have to be splitting pages
get to ze prompt and you win
there's a chance that I won't have much time to work on my kernel in the coming days
the osdev race
But I want to do it in Rust
(Which implies that I should finally write the init server)
okay so time to implement ttys
tities tty when
r/unixporn...
hi
i have an even shitter sleep schedule now
i slept from 8am
:)
you can think that will tickle your feet when you sleep if you dont work
damn
i sleeped 4 hours today
nah thats crazy exit code 0 is crazy
It's O(log n) as abbix said as you potentially need to coalesce log n pages to a single huge page
eletrorb said u know everything lmao
why would you ever create a single huge page tho
just cap the max level
so you still need to potentially coalesce smaller chunks into bigger ones
But it's still tecnically O(1)
no matter what you do
watching these to understand unix more and to understand how to impl a tty, after this video series ill read the tty article
You might have to split one giant page too
thats how it becomes O(1)
when adding a cap
i already know most of what im watching here but
lets not talk about this here tho
no, if you coalesce it never becomes O(1)
its good to reinforce
like that number is capped
ok maybe it comes close for very small N
but yeah, it's not a freelist where you just push to it
my allocator at most just coalesces with free region before it and region after it
"Technically" a bitmap is also O(1) if your address space is limited by 2^64 ;D
buddy isn't slow tho
we should just agree then that its logn where n is max number of levels
we did
#allocators please :) u can discord forward to allocators and countinue ur convo there :) cause this isnt related to nyaux and while i dont mind the convo here and there its getting a bit much now
then I agree with everyone
lovely
no?
i mean yapping as in im starting to not understand bro anymore
because hes talking about pipes and
shit
and signals
for some reason
those are a todo to learn in my mind but not rn
need to laser focus on tty shit
like a water pipe literally
literally tho
wather pihpe
someone pointed out to me recently that its technically O(1) if you take the amount of phys mem to be a constant
but thats probably less useful for analyzing performance lol
here we go again
i think i get how a tty works

theres this thing called a line discipline that can be attached to a tty, its a passive object ofc so it doesnt do anything itself without someone calling it. from what i understand the line discipline has commands and its own buffers. for example with line editing u can have editing commands like backspace and such
the default discipline provided line editing and only one line discipline can be attached to a tty at a time
i think i got that part right
tty has its own fields sure but its kinda useless without a line discipline
did i understand correctly-ish
thats what i got from reading https://www.linusakesson.net/programming/tty/
yea linux documention seems to comfirm it
yea I mean it's O(log n) but if that n is constant then it's O(1)
from reading the linux documention some more it seems the line disclpine is responable for talking to the low level driver, such as flanterm or serial
I think?
id just try running bash and monitor all the ioctls
and implement them
i dont even ahve a tty yet
a simple tty is pretty easy
i dont even have ioctl bro
yea so use the ioctls to implement it as you go
bro
i dont have ioctl
i mean honestly you can probably just think of it like this
make a useless device file and make it fd 0,1,2
then monitor reads, writes, and ioctls to that device
writes for now you can just call flanterm, but in the future when you support cooked vs raw mode and termios stuff you may want to do something else
let me cook here ill try to make an actual tty implementation
does a tty have its own buffer
why does linux have a name for a line discpline
okay reading further into this
linux has it so tty_driver install into a tty, and then the tty driver is passed into the line disclpine for its ops to be called
heres what ill do
yea I think so
you typically have a ringbuffer for input
in the tty itself?
and what about output?
i want it to be done well really
but like think about two users connected to two different ttys
thats not really a thing nowadays, but in old unix it was
so they mustve had a seperate buffer
yea then u'd need both a buffer for input and output
can both be ring buffers?
ring buffers are funny

@cinder plinth ?
how big would that buffer be
like 255?
also should i use a ring buffer for both input and output
okay, im gonna steal a library that impls a ring buffer because i dont wanna do some shitty implementation

wdym nah
its 5 lines of code
No you can't
ill screw up those 5 lines of code
thats ze issue
if i wrote it itll js be bad
and
idk
there is only one way to write a ring buffer and you either do it right or not lol
its literally a pointer and two offsets for read and write head
That's not how terminal input and output works in shells. The shell doesn't forward from the TTY to the child process, it gives its child process an actual handle to the TTY (unless replaced by a pipe)
memove(buffer, buffer + 1, size--); 
In fact, that handle is typically given by just... not doing anything. It's not marked as CLOEXEC so the exec call after the fork to create the child process won't close the TTY handles unless explicitly replaced by the shell for e.g. pipes.
O(n²) buffer lmao
Also it's --size because you want to decrement first
but like that's pretty much how you would do it in hardware
Sorta
The way you'd do it in hardware is usually actually a ring buffer
You can do what you described but it's less efficient
but you just chain a bunch of registers
Trust me, I've made FIFOs in verilog, I would know.
Like I said: what you say would work but is not how most implementations actually work because of efficiency problems or even clock-domain-crossing problems.
Why not
In that manner you can think of it as a two channel pipe duplex
The shell doesn't do line buffering, the terminal does, but in terms of data flow you can think of it like that
Because this implies that the shell is writing data that the first process then reads, which is not the case. The TTY already has that data.
Well, it "already has" the data because the shell wrote that data into it.
The same reason the shell "has" the output data because it was piped in from the process
Do you understand how TTYs generally work under Linux? Because it isn't this.
Like I said earlier, the shell doesn't forward data from the TTY to the process, it merely gives a handle to the TTY to the process.
Did I ever say that?
Your picture implies it.
No. I cut a line through the terminal character device implying it could be represented as two pipes, in a duplex
(The shell -> tty -> process pipe has some extra logic though for line buffering)
Except for the part where a TTY is one file
Sure. A file with two different read ends and two different write ends
The shell gets one set of one read and one write end, the process gets the other, as far as I understand
(I guess this is why you can write to stdin and it will still show up on the shell)
The problem I have with this
Is that even if you do have a shell that intercepts FDs 0, 1 and 2
The way you drew that implies something something different than that
It implies that you can think of the terminal character device as a duplex of pipes
Nothing more
It implies a closed loop where the TTY acts as a glorified pipe to the child process and back, which I am very confident is not what the video tries to convey.
And yes, you can create set-ups like that
But then where does the actual TTY go? You'd assume the diagram would show it too and not just the communication between the shell and the child processes.
I think I did mention it does not work exactly like that but you can think of it as such if it gives you a better idea of the actual workings
what features does the TTY have other than line buffering that I mentioned earlier?
Why is that even relevant to this diagram?
Also the TTY has conversions for newlines
Arguably part of line buffering
because you say "where's the TTY" when I split it up into two pipes
You're not getting the point I'm making
again. my point wasn't to accurately describe the operation of a terminal character device. my point was to give an idea of how communication through a TTY works: you can think of it like two pipes in a duplex
robot you seem like you're being overly pedantic
If you do the analogy of splitting into two pipes, then the way you draw it on this diagram implies to fundamentally change what that square actually does.
Because when it is just one square you're not implying that the shell uses it to send data to the child process, but with the specific way you drew, it does.
Which, once again, is fine, but not a TTY at that point
Because now the actual TTY would be somewhere else and only the shell would have access to it
the shell uses a pipe to send and another pipe to receive
Of course it does
But I don't think you're getting what I'm trying to explain to you.
I'm not arguing against the dual pipe analogy, I'm arguing against how you drew it here.
to reiterate. YOU CAN THINK of it as a pipe duplex. doesn't mean that it ACTUALLY is. in particular there are certain things the TTY does (line buffering and new line conversions) that dumb pipes simply don't.
To reiterate. What you drew implies something different than what I think you actually mean to me.
Other than the pipe duplex system? What does it imply?
The original example shows one handle to the TTY being shared to the child processes and the shell right?
For your analogy of dual pipes, I would expect the division to be such that there's two pipe objects shared by the shell and child processes, each is either written by both or read by both, and the other end is "the physical device™️".
And like I said, what you drew isn't inherently invalid but it doesn't describe the situation I think you want it to.
Certain kinds of simplifications can be harmful. A simplification that actually represents a different but equally valid system is, in my opinion, one of them.
No it doesn't
Here's another attempt
Is this better
I say this because of the sheer amount of times some random youtuber did exactly such a harmful simplification causing me problems solved by looking up the actual system.
This describes the same thing; I think the video's intent is not to show this connection.
It could be if it had said something like "virtual TTY"
But the text reads to me like it's the actual /dev/tty* file
okay so ive impled ring buffers
whata should the 2 read and write buffers on a tty device be called
The name is a bit arbitrary. There will be one used for reads and another for writes from the process. If you have a kernel driver that e.g. uses a serial port for /dev/tty0 then you might call them tx and rx for writing to and reading from the TTY respectively.
If you have a virtual TTY (a special file where one's read is the other's write and vice versa), you might even just call them A and B depending on how the data structures are represented in your kernel.
jesus
i think you have a stick up your ass
The disrespect in that message aside, I'm just trying to be helpful here. I've watched the video and I know how TTYs approximately work and all I'm trying to do is clear up a misconception waiting to happen.
ill call it tx and rx js cause
I never said any of you weren't well-intentioned and I don't judge anyone for not knowing certain things or having a misconception about it. What I do judge people for is needlessly throwing insults. We're both human and, regardless of who's right in this situation, I think you wouldn't want to be described as "having a stick up the ass" either.
umm
ringbuffer seems to kill kernel lol

my code
struct ring_buf *init_ringbuf(size_t thesize) {
struct ring_buf *ringbuf = kmalloc(sizeof(struct ring_buf));
ringbuf->size = thesize;
ringbuf->write_idx = 0;
ringbuf->read_idx = 0;
ringbuf->buf = kmalloc(align_up(thesize, 8));
return ringbuf;
}
// referenced from wikipedia but i sorta undestand it
int put_ringbuf(struct ring_buf *buf, uint64_t data) {
if ((buf->write_idx + 1) % buf->size == buf->read_idx) {
return 0;
}
assert(buf != NULL || buf->buf != NULL);
buf->buf[buf->write_idx] = data;
buf->write_idx = (buf->write_idx + 1) % buf->size;
return 1;
}
int get_ringbuf(struct ring_buf *buf, uint64_t *value) {
if (buf->read_idx == buf->write_idx) {
return 0;
}
assert(buf != NULL || buf->buf != NULL);
*value = buf->buf[buf->read_idx];
buf->read_idx = (buf->read_idx + 1) % buf->size;
return 1;
}
void resize_ringbuf(struct ring_buf *buf, size_t resize) {
assert(buf != NULL || buf->buf != NULL);
void *new = kmalloc(resize);
void *old = buf->buf;
memcpy(new, old, buf->size);
buf->size = resize;
}
Did you mean to use ``` ?
yea
struct ring_buf {
uint64_t *buf;
size_t size;
size_t write_idx;
size_t read_idx;
};
honestly if I acted like you I wouldnt mind it
is there anything wrong with this code @broken depot ??
you should free the old buffer
other then that
and set buf->buf to new
Well you're trying to send characters right?
Why is the pointer for uint64_t * in that case?
That might be what's causing your error.
its a generic ring buffer impl
That's fine
In that case you should multiply the size you give kmalloc with sizeof(uint64_t)
why are you writing 8 bytes at once
oh i just realized why
yes
my bad
lol
buffer overflow like usual lmao
3bugs related to buffer overflows
how funny
Long live the programming language actively opposed to memory safety 
works now
Very cool

its a generic impl
If you want to make it generic, couldn't you just add a field like size_t item_size to it?
Then use the uint8_t * for the pointer
realtek on their way to try and put even less SRAM into their network chips:
your tty wont
i could but im lazy plus eepy
lol
can i offer: hugs
C is a joy
💙
We love you nyaux you’re the goat
I loaded this on mobile and I felt like I was reading the Declaration of Independence
isnt
anyways my tty will look like this
struct tty_device {
}
struct tty {
struct line_disclpine *cur_disclpine;
struct ring_buf *tx;
struct ring_buf *rx;
struct tty_device *device;
}
// and then my tty would impl dev fs ops
void tty_install_device(struct tty *tty, struct tty_device *device);
void tty_install_linedisclpine(struct tty *tty, struct line_disclpine *loc);
sorry i cant spell
😭
is this a good way of doing things
its very similar to how linux does it
i think thats about correct?
idk its been a while since ive looked at stuff like this
still refactoring
how would i go about implementing sys_isatty
im a little confused on how to do that
this is all i have
how do you open ttys?
is your code on github
yes
how will i get that tho
it's your code
whats the best way to approach this i mean
yes
file descriptor
but not all vnodes are dev devices
not description
too lazy to rename
that doesn't match with the code on github
literally select it and f2
hold on
reload ur page
i just pushed upstream
done
your vnode contains a pointer to data
and that data contains a pointer to major and minor ids
i cant just blindly assume data is a devfsnode
check?
how so
wait ik what to do
do you write code without testing it 😭 😭
I just spam asserts
I FUCKING DO SET THE NODE
microkernel and full of asserts
bro
are you sure your os is not managarm?
i need help wtf
It's different
I have separate assert and panic
lol
bru
And I support more architectures than they 
Btw, Nyaux for RISC-V when 
My kernel quality has increased a lot after porting to it

just make a cpu emulation that runs the os and port it to all platforms
QEMU OS

thats lit my tty atm 💀
Now it's my turn to fix my scheduler and implement TTYs I guess
What a funny coincidence we had the same next things on our TODO lists
indeed
@kind root does Ultra kernel only work on x86?
which one
the new one supports aarch64 as well
although im thinking of dropping that
Why
i dont want to support crapberry pi etc
drop until they have a proper standardized platform
yeah but ya know
So like you only support x86?
anyway arm is not a priority, the new ultra will be focused on hardware support, primarily gpus probably
my goal is to run some cool game in 3d accel on a real laptop
with cp'ed linux userland apps
With your own GPU protocol you said?
protocol?
Or uDRM lives?
Idk, thingie
i will have full linux abi compat, so no its drm
well thats marvin's project, I will see about making my impl generic, whether it's even possible
But it's part of uAPI
there is no royal road to the bash prompt, and only those who do not dread the fatiguing climb of its steep paths have a chance of gaining its luminous summit
nyaux is on its way up
congrats
thanks !!
@kind root
yo nice


@edgy pilot

NICEEEE
uapi is kill
nice one 🎉
been fixing more vfs bugs
this is how I do it currently
lmao
I just re-implemented my scuffed vfs from elysium5
I need to properly do ref counting this time
: )
not looking forward to that
it's on my todo list
I a not moving on before I do this
My main concern tbh is string ownership in my kernel
like I kind of pass around strings randomly
and uhh, it's very possible they just get freed when I start dropping vnodes and their associated data
C++ 😎
especially with smart pointers
I can just do vnode.reset() and everything is freed
(if there are no other references to member shared pointers)
I still need refcount for other things
and if there are references?
like how do u deal with that
for example two vnodes are linked to the same resource, one is freed, the refcount is decreased
solved vfs bugs
and the resource is freed once both vnodes are freed (refcount == 0)
with some hacks and work arounds
i am just planning on saying "u can only use this data as long as u keep the ref to the associated vnode" but that completely depends on me making sure that is followed
bash with readline and ncurses @thorn bramble
why does it say ls-5.2
a model I find quite nice is that the underlying storage of a namecache name is refcounted and immutable. for e.g. rename, you want some namecache entry to adopt the name of some other entry, so you decrement the refcount of the old one (and free it if it reaches zero), increment the refcount of the name you are adopting, and store the pointer to the new name in the namecache entry.
i got refcounted interned strings
passing namecache entries to underlying filesystem functions can also be nice. e.g. lookup(inode *dir, namecache_entry *dirent);
one thing that can complicate this scheme is short-string optimization (storing < N byte strings inline). however with a good abstraction it isn't a big deal
generally speaking if i have some long term string storage ill look it up in a hash table of interned strings and only allocate new space if i cant find it in there already
name cache node names, thread names, process names, etc
Why is it ls-5.2 lol
no idea
u awake btw
fuck i need stat and i aint pulling anymore shit from fucking mlibc
i need to
include mlibc headers
somehow
no idea how to set that up
yes
let me know once you've got a build for the Wii 

i got the tty to accept input from serial
and it works with bash
bash has no idea who i am rn

Congrats! 

that's a pretty cool way to do such things
what brought you to do something like that?
I'm waiting for @odd summit 's bootloader 
lol
the default prompt uses the basename of argv[0]
How is it going btw?
i want to put a rope on myself
why
cause i hate being alive
and why you hate being alive
what is happened ?
please don't 🥺
if i fail this attempt i swear to god ima js figure out a way to buy a bullet in ireland then 3d print a weapon to shoot myself
Please dont
what attempt exactly?
@surreal path what are you trying to do
@surreal path
@surreal path I promise, I wanted to install a older version of Python to compile ICU 69 today
Did someone call any emergency services?
That's pretty worrying
I'll call them now
Please call them
How do you call them if you're not from Ireland?
European 112
You can have them redirect you to another emergency service in another EU country?
Yes
ok, police is coming to me
To you?
yes, they want to check the message themself
Ah ok
authorities have been contacted, by multiple people, this thread will be locked and left here as evidence
nyaux has been banned as to comply with Discord ToS. I don't personally like it but that's what the law of the land is
messages won't be deleted because they are evidence
as an update, from what we know, Nyaux is now safe and in police custody
if you people want to talk to Nyaux, he is on the OSDev matrix space #osdev:matrix.org
@surreal path

okay so UPDATE to everyone here, nyaux has reached bash since a while ago as we know. ive implemented fork() a shitty implementation but it works and now im implementing sys exit properly
after sys exit will be sys exceve
we ballin
honestly probs waitpid
before sys exceve
welcome back

osdev server is saved
@surreal path welcome back
Circular lists?
no i have a previous variable
the fucking operator lol
😭
solved it
DAJE ROMA DAJE 💪
daje Roma li mortacci
chat what are we saying
dw about it
oki
Bro-
Some not halal stuff 💀
i apologise on streaks's behalf
he's Spanish and doesn't know what the fuck he's saying
😔
I am literally quoting a video of an AI generated shark with sneakers
}
E
send a signal
aka implement posix signals
aka have fun :3
the signal is SIGCHILD
poop
oh youre talking about the waitpid syscall
yes
no that does not need signals
Its As Shrimple As That Shrimple GIF - Tenor GIF Keyboard - Bring Personality To Your Conversations | Say more with Tenor
Bruh
then how is the thread told
its child process died or its child process is alive idk what bash wants
lol
waitpid waits for the process with the PID to exit
how exactly you implement that in your kernel is not something posix cares too much about iirc
wait() waits for the next child process to finishj executing
iirc the way linux does it is by keeping the process structures in memory/as a process until it has been waited on
which is also i think what posix wants?
where is it stored
as in, if you never wait() a process, it will stay alive as a zombie process (which linux reports correctly as a zombie)
yes it is in state zombie
but where is the process stored
it has no more connected to no threads
with the other processes
all its threads are dead
correct, it has no threads
it still exists as a process though until it has been waited on
i dont have an area to store processes
ok so you probably want one
i only store threads
i think
probably best to ask korona/qwinci/oberrow on that, i have never gotten past very simply TTY stuff 
so uhh, i dont really know here
would something like storing it in the cpu local struct be suitable
because that would be the easiest approach
processes and threads are necessarily stored separately
unless you are linux and threads are processes
you cannot have a thread process separation and have emergent processes as info only stored on threads
threads usually have a notion of which process they are part of

js a linked list
of processes
what ill doo

@rigid fable }}}}}}}}
nice
idk if bash is suppsoed to not return to prompt or whatever
Gud
}
yippee nyaux is back
welcom backkkkk
im eepy
eepy sleepy
hi
Build what
The kernel, I tried doing make but it didn't work and said that cc-runtime git something
execve works without deallocate_all_user_regions() but does this if i do

void deallocate_all_user_regions(pagemap *target) {
VMMRegion *cur = (VMMRegion *)target->userhead;
while (cur != NULL) {
if (cur->nocopy) {
cur = (VMMRegion *)cur->next;
continue;
}
kprintf_vmmregion(cur);
arch_unmap_vmm_region(target, cur->base, cur->length);
slabfree(cur);
cur = (VMMRegion *)cur->next;
}
}
thats lit it
heres where we are atm
execve is implemented and working
however ncurses is being a piss of poop
and not finding our terminfo even tho everything i provide to it is correct?
It might expect certain environment variables
Then i dunno

Not for very long
If you'd asked maybe 30 minutes earlier I could help debug but I'm literally just finishing up so I can go to bed.
Good luck :3
nyaux after trying to open bash after implementing stat mode correctly
my stack pointers fucked
???
Did you buy it dinner first? 💀
I'm sorry I had to. I won't do it again
😅😂
isnt you was nyauxmaster 5.0
are you upgrading
where !??!?!
I am the grammar police
and what you want to do with me ????
I'm going to put you in prison for life unless you fix your grammar
are you duolingo worker
Duolingo is my subordinate
is google translator your enemy
no
the only bribe I accept is a grammatically correct sentence
still wrong after the edit btw
in order to debug further
i need to figure out why is ncurses getting its shit stripped
so i can load it in
and view whats up
idk whos stripping this shit
but i need those debug symbols
i know it crashes in that file
I'm not sure why you're debugging ncurses, this is like 99% a kernel or libc issue
because i dont understand my kernel issue so i need to look into ncurses to figuyre out whats happening
do you trace syscalls
yes
do that
i didnt return an error code
it was valid
it stated the fiel
i gave the file stat
structure
and it closed
and then it hangs?
then it page faults on orq 0x0,(%rsp)
so your stack is fucked?
yep
how big is it
that looks like a stack probe
does rsp look correct? if so you probably just need to increase your userspace stack size
I mean it's low but it doesn't look obviously wrong
maybe it's just at the bottom of its stack
looks like it yeah
korona said its plassuible
userspace generally expects a stack region of like a few megabytes
8k is still nothing
is rsp still near the bottom of the stack?
try giving it like 8 megabytes or something I think that's linux's default
does nyaux have on demand memory allocation
no
no
bruh
or 2
i give 2mib
ah no way! I was right 

heres whats next for nyaux
Nyaux Next Milestone: Run Doom
- support x2apic and ps2 driver
- implement more syscalls like access()
- posix signals
- devfb
- dev mouse
- dev keyboard
- profit???
Nyaux PS/2 driver
you dont need signals or access to run doom
it's piss easy
just get keyboard input working
low effort troll
yippeeeeeee
oh yeah @kind root i havent updated uacpi in a while lmao
i should do that
@edgy pilot any updates on the flanterm fork i should pull?
yeah there have been a few fixes since
yea i should pull and make sure its update to date
also btw
opinion on tic running?
in bash
infocmp also runs and same with zdump
but no signals
actually mostly everything runs expect for this one program but its to be expected cause no access()
tic?
the program
have you considered sleeping?
i cant
i cant
idk
it's easy: you get to a bed and put yourself in a horizontal position, optionally put a blanket over yourself
cant
president trump says: falsch
there are some things you still need to try and do, however pointless they must seem
While sleep is only for the weak, it's still important
not even sleeping, just resting
you might feel like you don't deserve it or you should feel worse or something, but think about it
is it really logical?
what would spock say?
🖖
In other news, it's 6 am here




