#EvalynOS
1 messages ยท Page 26 of 1
do you support yellow mces? /j
why does it have colorsssssssssss
I think this is for decoding only?
The MCi are banks iirc
Which report what happened
Prolly similar to the firmware shit
For lighting an LED
Some MCEs could be shit like corrected ECC error
That you can just iret from safely
Unhhh
uniquely colorful
Ultra cyan
yesssss
Olo is an imaginary color that can only be seen using specialized tools that exclusively activate the M cone cells on the retina.
It is impossible to view olo under normal viewing conditions, due to the overlapping sensitivities of M cone cells and S and L cone cells in all wavelengths of visible light that evoke them. In other words, there is n...
Also known as this
sure don't have pusha on x64
have 20 MSRs to do the same ๐ญ
Tbf this is useful
If you get an #MCE you could do some fancy shit with this
Like relocate to another CPU
And not worry about the status of the stack on that core
hm
fair enough
Other than the MCE IST
This may also be separate from the other bit
UCR is a different class from the kernel getting the error?
Which the other bit I think is about?
Yeah
Or well this one
Which enables MCEs to come to this core iirc?
Which should be what I want
We should come back to this tomorrow
it's 3:30AM so already tmrw :3
Wait
yes a student graduating on tuesday is not learning stuff and instead cosplaying a military jet airport at 3:30AM
MCEs will get broadcasted to all processors if the local thing isn't enabled
hm
fair enough
though the other cores aren't running i don't think
so either way it'd be better for it to be the local core
Ig so
oh lookie what intel has blessed us with :3
But it ain't really needed
reading this correctly, it seems you want to have the LMCE bit
from a quick glance at the manual, seems that any failed memory read due to hw raises a UCR MCE
Iโm like 99% sure i followed this?
Letโs sleep ๐ญ
fair enough
i have to finish (or i guess moreso start) ATA tmrw otherwise i'll be sad
(If that's available)
didn't read that much into it to be honest
leme patch in the bit 24 thing rq
If you have MCG_SER_P you should also have this
So yeah bit 24
I still don't get how you do the banks thing
Like
i handle thoes just fine acc
Ah
oh
and clear IA32_MCi_STATUS bit 55 - AR action required
some UCR have default action to reset CPU if AR = 1
any by some i mean 2 ๐ญ
i clear all to zero
Maybe when i finish the build scripts and interrupt management system (with IRQLs) for my kernel I'll add MCE handling
bet it doesn't show and the last 7 hours or however long this took were wasted ๐
but it was fun
#when-your-os-goes-crazy message oh if i knew ๐ฅ
oh shit
i don't have colors :c
@jade olive @clear bison let us pray this works
screenshot of minicom?
or vt 200
iirc
one of thoes
For the sake of @jade olive's sleep ๐
Lmao
whyyyyyy sleep when not sleep
why sleep when #MCE
yesss
why sleep when chapter 17 of the Intelยฎ Software Developer Manualโข looks so juicy ๐คค
REAL
unless @tender mantle makes me sleep lol
i still havr to take a shower and clean desk tho
Have a TTS of kasane teto read it to you
we need a boheman raphsodey of tetos singing it
lemme tell you a bedtime story :3
[ARCH EARLY INIT] 16550 UART INIT [OK]
[ARCH EARLY INIT] SMEP Enabled [OK]
[ARCH EARLY INIT] Control Registers Init [OK]
[MCE] CPU has 25 MCE Banks
[MCE] MCE SERP Supported
[[ KERNEL PANIC ]]
#GPF (0x0D) - General Protection Fault
General Registers:
RAX=0x0000000000000022 RBX=0x0000000000000019 RCX=0x00000000000004d0 RDX=0xffffffff800478e8
RSI=0xffffffff80091fd0 RDI=0x0000000000018689 RBP=0xffff8000bdd75fb0 RSP=0xffff8000bdd75f90
R8 =0x0000000000000001 R9 =0xffffffff8002f001 R10=0x0000000000ff55ff R11=0x0000000000000000
R12=0x0000000000000000 R13=0x0000000000000000 R14=0xffffffff80079fe0 R15=0x0000000001000819
Interrupt Frame:
IP=0xffffffff80042ace SP=0xffff8000bdd75f90
SS=0x0000000000000010 CS=0x0000000000000008
FLAGS: 00000000 00000001 00000000 10000110
ERROR: 00000000 00000000 00000000 00000000
Control Registers:
CR0: 10000000 00000001 00000000 00110011
CR4: 00000000 00010000 00000110 00110000
CR8: 00000000 00000000 00000000 00000000
CR2=0x0000000000000000 CR3=0x00000000bdd65000
โโโโ
โโโโโโโโโโ โ โโโ
โโโโ โโโโโโโโโโโ โโ
โโโโ โโ โโโโโโโ โโโโ
โโ โโ โโโโ โโ โ
โโ โโโโโโโโโโโโโ โโ โ โ โ
โ โโโโโ โโโโโโโโโโโโโ โโโโ
โโโ โโ โโโโ โ โโ
โโโโโโโ โโ โโโ โโโ โโ
โ โโโ โโ โโโโโโ
โโ โโโ โโโโ โ โ โโโ
โโโโโโ โโโโโโโโ โโ โ โโโ โโโ
โโโ โโโโโโโโโโโ โ โโโโ
โโโโโโ โโโโโ โโโโ
โโโโ
โโโ
I fucked up 3:
well CLEARLY you're generally unprotected in your kernel
obv
and it's your fault
obv
this is the rught bit right? #define MCE_CTL_EXT_SERP_EN (1 << 0)
yes
and MSR #define MSR_MCE_EXT_CTL 0x000004D0
yes
wtf then???????
That's the IA32 family system developer manual in physical form!?
Obviously
though i know a guy from my school that actually DOES have the physical one
back when intel had that funky e in early pentium days
the hardback cover with the shimmering silicon die
Maybe you should just find the LARP bit and LARP as having MCE support

how though?
what is there to do wrong?
what if it's lsb first clueless
1<<63
trust
trust
IA32_FEATURE_CONTROL is 0x3A before you start looking
assuming the lock is 0
nonzero chance it was intel
idk how you'd fuck a corporation
this should always be locked
well we can see
i think it is
maybe we'll find some intel microcode vuln ๐ญ
well chipset only / firmware
i'm the one with a xeon cpu
might as well test it out
do like 187867928718759278 test cases
and i'll make a 1MB capture ๐ญ
i'm strictly IA-32
๐ญ
64 bits is way too many bits
you know how much bites that is?
i don't want my cpu biting me 8 times
that cannot be worth it ๐
steal half my kernel code ad-hoc to test
mmm steaaakkkk
Do you wana beat this section of the manual
๐ญ
this is like the 4th section we've opened because of the MCE
i'm gonna beat an intel engineer
But technically that thing faults
with the printed manual
Is because lock is not set
And the bit for this isnโt
So the firmware may be doing something????
i'm gonna add like an interactive msr reader/writer to my kernel
surely worth it
trust
๐ฃ๏ธ ๐ฅ
"Oh also MSRs are technically 64bit anyways"
the naรฏvest intel fan
im gonna test out if unstableos even boots on that godforsaken broken server

that's not the point ๐ญ
that CANNOT be worth it
"reverse bios trampoline" ๐
Instead of going to 16
where's my flash drive
Goto 64
have you seen it?

void rdmsr() {
goto 64;
_readmsr();
return 42;
}
?
i'm so glad i go to so many rando IT competitions and stuffs
i have soooooo many random <8GB flash drives
I wana eat
mmmm
You forgot the goto 32:
But yeah
be good and i'll treat you to a usb flash drive ๐ญ
no need
there's enough bits in 64 bits
๐ญ
surely i can control SAS disks with ATA
surely
trust
oh wait a minute
there's nothing necessarily preventing me from using 32 bit paging on 64 bit, is there?
the most scuffed x64 port you've ever seen
I mean
Itโs the same as PAE paging
But with 2 extra levels
Thatโs it
Itโs really fucking simple
It honestly is not that hard to do a 64bit kernel lol
but another table :c
i highly recommend not looking at my code
you'd throw up prolly
๐
your code is so pwettyyyy tho

mine is meanwhile...
Thank you
I try to make it clean
and worst of all
https://github.com/RealFoxerity/UnstableOS/blob/master/src/mm/kernel_memory_address_spaces.c this
but i do have CoW fork :3
so achievement achieved
That looks fine tbh
Meanwhile Iโm on rewrite 9474837373
if you go into writing an os with the mindset that it's gonna be shit anyway, then you don't need rewrites :3
look at mine's name for crying out loud ๐ญ
But I wanna rewrite good code 3:
yeah ive only rewritten once and thats because i couldnt work with the codebase anymore because i know it wont be perfect anyway so whatever
Maybe I wish my code to be perfect
Or Iโm just fucking terrible at designing code ๐ญ
so first of all
no serial
that's just broken
second of all
that ain't fucking white
i pressed enter on serial and got an RTC alarm, huh? ๐ญ
i need serial to work
no eep
serial fix
it took a second to enumerate all VBE modes by jumping to V8086...
(Steal my serial code lowkey)
(I spent like 8 hours on it)
but i wanna learn hikey
You really have a thing for people stealing your code
Only with permission and when itโs actually good code
And not somebody stealing my code I offhandedly shared to make a PR behind my back
๐
https://github.com/RealFoxerity/UnstableOS/blob/master/src/rs232.c is there anything blatantly wrong?
Without properly following licensure
oh shit
license
yea i should pick a license
You need to properly abstract shit, and you need to run the self tests for the controller
Itโs really easy to have tiny mistakes if each function for a register isnโt contained
3bsd for the win choose whatever you agree with most
AGPLv3
netscape public license ๐
How dare you
๐ญ
it's always so apparent in my codebase what code has been written at 3 AM fueled by enough caffein to feed a blitzkrieg division and what has been carefully thought through during English classes
Hey thatโs how my old kernel was made
Minus the thinking
๐
Itโs amazing what two 2liters of Dr Pepper can do for you am I right @jade olive
we don't have dr. pepper here :c
but we have this energy drink
the most coolant looking, oil tasting, dirt cheap thing i have ever drank
Says the kernel thatโs just a pre kernel
Wah wah wah dm me when you get a vfs implemented
woooowwww
chill out
Let me just copy paste my old VFS
take a crazywolf and calm downup๐
(no clue what that means yet, but i'm gonna figure it out dw)
when evalynos unicode compliant?
i need my ฤลกฤลลพรฝรกรญรฉรบลฏ
Never
damn :c
Get that from cp437 
framebuffer tty console in userspace supporting unicode when?
Really I don't see the point in kernel-side unicode/ttf support for ttys
TTYs are supposed to be a bunch of old crap anyways
you laugh but i'll be on top when y'alls fancy monitors die and my teletype will keep marching on
I wana port Wayland / LLVM pipe at some port
So I can run a real GUI terminal
Which path would you like
2 months but you go mentally insane
4 years but you donโt get booked into a mental hospital after
The middle path where I only need a therapist
1 month but i die a year after from hypertension and tachycardia?
Okay like 1-2 years then
๐ญ
Ehhh 10 months
Doubt
Today sometime hopefully
i meant from the caffeine but sure
eh close enough
Well tomorrow for me
Average "project" in r/osdev
With 670 upvotes
After x11 Iโm gonna do nvme/ahci prolly
we do XFree28
And then get some networking
x11 servers are the thing that handles the windows and decorations right
Or am I confused
Some decent ports
Xpaid64
real
The x11 sever manages all the apps together
A WM runs ontop iirc
a WM is a root window
that just so happens to contain all other windows
After I get networking and USB and other shit
You should
๐ญ
sleeping's for sleepers
Well I have a friend that will help with XHCI
or smth
You're gonna end up as that one server of yours
I was up like 22-23 hours last night
can i be that friend? (i don't know anythingggg) :3
Iโm
Going to bed before I spill my drink on my bed
Idk I've skipped sleeping at max around 60 hours
๐ญ
graduation tuesday
have to read 20 books
and know about their authors and historical context
i'm cooked
But that was only once
cooked???? POSIX GENERAL TERMINAL INTERFACE REFERENCE?????
And i was starting to go crazy
my record's something like ~70
then again
i sleep in the same room my server rack is in
so
yk
no sleep anyway
Well, crazier than I already am
jesus
now that's peak commitment
Fun is when you get sleep paralysis
Itโs not like I wanted to be up but uhh
โExternal factorsโ
such as (if i may ask)?
Too personal
Idk if i want to fall asleep i just play a few one piece episodes 
@hazy saddle so in the meantime i was looking at my code
i'd say the "divisor" field shouldn't house the "baud"
No but really I usually just fall asleep to watching Factorio gameplays for some reason
Or astrophysics stuff
idk
i either doomscroll reddit until i can't keep my eyes open anymore
or i bunch up my duvet into a random ball of fabric, hug that, and magically fall asleep while listening to the beautiful hum of the HPE Apollo 4200 Gen 9
evalynOS-potential-magic-ram-fixer.iso
i meanwhile completely fixed my serial
there was like 156 wrong things
Lmfaooo
Did you use my code as reference lol
Or what was wrong with it
i was passing
wrong value for divisor
wrong value for data bits
not waiting any amount of time before reading the loopback
and not correctly reading the recieved bit
:3
kinda suffered through it and many many reboots of the server (i don't have anything else with serial ๐ญ) until it worked
Lmao
@hazy saddle got any more tests?
server's still here with the ram and nmi
@jade olive i ended up editing my allocator a bit
wana try some clanker made tests on a huge chunk o' good ram

i wana see low long this can live
or maybe even with bad memory
if it can get into the mem map
also that patches bios thing
i wonder if we can find our own changes
to do funky shit
for this testing
Eh I think itโs fine
Iโve tossed the tests because
They uhhh
Donโt fail when I intentionally break the allocator

I have no fucking clue why either
Iโm gonna do some final code reviews of my shit
Itโs probably fine
And when I go and work on vmem if itโs buggy il fix it then
i was sleepin
am back though
server still on standby, just say when
Should I have a clanker make some new tests
๐
Because I CBA to make tests
Because Iโm gonna toss them right after lmfao
fuck AI for anything serous though
sure lol
does the color on your serial work again?
well color from my os works
not from yours though
ansi_bred
mmmmmmmm
Dw it'll all rain down over the datacenter and flood it
that would be swell, wouldn't it
i just freeload off free AI

they dont get a single penny
and i drain eery token i can for useless shit
we're bankrupting openai with these tests ๐ฅ
They're already technically bankrupt
Unless Sam Altman finds out how to create money from thin air or something
ik that the regular __attribute((malloc))__ can take as an argument the appropriate free function for like static analysis and stuff
yea
clang dosnt support that one sadly

gg
Like they have some massive ass debt that I don't think any corporation would describe as "soft punch" to their wallets and more so a "nuclear bomb"
but i can still get some better compiler optmizations
when will -O5 drop? xd
thats just llvm BOLT
https://github.com/llvm/llvm-project/blob/main/bolt/README.md
oh wow, this is cool
eating lunch rn
ah nice nice
so like in 10 minutes give or take
Canโt you just use ark?
It opens them up fine for me
And I can get shit out as if it was a zip
i'm loopmounting it
slightly faster
if you were my downloads folder
and i just downloaded evalynOS-clauded-spalloc-test.iso
where would you hide that file?
Fair
uhhhhh
I would hide it behind the photo of my mom
hm
i do have a lot of those pictures
but nowhere a evalynOS-clauded-spalloc-test.iso behind them
/j obviously
try using ls -lah | grep
no yea i found it already
also idk why but zsh doesn't have file completion for mount, only special device completion
and continues in the memtests
test 4 fifo queue or smth
now some checkerboard things
also doesn't help that it's testing the healthy memory ๐ญ
i'm half thinking whether i should just send you like a ssh key so you can log in and monitor the serial yourself cuz i assume you are at least slightly more knowledgable regarding your own os
why did i expect you implemented IXOFF when you don't have serial reading ๐ฅ
doing some lifo_stack bs rn
it seems to be just testing 0xFFFF800000100000 - 0xFFFF8000001FFFFF
doing test 11 power of 2 sizes
oh i'm just tweaking
it's looping isn't it
Yes lol
Itโs just a test
Though it should cycle though all physical memory though
As the freelist gets more and more fragmented
it doesn't ๐ญ
Tbh having a remote setup for osdevs to talk to a server for this kinda stuff could be cool

Welp itโs prolly fine then anyways
Maybe it just never uses enough ram to do that
??
no clue
but i see the same set of addresses over and over
it actually might've become slightly fragmented
the pointer in the churn step increased from 1ecf00 to 1fc000 or smth
so at this speed, we'll reach the bad ram sometime during DDR7 lifecycle
well this isnโt an MCE test
This is a make sure my allocator isnโt fucking everything up test
OH
Eg no physical mem leaks
then in that case everything's ok
spoon alloc? :3
split page alloc
wait for me to commit it
and use my licence

but it works for things less than a page
minimum 32b objects
and really only for 4kb pages
but its good enough for what im gonna use it for
its optimized for that
i'll steal that when my attrocious allocator starts breaking down and being a bottleneck

i'm like
"hey why can't i ping my server from 192.168.0.157"
mfw i actually look at the server
๐ญ
well
ip rule add from 192.168.0.128/25 lookup table grr prio 0
ip r add 192.168.0.128/25 via 192.168.1.1 table grr
cmon
for giving me ssh to the server, would i also be able to net boot shit
๐ฃ๏ธ ๐ฅ
~~time to mine monero
~~
nahhhhh
I could make a stub that lets the kernel get a new image over serial and then jump to the stub and then reload its self
๐
i have an idea
so you'll ssh through my normal server to the pentium box, where you'll enable X11 forwarding and forward firefox, where you'll open up ssh forwarded ILO so you can manage it from there :3
through ssh? very
this
this
so how familiar are you with ssh jump hosts :3
cuz i'm thinking of 3
close enough ๐ญ
๐ญ
how does this work
i thought it should prioritize more specific routes?
HOWWWWWWWW
so this took 18 minutes

@jade olive im in

hopefuly this isnt hacking me

Getting in either my yubi key is so nice tho ๐ญ
I just need to use the one password for this
And tap the button
it doesn't have unlimited memory tho
if you store passwords in it
??????
Itโs the keys password
๐ญ
The password to use the ssh keys on it
And ofc it dosnt have unlimited space
afaik you can store passwords and OTPs and more in it
But it has plenty for ssh keys and shit
i have one too, lol
i also decided to self host a password manager, lol
tho i still need to fully switch to it
this is for 2fa shit lol
and store passwords, key and otps, lol
it's very useful for that
tho i had a lot of problems making it work on linux
clanker is kinda ass at making tests
Yeah but I donโt really care about it
Since Iโm gonna toss this test right after
Before commit
ah
This is a โI need to make sure this is somewhat okay rnโ
Not a long term test that runs and shit
time to forget about it and let it run for a month
๐ฅ
i could let it just keep running on the server
should i restart into evalynOS?
better UBSAN stuff is added
https://github.com/rdmsr/tinyubsan
shoutout to this
Though I did heavily modify the crap to be my style
When I get cmdline parsing laterโข. should I add an option for ubsan=log so it wonโt always panic on failure?
Fuck it
Poll time
#polls message
do you have ubsan as a compile time option as well?
I can disable it at compile time too
But itโs on by default and I donโt have an easy way besides editing the makefile
yeah ok, I was going to say that UBsan adds a shitload of checks and can blow up the binary size
if thats something you care about
Considering she crashed out at me not saving 2kb on my Idt stubs I think she cares
hopefully
Im in the middle of refactoring
So nothing works atm
And I definitely didnโt nap in between
ah yeah thats a rough place to be
eh just bodge it, leave a //TODO: for later.
Holy shit youโre right
I don't use ubsan because my printf is full of UB 
UBSAN provides decent protections though
Huh
Interesting
Meow meow meow
Excuses for a bloated binary
You see
If you used rust you wouldnโt have this issue
Rust makes even more bloated binaries
Because the binary is already fucking megabytes in size
Lol no
๐
this is the binary size without UBSAN/SSP enabled
Oh and after stripping it
And on -O2
still smaller than rust
Without stripping and with UBSAN

both rated 0/5 
Iโm very disappointed in my code you know
Once I get vmem done
Or some other shit
I want to refactor some things
Before it gets too messy
Mainly my arch abstractionss
And maybe change the paging interface a little to be nicer
But thatโs probably fine and not too bad?
I remember youโre bad codings
๐ญ
I had to Iโm sleepy rn
go to sleep! ๐ค
I am soon probably
it's been so long since I've hit an ubsan check
I periodically run the kernel with it
my old kernel was tripping them on some trivial ass bullshit
and i had to make some stupid ahh work arrounds
๐
your old kernel also had that nasty ass memory corruption bug
mine hasnt been tripping much tho
hey hey
i'd still perfer to have it
i fixed all of thoes
mine is slightly larger than 1mib in release mode
im not perfect so having ubsan helps
and your 10000 compiler flags
shut the fuck up
"oh how dare you ask the compiler to warn you"
"oh how dare you use the tools provided to you by llvm"
๐ญ
smh
oh that's nice
they are joking lol
I know a person who got banned for such jokes
we're good friends (atleast I think)
we are best friends lol
i do not remember that 
i do wonder how hard ASAN is
compared to UBSAN
SSP/UBSAN is mostly piss easy for runtime support
needs more code
so true
I posted a link in resources not too long ago
that acc isnt too bad it seems
though id need heap integration
and other stuff etc
5/5 stars
Got those changes pushed today, gonna work on vmem ๐ค
Either that or SMP init may work fine?
Though Iโd prefer to have vmem so I can have an array for CPUs and shit properly
I can use a linked list but :p
I could just allocate an array for cores to get pointers to the struts they need and map it down there
My SMP init code should also hopefully manage to be PIC so I can just make it work for them to get into 32 bit mode and then to 64 bits and index into an array and jump to C
Iirc I can do cs: relative data access? So it should be fine
I jump straight to long mode
Wait, ignore me, no
I jump to a common 64 bit entry point, and then search the per-CPU struct in there from C++
turns out im not doing vmem but still rbtree bases virtual allocation stuff
but im going to make sure it works alot better
and try and abstract it out a bit more
and i just finished a decent lil bst/rbtree library partly based on the wikipedia code for it with some bug fixes and better abstractions etc 
im gonna push this to its own repo later and into the main repo soonishโข
i will download this random tarball and I will like it
Lame, no vmem no cool kernel 
Well I wanted to do it
But @tender mantle said itโs overkill
And didnโt wana code it with me
Along with scheduling conflicts 
So rbTrees it is
I need them regardless anyways for other things so eh
Eh, with all the caches thing it definitely is overkill for most OSes
scheduling conflicts undersells it alot
But that's an optional thing
Me when 12 hour timezone diff;
scheduling I'm sure @tender mantle calendar is really packed full
shut teh fuck up ๐ญ
hachimichi.chichichichi
vcvtudq2ps

my twin :3
Whatโs funny is I tried to get Claude to like make sure this shit isnโt broken because I made this half tired in a VC talking about random shit
It said I had a UAF bug
The reproduction was Claude just miss using the public API and did a free before tree removal
๐
lol
The actual library does zero allocations and is freestanding too
I once asked claude to review my rbtree impl and it pointed out 12 bugs that werent bugs
Prompt it 3 or 4 times when it finds a bug so it doesn't hallucinates up bullshit
if you do find any bugs
It did find one minor case of UB that was real and nothing else
And the UB technically would have never happened
let me know because we basically have the same impl 
lol, ill let u know when I rewrite the entire thing
Just make the compiler scream
cool ty
tbh it would be fairly easy to just make a fuzzer that runs a few hundred million random ops on it and compare against a known-good impl
but I mean it should be good
Certainly good enough for a virtual allocator
These trees should not be getting THAT large
if the fuzzer finds a bug at all it's probably not good :p
lol
I mean u can prolly do a few tests per rotation to cover all edge cases
but I'm not totally sure
when I rewrite my impl I'll make a proper test suite
Most code is ripped from Wikipedia and me fixing any bugs that crashed it
I can share it then
So it should be fine
so expect that in about 6 months
After chariot v7?

finishing v3 or finishing v3 with all of the extra shit ๐ญ
bro im back to fucking reconsidering some of the like first design decisions I ever did
I donโt normally say this but I am quite happy how this turned out tho
extra shit unironically going to take 6 months
cli I fucking hope is done this month
I have a week vacation next month
I wanna do osdev then
You will keep working on chariot forever
I have prolly another 3 weeks in august
๐ฅ
I mean prolly
but I wanna have a stable good version out soon
also @hazy saddle thoughts on my pfp (hover over my message)
if wux dies before a stable v3 comes out do NOT expect me to maintain it ๐ญ
Oh yeah cool nix
His ghost will maintain it
Unfinished business and all
lol
matei will get the access
soo

@fluid mesa make sure u force @tender mantle to finish chariot because of the tragedy of me getting hit by a bus
bro ngl this shit should alr work with the proper configuration ๐ข
all that chariot actually does is it runs a given command with the given configuration
the python wrapper script thingy just sets good configuration
I will prolly see about better integration for v3

yeah true
gg delayed another month
god damn it evalyn
tbh the actual rest of the system is like fairly well documented
lol this doesnt need to be in the initial version
thank god ๐
I alr have it worked out how running these commands will work nicely
sick
I should make a non-os-progress-report thread for this
maybe when I get to v3.0.0
lol
Okay here we go thatโs uploaded
;3
quantum caching is not even used for virtual memory
I know
realistically youd only use vmem for that
so
no need to implement it
but it's also like really easy?
just have a kmem_cache backing a specific size
I am probably gonna have to deal with O(n) search of the tree for allocations with this, but if thatโs ever a bottleneck il end up doing vmem crap and struggling to do that 
vmem is pretty easy, it's a bunch of freelists
But I donโt expect that to really be an issue with how it will work
Itโs mostly the paper that scares me
Wait thatโs it
this is pretty simple since it doesnt do a lot of stuff the "real" vmem does
like importing arenas
which isnt that useful if you just wanna allocate virtual memory
might wanna read the comment
Can it handle fixed address allocations?
yea
I will definitely use this as reference and just do vmem 
This shouldnโt be that bad actually
Thank you
I will also still be able to use the spalloc and my RBtree crap too for this
well here I used RB tree because I think using a hashmap gets tricky
because to allocate the hashmap you need the allocator itself
so you have to do it periodically
Yeahhh I really donโt like that
My spalloc just chops up pages from the HHDM for smaller objects
Which should be perfect for this
RBtree is fast enough anywaysโข
yeah that's what I figured
i do that too but then if you have a hashmap then it might get large
and in my allocator, large allocs go through vmem
I will need to rewrite that allocator to work for non 4kb page systems later tho
Maybe have a different backend depending on the page size and use a linked list for non 4kb ones
Since I used a bitmap which was more efficient for this
I did manage to have no hashmap in the slab allocator either, which is pretty cool. and I use the hhdm for small sizes so I can use the slab allocator in vmem itself
My slab allocator is probably always gonna take tiny 16kb chunks from vmem
I do wana get smp soon so I can also make CPU local PMM caches

would this be the function thats called here?
for (&self.freelists) |*freelist| {
freelist.init();
}
or if there is some other freelist heloer i did not see
the code is mostly readable but i dont know all the zig syntax

ahh so i should be fine
mind if i ping you tomorrow if i have any other questions while implementing this if i cant read somthing right
nah its fine
thank you 
Dw if that ever happens I will take it upon myself to contribute too
based
Why?
Idk ask her
vmem is some freelists, a bitmap and a hash map
bitmap?
Yes, but you have many freelists, you can just keep a bitmap of which of them have free segments, so you don't have to scan all of them when allocating memory
Oh btw the free lists here are for ones with atleast that amount of memory right?
Iโm probably only going to implement best fit
Along with only using 56 free lists
Which should be perfectly fine
Given Iโm only at max going to have one half of the address space in it
And la57 is the max of any architecture I support
Why
Isnโt it the better one for maintaining the lists 
It's just slower for no good reason
I mean you get less fragmentation, if you allocate non powers of 2 number pages a lot I guess...
Ah well then that dosnt matter 
Because il mostly only be grabbing 16kb and whatever else
Or like it depends on how you partition your lists
my allocator uses freelist best fit
not even
but is pretty damn fast
or well
always better
๐
it's half instant and half best
Then why even implement it
lemme find the paper
Like for 16KB allocations you can go to "at least 16KB" list or bigger and grab the first entry
And you're not subjecting yourself to O(n)
there's a paper from the 1970s or something that proves that best fit sucks
like it's a nice and very fast algorithm
unless there's not enough memory, in which case it stitches it from the other lists
my malloc has a a freelist allocator, with multiple queue for diff sizes
and if the size is larger, it just uses best fit on the "infinite size" queue
also you probaly shouldnt do this if you wanna be portable
idk just sizeof(uintptr_t) * 8 works
You can also constrain it to a smaller number of lists
Though idk if it's worth it
but it lets me save some memory and fit more freelist pointer arrays into one spalloc allocator
Or like matters at all
Since I need to allocate the array, and I need to allocate the free lists themselves for one arena
Actually no, it's probably a tiny bit better for cache
I haven't bothered with implementing arenas yet 
Or like per-cpu magazines
Idk if it's the same thing
not really, in the end you chase pointers anyway
It ain't that much memory anyways
I mean as in I have 4kb chunks + a header
It means I have lest wasted in one chunk
8 * 64 =512
I can only fit 3 due to the header
If I shrink it a little
I can fit 4 and have less wasted with this allocator
But like it's a trivial thing to implement
to implement what?
this is my allocator for pre valloc
so like eh i dont really wana deal with that when i can shave a few freelists off
Wdym by pre-valloc?
when i cant allocate virtual memory


