#AxeialOS, A Modern AMD64 POSIX Operating System
1 messages · Page 2 of 1

free advertisement is real
marvin just watching all channels for the menix mentions
shameless plug 
why only 2 stars here but 12 stars and 3 forks on repo
😭
so ded btw
well, gotta fix a random triple fault...
fixed that, now fucking fixing random GPF
Lmao
LESS GOOOO
finally fixed the gpf
now a pagefault....
well Thats simple fix just a NULL deref
SO CLOSE to stability
and fixed the timer stuff
like the redundant function to setup APIC timer, like one for APs and one for BSP
bruh
also i'm stress testing with like 100 different prio threads across 4-8 cpus
well that works
all threads get some schduling time... and wreaking fast
tho the loggers are MASSIVE bottleneck
hmm, lets test my kernel then
well it was surprisingly fast, so it mean my kernel is efficient
right
hmm my kernel cant handle too much threads
havent touched for a while though
insane
you kernel must atleast handle 100 - 500 threads. MINIMUM
ig make it less overcomplicated
your kernel is just...
fast?
no, creating is slow asf
well how many thread it can handle before it blows up?
how...
MAX_CPUS * 2
which is 128
hmm
im so confused
your max CPUs is 64?
yeah
should be around here
wtf, you release spinlock, where do you even aquire it in first place?
Oh nvm
i'm blind 😭
fr
it could be activate task
if it also uses spinlocks
and it acquiring the same lock, it may just deadlock
this is the most unsafe code in my kernel
struct task_struct *spawn_user_process_raw(void *data, size_t len, const char *name) {
struct task_struct *curr = get_current();
struct task_struct *p = copy_process(0, 0, curr);
if (!p) return NULL;
strncpy(p->comm, name, sizeof(p->comm));
p->flags &= ~PF_KTHREAD;
p->mm = mm_create();
if (!p->mm) {
free_task(p);
return NULL;
}
p->active_mm = p->mm;
uint64_t code_addr = 0x400000; // Standard base for simple ELFs/bins
if (mm_populate_user_range(p->mm, code_addr, len, VM_READ | VM_WRITE | VM_EXEC | VM_USER, data, len) != 0) {
free_task(p);
return NULL;
}
uint64_t stack_top = vmm_get_max_user_address() - PAGE_SIZE; // Dynamic canonical stack top
uint64_t stack_size = PAGE_SIZE * 16;
uint64_t stack_base = stack_top - stack_size;
if (mm_populate_user_range(p->mm, stack_base, stack_size, VM_READ | VM_WRITE | VM_USER | VM_STACK, NULL, 0) != 0) {
free_task(p);
return NULL;
}
cpu_regs *regs = (cpu_regs *)((uint8_t *)p->stack + (PAGE_SIZE * 4) - sizeof(cpu_regs));
memset(regs, 0, sizeof(cpu_regs));
regs->rip = code_addr;
regs->rsp = stack_top - 8; // Align stack
regs->cs = USER_CODE_SELECTOR | 3;
regs->ss = USER_DATA_SELECTOR | 3;
regs->rflags = 0x202; // IF=1, bit 1 is reserved and must be 1
regs->ds = regs->es = regs->fs = regs->gs = (USER_DATA_SELECTOR | 3);
uint64_t *sp = (uint64_t *)regs;
*(--sp) = (uint64_t)ret_from_user_thread;
*(--sp) = 0; // rbx
*(--sp) = 0; // rbp
*(--sp) = 0; // r12
*(--sp) = 0; // r13
*(--sp) = 0; // r14
*(--sp) = 0; // r15
p->thread.rsp = (uint64_t)sp;
wake_up_new_task(p);
return p;
}
EXPORT_SYMBOL(spawn_user_process_raw);
fair point
i do see why.
raw 😭
well, i have question, why not isolate processes and threads?
what
i do
its just implicit
task_struct->mm and task_struct->active_mm is the identifier
i use linux concept
no i mean, in my kernel, there is two separate structs, one is AxeThreads and AxeSchd
i have the same abstraction
but only from a user perspective
so task_struct is thread right?
my kernel just treats everything as "tasks"
no bruh
its user proc/thread and kernel proc/thread
i see, my kernel treats them differently
thats why mine is implicit
separation is good but its a bit more work when you update the scheduler
like for processes, i don't schedule in processes "context" i schedule in threads context and each process has its addr space and a main thread which is its entry point
because when i actually see videos talking about how processes and multitasking works in OSes
well treating them as "task" may centralize control
like unify
i see
but yea, you gotta improve your kernel
just the bugs
though still cooking my MM again
gotta make sure its solid
btw i freaking port linux maple tree xarray and radix tree in one go
lmao
most of progress is here
yay 5 stars
stresstesting 100 threads across 4 CPUs, on REAL HARDWARE, super fast
are you willing to test my kernel on your hw? 🥰
thats is pretty crazy
i didn't though my kernel CAN so that fast
ig very efficient and optimized
What are the loops doing
Make them malloc somthing calculate some numbers of pi and then free it
And maybe some other system calls 
good suggestion
If you’re doing dynamic memory management shit it’s gonna stress out your system. Make sure it’s large enough to make mmap unmap aswell too
And make sure you don’t have any deadlocks or race conditions there
That’s the main place I’d suspect them imo
Atleast where I suspect them happening to me 
Also make the tasks last for 5 minutes and see how far they all got to check how fair the schedular is
i may do like inconsistent loop calls to KMalloc and KFree
to see if my MMs blow up
Calculate prime numbers
Malloc on composte
Free on prime
yea, lemme do that
And if you hit a limit free all of them anyways
Like num % 256 == 0 do a free on them all
whats more impressive is that I'm PRINTING in EVERY 10000 Loops, NOT EVERY LOOP
just imagine HOW wreaking fast that is
yes
Not really.
Yes its fast.
But printing is the expensive part.
Not the loops
I bet if you printed every loop it would be a lot slower.
Not that fast lol
But as always, its 100% faster than a emulator
Loops are basically free especially with modern branch predictors
They are gonna be nailing it every loop
And basically make it one cycle
yea
Possibly less than a cycle depending on throughput too?
I’d have to check the uops list tho
indeed, i'm aware of that fact
also my KrnPrintfs loggers ARE HEAVY, very very HEAVY
Update: doing final stability touch ups
today and complete this shit
you should port the fireworks test from my OS: https://github.com/iProgramMC/Boron/blob/master/drivers/test/source/fworktst.c
the name is pretty self-explanatory of what it does
each firework particle (1 pixel) is controlled by a thread
so you can have hundreds of threads all using up a little bit of scheduling time
hmm... worth the try honestly
how do i port it?, as a kernel module?
however you see fit
hmm, doing that
fixing some posixfd stuff
my fds broke and printf doesnt work for libc (newlib) 
also thats my final thing to fix
Bro picked the worst possible libc
ngl was the easiest to port, as i have ported and tried it before, mlibc gave me stroke 
-# or i'm just a noob
Sysdep moments
I'm just gonna use musl
musl is also good
Or llvm libc if I want to be truly GNU free
do yall think i need to add documentation? for my kernel?
because it's almost complete
also doing some more error handling overhaul
obviously
fact, the xv6 kernel (MIT teaching kernel) have more docs LOC than the kernel itself
just the old xv6 though, newer revisions (like the 2022 course) is much bigger
use mlibc
it's way more portable
llvm libc is incomplete and hard to port
I'm unsure why but a lot of hobby OS's all of a sudden started porting newlib for some reason.
What made it easy to port
fair point
i don't get what's so hard about mlibc tbh
there's literally a demo of how to do it
toolchain ig
????
it isnt better with newlib though lol
the problems with headers and sysdeps
this should explain how everything works
huh
never had any issue with that
Suprisinigly since that thing is riscv so that didnt make it any easier for me personally.
like static assert problems and stuff, making it compile my sysdeps was also hard
Yeah GCC/binutils need diffrent patches for x86
but you need these patches regardless
its really easy.
like, using newlib doesn't magically fix this issue
or well maybe its only me
thats what im thinkinh
it wont be better with newlib
Mlibc is just a plain better libc too in general with atleast decent documentation and examples for getting started
i might be biased, but mlibc is literally piss easy to port. you just implement the sysdeps and add it to the build system
and you have people here that actually care about it and can support you
so whats the choice then, musl or mlibc, what do you guys think
are you doing linux binary compatibility
yes
i had like problems with headers and just refusing to compile, like tons of static assert kind of problems
in mlibc?
maybe i'm a noob
yea
please drop the errors, might help us in the future too
sure, if i would switch mlibc, and ofc i would retry, newlib is pretty stripped
and kind of bad
like long sysdeps list
the mlibc sysdep list is pretty short actually
and since they're weak functions, you can just leave out the ones you don't have
interesting to know that mlibc is a bit larger than musl
it's also a bit more correct :P
most notably, musl only targets linux, but managarm needs a lot of userspace code in libc to work
hmm, maybe mlibc is a better fit?
though again, i forgot, i make kernel
so maybe my distro will use mlibc
note that not all programs support mlibc upstream (because of messed up includes, aka not posix compliant programs)
so you might need few patches for some programs
i recently upstreamed a fix for fastfetch
and xbps
Should i change name of "AxeialOS?"
it's too random
and was random
i just thought "Axe" and "Axial Loads" would be nice
you would have to build a cross compiler (or hack your way around the fact that your host compiler compiles executable for your host OS) on any libc
so thats not really a problem
mlibc is actually super portable, like to start with you need like 10 whole mlibc::sys_X implementations
(as you port more programs you implement more sys_X callbacks)
its really neat
im not sure how the arch portability is but they did get a 32-bit x86 port going so
Firstly no, for mlibc you need to build a full toolchain.
I know, I've already ported mlibc lol
PushError("Ayo, Exception #GPF", -Unknown)
10 words??????
Well the constrains are all optional
forgot the asterisk
Okay but still
How do you even name an os more then like 4 words
Without it sounding ass
If it's not built with swift, which ik it isnt no.
It is pretty optimized and efficient
just not stable
Lemme cook
what does that have to do with the thing?
Swift = fast
💀
Fuck, lets think of others
Personally I would just think it's a OS built in swift
already taken
https://swiftos.dev/ saw that
Swift OS is an intelligent operating system designed for digital sovereignty.
64IX?
really weird
Axis?
it's taken maybe
what 'bout "Velonix"?
"Optix"?
wait that's nice, "Optimize" + "Unix/Posix" + "Optics"
meaning: fast + standard + clarity(open source)
hmm
what do you think about this @tepid burrow
Optix might have issues with Blender Optix and nvidia Optix (ray tracing)
fuck, that was actually a great name
lemme think something else
Yeah, Optix is very sleek tbh
also matches lot of my OS
It would be modular and ultra optimized while being lightweight
with modernness
i had another "Velix" or "Velonix"
likely velonix here
velix is a bit unclear
I see
lemme check if it's ALSO taken
AI BIKE ☠️☠️ ☠️☠️ 🔥🔥🔥🔥
fr its software would also be written by AI
Huh
Imagine if it's trademarked
☠️
that doesn't matter if the name is trademarked
AxeialOS is obviously not a taken name
so that's the reason for AxeialOS
what about ShitBox 
totally not stolen name from Busybox
hmm, what if i use GPT-5.2-Codex-Max-High or Claude 4.5 Opus-Max to think of a name 🔥
btw, got some news on some random guy making a PR to redis (the database) deleting 4000 lines of a float library in C++ and replaces it with vibecoded raw C impl within 350 lines written with claude and reviewed with gpt
im already broke
using those make me broker ☠️
how much do you like debt to our ai overlords
wat
like how much i spend
if so, i spend none, since i just do docs using agents
and i can wait for it to renew
what is not ok is my token usage, though just input token
speedrunning how get
Droid and opencode
You get 1m token free and 10m token if you add a cc
Got this for free
fire
PS/2 best port ever
Just the fact that you need to restart to change keyboards
porting Play Station 2 🔥
-# \jk
the reason why error handling in kernel is so superior in my OS
huh what do you do different
it just looks like normal error handling
Its part of my second Error and Errno handling overhaul
lmao, some intel chips does not suppor windows
Huh a Debug Exception, not intentional? huh?
the TF is set in RFLAGS? hmm...
also adding support to Syscall/Sysret instructions
as i used Int 0x80
But i'll support both of them
Int0x80 and Syscall/Sysret
here is that setup:
uint64_t Efer = ReadMsr(0xC0000080); // EFER MSR
Efer |= (1 << 0); // Set SCE (System Call Enable)
WriteMsr(0xC0000080, Efer);
uint64_t Star = ((uint64_t)0x1B << 48) | ((uint64_t)0x08 << 32);
WriteMsr(0xC0000081, Star); // STAR MSR
WriteMsr(0xC0000082, (uint64_t)SysEntASMSys /*Syscall*/); // LSTAR MSR
WriteMsr(0xC0000084, ~0x2); // SFMASK MSR
#DB happens on Sysret
which is weird
SFMASK is for syscall
for sysret you'll want to look into whatevers in rcx/r11 and see how that value is getting there
Hmm...
But i do handle them and don't touch them
well you put something into r11 before using sysret, what is it and where does it come from?
Well i dont?
The above one is the kernel's handler and the bottom is the userspace caller
Also i just don't know where the fuck CS = 0x2B coming from, ik its a valid usercode selector but i don't set it?
you should look up how sysret works (especially wrt to populating CS and SS)
and right... so you dont set r11, so it could contain anything
yeah. R11 is caller preserved, those functions you call are free to trash it.
yes... wait a min, lemme try something
oof yeah
the first time you implement sysret is when you learn sysret doesn't load selectors how you assume it would
:P
:p
I guess i fixed the DPF by saving the R11 in the kernel stub on the stack
and restoring during sysret
no problems 🙂
also note the rest of what sysret does with CS/SS, it uses fixed values for the hidden parts of the those registers. You'll want to ensure this matches your GDT otherwise you may into an issue on the next iret, or anywhere else that checks those values.
not checking the values on sysret still pisses me off
this is also one of those edge cases where intel and AMD behaviour differ, but I forget the specifics
check the manuals for that
yeah, but it is what it is
intel does cs |= 3 on sysret and (cs|ss) &= fffc on syscall (same for ss)
amd does not
YAY Syscall/Sysret work! now i support both!
If you don't wish to support compatibility mode, make sure to write a empty stub in CSTAR register
do you need to write a stub tho?
if you don't support cmode then you will never get to cmode
meaning you will never get a cmode syscall
unless it allows you to do cmode syscalls from lmode
which is stupid
Well it's better to safe
I've learned to never trust the user
Some malicious program might trigger some compatibility mode syscall
sysenter
Compatibility with AMD's x64 implementation?
no
not to that
for fucking intel
yeah
amd does it correctly
strange that intel just didn't bother
that's something completely different tho
sysenter and sysexit were made by intel
and don't work in lmode
the sysenter_esp and sysenter_eip were never updated to 64 bit
Mhmmm
I have a feeling intel isn't telling the whole truth
"is not recognized in compat mode"
🤔
they always say something like "If Mode != 64-Bit.`
and omg apparently sysenter does work in 32 bit
bro what the fuck is intel on
RSP := IA32_SYSENTER_ESP;
RIP := IA32_SYSENTER_EIP;```
yeah okay intel
oh my days
intel extended them to 64 bit
😭
nonono let's not bother implementing the cmode versions of syscall/sysret
but let's extend sysenter & sysexit because we made them so we can feel good about ourselves
okay so tldr
intel doesn't allow 32 bit user apps to use syscall
amd doesn't allow 64 bit kernels to support sysenter
sooooo
Intel rn ^^
you wanna know the most brain dead fucked part about sysenter
IT DOESN'T SAVE A STACK OR THE RIP
nope
The RIP
nope
What the fuck
yep
or rflags
(linux/arch/x86/entry/entry_64_compat.S)
for flags you can just pushfq and be fine* (the if flag is cleared on entry <3)
Intel making AMD look sane
what goin' on here
linux seems to just say okay ebp is the stack
I have no fucking clue where it puts the return address tho
lemme join in

well, i guess my kernel is too massive
god
i need python script to configure and auto uncomment-comment #define
@bronze prawn I’m pretty sure Linux still uses interupts for 32bit syscalls no
Fuck you mean
Use ifdef
And check for arch or whatever
you can't support 32 bit without supporting sysenter
you would just fault on the instruction in kernel mode
very smart!

Fuck
Why
Why Intel
What the fuck is wrong with you Intel
Not that, my kernel have configurations which are controlled via tons of macros and these statements
and i trun them on/off via uncommenting/commenting respectively
And you can disable syscall/stsret in EFER
their #define statements
the wiki states
CPU registers
These must be set by the application, or the C library wrapper
ECX: Ring 3 Stack pointer for SYSEXIT
EDX: Ring 3 Return address
Operation
When SYSENTER is called, CS is set to the value in IA32_SYSENTER_CS. SS is set to IA32_SYSENTER_CS + 8. EIP is loaded from IA32_SYSENTER_EIP and ESP is loaded from IA32_SYSENTER_ESP. The CPU is now in ring 0, with EFLAGS.IF=0, EFLAGS.VM=0, EFLAGS.RF=0.
When SYSEXIT is called, CS is set to IA32_SYSENTER_CS+16. EIP is set to EDX. SS is set to IA32_SYSENTER_CS+24, and ESP is set to ECX. ```
but I'm not sure if this is true
we prob could move to #x86
or just somewhere else
I don’t even wana argue about this tbh
It’s a dead horse
The instructions suck dookie shit
you can't disable sysenter tho?
oh
I know what you mean
oh and not even talking about the funny intel sysret silicon bug
(if a non cannonical address is in rcx when executing sysret, a gpf will be taken in cpl0 with a cpl3 stack)
😭
How do you prevent that one
just check it's cannon before sysretting
do intels job for them

i'll push teh changes soon after fixing some... stuff
-# i broke the driver manager database 
So, if i got it right from the SDM
SYSENTER does indeed not save anything, and SYSEXIT uses ECX and EDX for SP and IP respectively
I have no fucking idea I'm not gonna lie
so you as an user program must give SYSENTER a return address and stack, linux uses ECX and EDX
But you could just make it EAX and ESI if you wanted
yay a kernel config file
yay a python script
Oh cool
why not just kconfig
also these config options are way too granular
@sleek mason told ya
that's the goal
give as much granular control i can
i mean these seem mostly to be for development builds
yikes
like if they have a problem in x thing they can just enable logging in it
that's way easier to trace than having everything enabled at once
well nvm fixed it (problem was a inverted conditional)
should i push the changes?
i'm delaying this shit too much 😭
why
you can just log everything and filter for relevant logs

i generally don't understand the point of hiding logs
you want a lot printed on the console
They can affect performance, so hidden the better
how?
are you logging in a hot loop?
rather, why not just have a loglevel command line option
then you can limit the logs to debug/info/etc
Logging every page your VMM maps and every page your PMM gives 
💀 what's the point
I had a bug with my VMM and I had to find where it was fucking up
my kernel prints like HUMANGOUS amount of log
but you remove those after
printf debugging
it takes too much time to filter out
you don't leave the prints in
Log to an in memory buffer and then have a dmesg tool and grep it
how
ctrl + f
💀
you already print the lines of where stuff is happening
i'll do that
lessgooo
, 16 stargazers on our repo
And ONCE AGAIN something broke
this time the PosixFds
lmao
And the cycle continues...
just because of bad logic or inverted logic...
i'm just hoping this is the last thing i have to fix...
after the fix i'll push the changes because i've delayed too much
I just pushed this morning
Very nice
i've delayed a week
And the main branch is just a mirror or the latest release
Yes it's nice
So we donf pollute the main while having the sources online
i guess after the push i'll merge the pre-main branch to main
because it's too outdated now
I just do it when an update is worth a release
yes, that works
Current diff state
but yeah the changes ARE ALOT in my kernel
33K additions
Agreed
Right
you've seen it in my live stream from yesterday
Still wonder why so much
ig you lost track off it, relatable
Right
ig there will be more deletions than addition in my push diff 😭
because cleaned up lot of clutter
it was suppose to be finished in the first week...
I got 2 week off
Yes
Then the second
And third
And im still not planning r0c2 till next weekend
my commits are inconsistent
stablizing?
Pretty much the same
this maybe my most delayed commit
Id say that im trying to equalize the work put into subsystems
In a fair way so they can grow gradually
3 weeks ago was the last major commit
You planning any release, versioning model yet?
Currently uses this https://github.com/assembler-0/AeroSync/blob/dev/include/aerosync/version.h.in
nope
still considering
well i will have the first release if i at least ported bash shell and terminal

peak
again... fucking again... something broke
, user stack is misaligned during schduling and user stack's argv and envp points to NOTHING
































gotta fix the argc, envp and argc...
perfecting some stuff
almost fixed the argv, envp and auxv
was tiny problems in the SetStack function
well... the push order was wrong... lmao
LESSSGOOOO 
magnificent test string 
I don’t even do argc or argv or envp or auxv
i do 
i guess that's enough to port a decent bash
I do.
because my main focus is on kernel
And I’m gonna copy on write

i don't use COW
🥀

It’s just a reference count and making pages read only if it’s > 1 ref count
🥀
And then handling the fault by allocating one 4kb page and copying the data and changing the PTE
well i guess i would overhaul my fork and execve
Something like that
Plus CoW also lets you do on demand allocations later as it’s a similar framework
With allocating things and copying/zeroing on the fly
i guess i must invest my time to add CoW
should i make a insult randomizor for my exceptions?
like different insults to driver devs and me (kernel) with function called StrTroll 
fuck, i can't create new processes via execve if in userspace
fork is breaking stuff 
as well as execve is fucked 
AND ONCE AGAIN! BROKE SOMETHING AS ALWAYS...
🥀 💔
😭 
why am i speedrunning in breaking stuff
well on the brightside atleast it would make my kernel "safer" and "usable"
without crashing now and then
Never celebrate too early - A lesson I learned on chess.com
bruh
I personally do pop culture references to stuff I like for the most part and a few other random things
hmm... i just noticed that the BSP Cpu's APIC timer never interrupts...
interesting...
well nevermind
i've fixed it
problem was the BSP conditional which keeped the APIC masked lol
yay execve works (as well as segmentation fault).
cool!
whats your philosophy?
*for contributors
im cooking up my guidelines
currently looks sth like this
looking for inspiration
i don't?
well i dont have a contributor.md nor a "active working" contributor
if you are not too strict
well same here
but im doing it in advance
though for sure no ones gonna care
fr
well i didn't made one because obviously i thought this project won't get popular so i just made my mind to do it later
i see
i probably have to do this carefully
since stuff like definition issues
etc..
people can exploit those
like this example
well ig i'm fine to be solo, like if any one wants to contribute their changes just fork and open PR for consideration
thats 1990 workflow
i'll tell them the philosophy later when they had already opened a PR
like changes and etc
bruh
well i'm not expecting any active working contributor anytime soon
mellos
the issue is, you are threatening]
and that is the worst possible thing to do
in a legal document
plus, it have unclear claims
ig it's nice, atleast it's being clear
"you're free to do whatever you like with it (free as in freedom!)."
and "However, there are a bunch of things we would prefer you avoid to do with this Software"
"do whatever. also here is a list of shit we don't want you to do with it"
like
dawg
literally conflicting words
I mean
not really tho
you can do whatever you want
but we would rather you not do these things
company wants (very) clear intentions
then you shoudnt say that in the first place
that you can do whatever you like
it should be rephrased
wdym?
it perfectly fine
"You can do whatever. but we would like you not to do this"
well i don't see anything wrong with it.
do whatever you like is actually very strong
in friendly terms it is fine
it's whatever gpl3 allows
but for legal documents its not that straightfoward
ik
what's more straight forward is to attach this statement in the readme "read the LICENSE.md for legal details"

yeah
what they just do is add another layer of implicit declaration
yeah
wait
I agree with that
while not legally binding nor legally enforceable it does make it less clear to a normal person
it is
"prefer you avoid doing" is not legally enforceable tho
ig they are just joking around,
-# also the fact it's not a commercial OS for commercial use
idk, internally, they discuss it very seriously
i was there the whole time
well obviously, we follow license, not readme declarations for uses
cant agree more
"memory violation" sounds like someone breaking/snapping RAM while inserting it 😭
but yay segfault
bro got a point there
Must have a heartbeat
And preferably not be a bot with human front
wdym?
les fancier way of saying "Segmentation fault"
yea ik
Is this from LinkedIn 😭?
guau
gnau
yup
my kernel love segmentation fault
also AxeOS is the smaller nickname for AxeialOS
like axeos
and axe body spray is the official axeialOS body spray made for real men 
lol
17 stars on my repo

insanity
well still fixing my execve and fork
execve has problem where i successfully load the elf and create the process, but returning to the reused thread causes this segmentation fault
^which is this^
fork has the problem where the forked child is executed but just never proceeds to run at all
does my kernel have lot of features?
lemme list em all
Wow that's a short list 
List of features my shitty kernel has:
- VMM
- PMM
- Kernel Heap (Slab free list allocator)
- ModMemMgr (manages memory for kernel modules) well partially deprecated*
- Kernel module linker
- Driver manager database.
- Device manager
- Plug-n-Play (well unsure if it works well, untested)
- MLFQ Scheduler
- SMP
- Unix-Like VFS
- POSIX processes
- Threads
- Procfs
- Devfs
- POSIX Signals
- POSIX FDs
- POSIX Syscalls
- Syscall instruction
- Int 0x80 Syscalls (legacy is supported)
- IDT
- GDT
- TSS
- CoW for fork
- Timer support for APIC
- Timer support for HPET (well its TODO for ignore this in list)
- Timer support for PIT
- kernel config
- Testing stuff
- PCI Bus system
- RAMFS
- Initrd/Initramfs (my BootImg)
- Firmware blob management stuff (request firmware and etc stuff)
- a EarlyBootConsole (WHICH STARTS WAY BEFORE EVEN GDT/IDT/TSS, every first thing to start in the kernel)
- UART (serial port debugging)
- kernel symbol exports (KExports for drivers and kernel api)
- Mutexes
- Spinlocks
- Semaphores
- BusyWait (Blocking and Non-Blocking)
- another massive debugging infrastructure (my printf loggers and per-file loggers).
- handle user faults
- module record manager (handles all loaded module because driver manager is dependent on this as its older ancestor)
- block devices(devfs)
- char devices(devfs)
- parses memory map ofc
- massive and overcomplicated error handling structure and logging (Errnos)
insane wall of text
EarlyBootConsole getting a shoutout
the first thing that starts in my kernel is the panic handler
the prinkt (s1) the when modules are loaded, s2 kicks in
do you think my kernel has not enough features, from the list?
ig its pretty featureful
'enough' vastly depends
then nothing is enough (imo)
a GP os has to be up-to-date with whatever the world is like

but yeah that's way more than enough to handle some sophisticated applications
hmm, idk what to focus on now
your kernel is also a GP right?
drivers stack, an fs, perfecting my sched
yeah
i guess have a proper driver and device abstraction
like DAM in my kernel
thats what i have been making
with UDM
but yeah
nice
good point
also make it good enough to work as PnP
PnP support is hard
because of the diversity
of USB is infinite
indeed
well my kernel maybe can handle PnP
still i have only a PCI bus
very cool then
thats enough for now
people say pci is dead
in reality, it is still there powering everything
AHCI, xHCI controllers are on pci bus, PCIe still needs PCI, and NVMe itself is just PCIe
because of my probemgr and device abstraction makes it easy to load specfic drivers when needed at run time and because hardware events exist
im thinking of adding real modules some where in the future
i will make a distro using my kernel
and my kernel has a function called CheckForHardware which calls the probemgr to trigger lots of probes and check for any hardware changes like a new driver and load the driver and put into the device tree
maybe in the late 2030s ngl
i see
nah i think the name "AxeialOS" is fine
I'm too used to it now
and changing it is a bad idea
the only good instance of renaming a project applies to windows, they should rename it to "if EA made an operating system (episode 1)"
I gonna just push
too much delays
less goooohttps://github.com/VOXIDEVOSTRO/AxeialOS 
@exotic ibex i've pushed the changes after a long time
lets see whatve you been cooking
what?
why bad? invalid is the word
the patch is filled with atomics
where is the advertised configurator?
mostly a logging and return values consistency
indeed
it's not yet complete
there is the header file in ./Kernel/KrnlLibs/Includes/__AXEKCONF__.c
lots of fixes and features too, some SMP fixes, POSIX Fds fixes, Syscall Instruction, Fork with CoW, Timer has a BSP and AP Conditional, Error logs everywhere with tracebacks and errno codes, atomics, fixed the userstack argc, argv, envp and auxv
and other fixes i lost track off
no i mean the gui python you showcased
yeah
GUI idea: Use CSS and Javascript to design the UI
(You need to technically write a web page renderer in userspace)
Maybe a js engine too
which ui you are talking abt>
web-based os?
Use CMAKE for that
ccmake?
Yeah that
dude, thats not a depedency engine
and it sucks
for kernel configuration
Nah, under the hood. It's your typical os, just the gui is designed using CSS and js
here dependant is a thing
interesting
Maybe
I haven't really explored granular cmake configuration with my kernel yet
Pro: GUI changes are easy
Cons: Typical web browsers contain like a few million lines of code (assume that ~30% of that is the renderer)
Windows does exactly this (well react native) for the start menu and it’s slow as shit
It does??
Yes
Lmfao
My friends even saw some of the OOBE was using html and CSS for the animations
This would be tearing a page right out of windows
Tbh, I got this idea after configuring gnome
Well you see I really hate gnome

But native UI stuff will be alot better in the end
Opening an electron app vs a native app for example

number 1 reason why i delete rhel 10 after 2 hours (beside its nerfed dnf)
my kernel isn't stable to fricking support lol 😭 i dont even have my own and very first driver either
well my kernel can support that if i'm a miniac to port that
assuming i fixed everything in my kernel
i would still have to make some real sophisticated drivers to support that or even internet at all
well back to fixing my Processes (fork and execve)
i've been procrastinating alot
no?
i dont think so
i'm on vacation guys
for the next 16 days
so this will be some standstill
tho i'm getting my GCC work on my arch linux laptop lol
SIXTEEN
nah i will be active on github
and try a workaround to work on it
also my laptop battery lasts way longer on linux
for some reason
new funny number
hope you have a great next 2 weeks <3
developing AxeialOS on arch linux! for the entire span on vacation 🔥
windows does too much crap it basically halves the battery 
this projects is not ded
we will see
5 months is when it becomes ded
yea but messages not being sent for 5 hours is just the time a channel is quiet pretty often
algorithms channel is a good example of what ded truly is
I should've added \s
yea but /s not \s (doesn't matter tho :P)
Nah, that's just super-sarcasm
reminding this PROJECT IS NOT DED
THIS PROJECT IS NOT DEAD, i will make this into distro for sure if #1467786251510743061 goes nicely
just do what I do, take breaks of years in length and keep coming back and adding more to the os. people stopped assuming mine was dead the 3rd time I came back lol
well i'm on vacation, my main PC where i put my AxeialOS workspace is at home, i'm just with my arch linux laptop
that explains the inactivity
just the single word "vacation"
take a break o7
i will make a AxeialOS distro but from the Modularus kernel
#1467786251510743061
great idea
we should clearly go back to the weird k&r c function definitions they were so good!!!
Except defining function arguments outside the parenthesis
what why would you exclude the best part
DED @sleek mason
The code is gonna be repurposed for the Liquix
ig so
this didnt last long
your disappearance is still a mystery
considering they're now a deleted user, their return is unlikely

though just a bit sad, hes my frist friend in the osdev journey ngl
we cant do anything so yeah 👍
its just memories

