#EvalynOS
1 messages Ā· Page 19 of 1
that's kinda dumb for a DSL though if your kernel is expected to have lots of modules
if not, then that's fine, just use a checkbox
true honestly
i mean i have checkboxes too
I want to get a module loader for my kernel at one point
theyre pretty much obligatory
no actual manual š
Especially for something like XHCI
why?
yall are fine with limine, so yall will survive borscht 
Idk just would be cooler? And if I support reloading could make testing easier depending on the environment
- it would be good if you donāt need the USB module enabled etc etc
cooler 
just don't execute that code then

and/or have a kernel option to disable it
make it a build time thing then
I mean yeah, that's fine
but there's probably no technical reason why you need/want modules
Yeah
It certainly is cool to have though
just embed one and then load the others using a userspace interface?
ok then wait until userspace to load one then
Have your kernel read the initramfs and load it from there?
also no
fonts.ko
eh imo the kernel should limit how much it directly interacts with files
in terms of like, booting at least
it should basically just:
execute /init//sbin/init//bin/init or whatever
have the initramfs be loaded by a bunch of modules 

Plus parsing elf files itās given etc?
yeah but that interaction is prompted by userspace
Though a font.psf being auto loaded isnāt too bad
Epically if you donāt want to embed a font
I do agree Userspace doing it is better though
PSF files could be considered modules
so you just specify the path on the commandline, or in the bootloader config, and load it as a pseudo-module
or ttf, or bitmap, or whatever
I also should port UACPI soon 
and i dont need acpi 
i keep making the joke about you needing a programming language to turn off your computer except i know thats false its just funny
I was just finishing up my commit and got distracted here
Itās not too strict
Crappy ATT router please let NAT loopback work properly so I can commit š
at&t routers suck
one died in a thunderstorm and the other one just bricked itself
im typing from a hotspot
were just getting an actual expensive router instead 
yk you can use another pc (or vm??) for a router right
wait what
unless the problem you're testing only occurs on hardware, then it becomes a little harder to do that but not impossible
connect it to The Wall(TM)
My git server is on the same network I am on
And I CBA to setup wire guard in my laptop when a few attempts makes it go through
And itās my grandmas house
And the router makes you use it anyways with passthrough mode

My clothes get out of the dryer in half an hours
So I should stay up til then to take a shower
just edit your /etc/hosts to point git.evalyngoemer.com to 192.168.deez.nuts
True true
Then remove it when going home
I already got it commited tho lol
oops wrong thread
virtual alloc?
Yes
Also technically if Iām using mlibc and toybox would my OS be mlibc/toybox/evalynOS?
Since the kernel will of course support any userspace you throw at it
Just that I have a designed one in tree etc
borscht/evalynOS 
Thatās part of the built system not a core component of the running system
it soon will be 
borscht based package manager
Iām gonna make my own package manager
In Lua

because lua is based
Bash is meh for a package manager imo, lua is cool
It would be easier for me to deal with rather than bash considering how you saw my bash scripts lol
true but I think it would also make you a LOT more comfortable with bash scripts
Trueeee
Though Lua would be easy to embed into the binary that would handle things
& could defer logic to it easier?
wdym embed into the binary?
Like having C code as the main part of the manager and having Lua embedded like you do with a game engine etc
I am about to sleep now
I am all tucked into bed
Good night :3
gn!
Ahh the good ol waking up at 4/5 am lmfao
I wonder if I should do the VFS work or keep working on the port if PCC is wanting to do it. Or I could do the lock free heap rewrite which could be fun
I think you should do vfs work, my brain is numb right now and I'm playing games until I'm tired enough to go to sleep XD
XD and then I fell asleep
ended up testing on some more PCs and had to patch my seriel port driver 
Why 3:
nevermind mb
What was I thinking?
The seriel port on the desktop wasnāt being init right
So I had to slap on some io waits to slow it down enough :p
yeah i see
flex tape: holds all the hostages in place 
The device just is too slow to keep up with my configurations of it
fair
So I slow it down by like 10 micro seconds for every write
I even use it here if the ACPI timer reads zero to add a little delay before checking it again
Ahh I think my code ordering there is bad lol
It shouldnāt hurt anything because it will fall back after that
But I should fix it :p
also acpi has a timer???
Yes
For timing things
yes
Itās just a device thatās part of the specs
why do you reverse apply the mlibc patch?
if git apply --reverse --check ${PATCHES}/mlibc-evalynos.patch; then
git apply --reverse ${PATCHES}/mlibc-evalynos.patch fi```
So it can cleanly apply again when redoing the patch to handle if the patch files changes
ah
what does reverse application even do
git unapply
no it aint 
applies it in reverse
go from the last patch to the first one 
no it starts at the end of the file instead of the start of the file when applying it 
you said it undoes the patch
yes that's the same thing
yes
it starts at the end of the patch and the end of the file, and works backwards
I know you're trying to be funny but you're explaining it correctly
(well, theoretically at least)
don't give them ideas!!!
i already did a joke about that its too late
wtf is wrong with you š
Gonna have to make a build system in scratch now
no but why would someone need this though
its like the same thing as a regular patch application
...to undo a patch? you realize not all patch are applied to a VCS tree right?
no it's not
working backwards = undoing what you did
oh
no i just meant that it goes from the end of the file and goes backwards while parsing and applying the actual patch it doesnt undo it 
im not sure if we're talking about the joke reverse patching or actual reverse patching
if actual reverse patching then yes i understand how someone would need that
Top to bottom or bottom to top should apply a patch the same
i made an os on scratch, someone made a RISC-V emulator on scratch, so now we port qemu to scratch 
Btw PCC rate this fix lmfao
At some point I may make outb and inb do an iowait automatically tbh
@cold barn compiler
it looks normal to me
It fixes the issue lmfao for adding all those IO waits 
because x86 sucks balls and IBM is better 
Do you propose a better solution?
make a queue for all the outb's and execute it on every timer interrupt 
INB4 you need outb to setup a timer
then dont use a timer for the initial outb setup
Thatās still slower than an iowait which costs a few useconds
true
wait @hazy saddle you can actually put an io_wait at the end of the outb's and inb's, like in the function itself
unironically
its gonna be slightly slower but no one is gonna die from this crap imo
Yes I can
And I already said that lmfao
oh
void outb(uint16_t port, uint8_t sendWhat) {
// ASM routine
io_wait():
}
i mean something like that
Just that would take more of a rework than I wana do rn
yeah that's what this was #1431140025805832343 message
Esp when your not touching that part of the code too often
oh
vision problems
Il put that on my todo during the code cleanup
Or I could do it rn
To procrastinate

bruh just open the function and paste a slab of code in there
why yall like waiting for rewrites so much 
Yeah but I have to remove the IO waits elsewhere :p
oh
then do it
-# incoming send patches sticker 
@hazy saddle run a ctrl+r to replace all the io_wait's with spaces everywhere except the IO file itself 
Thatās now how this works lol
Iām the one who sends it to you
@peak cloak
fine
Iām gonna do it anyways itās fine lol
oh ok
CableCreation USB to RS232 Serial Adapter (FTDI Chipset), USB to RS232 Gold Plated DB9 Serial Converter Cable for Windows 11, 10, 8.1, 8, 7, Vista, XP, 2000, Linux and Mac OS X, macOS, 6.6 Feet/2M
Look at what I just ordered :3
Iām gonna be implementing a GDB stub for my kernel
And I now have the proper serial ports for it

Also I may or may not make my GDB stub very portable if I can help it (for x86-64)
I think Iām also gonna embed a serial port driver into this & have an option to have it be integrated into yours and or use a specified port
You will need to define ways to access random any physical memory & virtual memory (so you can do fancy stuff and handling if desired)
I will also need a way to hook onto your process system so I will have commands to give an ID to enable a breakpoint for and your kernel can check for that & send commands to let it know it should enable or disable breakpoints
Maybe better solutions that that tho
Or just not support userspace debugging 
This also means you could pipe it though XHCI or UDP etc and not just serial
Crap I need to do actual work today

Il finish that stupid outb rework in a moment
And then maybe work on my VFS
okay so i have these functions
ones that are "standard"
and ones with intehrated delay
to make things cleaner
why two you ask?
because its safer
@cold barn and @peak cloak what do ya think
it's terrible, you should throw it away immediately and switch to web dev /s
it looks much cleaner
nah
modern web dev is, but that's because it's so new nobody has figured it out yet :)

trueee
Btw is that script going well? Btw what games were you playing
Anything new come out thatās good
haste mainly
and yeah, I think i have it 99% there I'm just trying to get patch to not kill itself
Loll
LMK if you want me to regenerate the patches in a cleaner way btw
If itās possible
I see why you did || true now, I could've sworn there was an option to silence it
OH
I remember how I solved this last time
(I also got it basically done yesterday, but didn't switch to dev so I restarted today)
you just [ -n "$NOCLEAN" ] && rm -rf <sources>
Huh cool
Also I wonder about storing a hash of the patch file to know when to rebuild each complement?
Fuck you mean this patch is failing on real hardware
this fixes it @cold barn š
ya know what just to be safe 
why not make them macros?
alright I think I fixed it, though I do need to add the inverse condition to patching so if it doesn't clean the sources (NOCLEAN=*), it won't fail if patching doesn't apply
I also parallelized the extraction
might do the same with the download
Isnāt static inline about the same for it being header only anyways?
So many io_wait()s
oh, maybe. inline isn't guaranteed to inline it though. the onle one I think it might be necessary in is inbd unless you can restructure it to not need ret
always_inline attribute smh
I could slap gnu::always_inline? plus for this it dosnt really effect performance as itās for legacy drivers that wonāt be doing much anyways if the compiler decides to do that for say code space reasons
doing it for performance isn't necessary here, yeah, but I just prefer to have the actual code inserted there if that's effectively what i want
I like the compiler to do its thing for the most part and leave macros to more advanced things liket DBG_LOG
Also I keep seeing online āyou donāt need IO waits on modern hardwareā
Well clearly ya do :p
This 12th gen intel system clearly is being very picky about it
fuck you mean this breaks it?????
this is a pretty standard seriel setup right?
maybe it will like this better?
Nope
Why the hell is this so picky about the io waits

@cold barn Iām just gonna call it a hardware problem and not support that devices stupid serial port ;p this thing works fine on every other device Iāve tested it on
yeah that's reasonable
guess you could also look at the *BSD code, if you can test that on the hardware
True true
do you know where the thing is XD
which BSD is that? Open? Net?
openbsd
the fuck?
my kernel locked up on the othrtr laptop doing nothin???
thats never happened under no load\
./dev/acpi/pluart_acpi.c
./dev/fdt/amluart.c
./dev/fdt/cduart.c
./dev/fdt/exuart.c
./dev/fdt/exuartreg.h
./dev/fdt/imxuart.c
./dev/fdt/imxuartreg.h
./dev/fdt/mvuart.c
./dev/fdt/pluart_fdt.c
./dev/ic/pluart.c
./dev/ic/pluartvar.h```
try one of these?
lookin
sys/dev/ic/com.c is it, actually I believe
/*
* COM driver, based on HP dca driver
* uses National Semiconductor NS16450/NS16550AF UART
*/``` :)
alright we'll see if this works š
-# <attachment removed>
running it rn
last time it said during mlibc configuration that evalynos wasn't supported
ah that's why
wrong path to the patch
oops I forgot a .. XD
hm it seems i am not follwong specs
that bit iirc
i dont clear DLAB right away
which may be causing the funky?
let me extract these info functions more like the BSD implementation
nope nvm I was doing it right I just have no fucking clue why it's not applying properly
WHOAH
okjay
god damimt
it's git apply being dumb and slightly misleading
wellll so far it works š other than that same error as last time make[4]: *** No rule to make target '../../ld/scripttempl/.sc', needed by 'eelf_x86_64_evalynos.c'. Stop.
(@hazy saddle)
ooooo
let me test this
im reworking the seriel driver
making it alot less jank
i may have been clobbering a bunch o' shit 
almost half the size of the previous script :)
and way faster :P
I did end up parallelizing the download as well as the extraction
whats MPFR and MPC?
obv can't do much more than that
libraries gcc needs to build
they may not be available on the host, so that adds them
ahhh cool
it'll statically link them into gcc
nice
And it fucking works!
And it broke with no changes and a reboot

Wait a darn moment
Let me test somthing
Iām going to send 5 test bytes
And check them all
Just to be safe

Two for two working
Three for three letās fucking go
testing in just a moment
found a bug with my DLAB and wana test one last time
was setting bit O and not 7

@cold barn huh?
uhhhh
maybe it diddnt like i was in the root folder
add this?
START_PATH="$(pwd)"
if [[ "$(basename "$PWD")" != "libc" ]]; then
cd ./src/libc || { echo "./src/libc folder dosnt exist? Did you download the repo correctly? Are you in the project root directory?"; exit 1; }
fi
# at the end
cd $START_PATH
Or do you got a better way
I would rather say "run the script from the dir"
True but it makes it more idiot proof imo?
and have a ./build.sh to run that one

I could hook it into my build system and have it automatic
Let me test it with my patch and then I will throw it into the build system
what's your current build system?
A bunch of other shell scripts called from a make file 
ah ok
I want to switch to meson at some point but this system isnāt too bad right now so :p
so, I might be able to help convert it to an actual makefile build system if you don't plan on supporting modules
if you do, I wouldn't recommend makefiles since it gets a little messier (not inherently because of the modules but because scope creep starts to become an issue with the build system)
I do plan to support them at some point. I do wonder how it would look like with it being a real makefile build system though
you'd have to abuse the hell out of gnu make
or switch to (my beloved) bsd make, and make people install bmake on !BSD (aka linux) systems
thankfully it's packaged pretty widely
Honestly sticking with makefiles would be nice because it does get annoying to manually add things to the list lol but I guess the reason for that in meson is the speed
@cold barn it works!
but it seems to rebuild the entire thing every run?
thanks!
yes that's somewhat intentional, if you do NOCLEAN=1 (or any value other than empty/unset) it will not remove the build dirs, though it will reconfigure so it might still rebuild some stuff
So it would say still build mlibc on patch changes?
Oh yeah thatās gonna be a bit annoying too because mlibc is a sub module and my IDE keeps showing it as changed 
is there a reason why you arent using something like jinx or xbstrap
Which is why I considered hashing the patch files and only triggering rebuild when that changes and unappplying the mlibc patches after
It certainly still is a better script. Il just have to keep it manual for now ;3

but i mean a bash script isnt too bad and easier for people to run no?
huh
literally the entire thing is a bash script
though it does compile a c that is here-filed into the script iirc
and some other slightly cursed things
Huh looks pretty cool
Maybe for my build system rewrite
@cold barn i think its all ready for now. thew this at the top and the commit will be "improve build-libc.sh by PCC"
That good?
I would do it differently, one sec
that and these are my twaks btw
yeah there is no need for START_PATH
I can just do a push at the top and a pop at the bottom I presume?
you don't even need to do that if you're not sourcing the file
it gets run in a subshell with ./build-libc.sh
you just need a cd "$(dirname -- "$0")" at the top to cd to the directory that the script is in
you'll get put back in your directory when the script exits
oh, and reverse applying the patch I don't think is necessary? I'm not exactly sure
you MIGHT be able to just apply the patch on top of it
although, you may just want to re-init the submodule every (NOCLEAN=1) build, or just use a tarball
i need it for my IDE to not yell at me to commit the sub module anyways

not necessarily a release tarball, but a tarball
Yeah Iām probably gonna swap everything to tarballs away from sub modules
They are a PITA 
I guess itās time to reattempt bash & toybox?
Now that the build script isnāt total dookie 
Does sub module init wipe any modifications to it?
well, if you de-init and re-init :)
well I still can't build the toolchain š
but yeah that did improve it
for IDEs and complex build systems yeah
you're trying to idiot-proof it instead of telling people they're idiots :)
Want me to put some binaries on my website that you can use in the meantime?

And tarballs should work quite nicely
sure
and can you upload a tarball of your binutils build dir too?
including objs and logs and all
Il zip up both the sysroot and toolchain folders
I wanna compare
sure lol
OH
and can you make sure this is from a clean tree using my script
let me do that 
@cold barn I wonder what part is it crashing on?
.
Huh damn
Wait what make are you using?
gnu
Hm 
# make --version
GNU Make 4.4.1
Built for x86_64-unknown-linux-musl
Copyright (C) 1988-2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.```
Maybe the port master knows what tf is up with that?
Oh there is something you can try actualy
Use any linux distribution inside your terminal.
You can use this to get arch Linux
Given you are on another Linux distro
It makes a docker container for stuff
I probably can't use that since I'm on WSL1, but I'll make an arch chroot
WSL2 may work better
I can't use it
I know
Sorry
I have other software (virtualbox) that needs the virtualization capabilities
its ok lol, not your fault
Could make a full Linux VM inside there 
nah a chroot should work
š¤
@cold barn crap i forgot to switch to dev branch

rebuilding

time to reset the counter
god damn arch is a pain in the ass to bootstrap
@cold barn zipping up now
they should give out premade chroots like ALARM does
it really helps get things started
yeah I figured that out eventually
I was trying to use pacstrap/pacman and it's IMPOSSIBLE to get the gpg signing on everything to work
crap i dont have my file server password on my laptop
š
i can manualy copy i with a USB there
just may take a bit longer
š no ssh keys?
I literally just replicate an encrypted tarball of my ssh keys on basically every machine lol
need to log in from a new machine? sftp into one (with password), decrypt into /tmp, transfer, delete /tmp file 
i just manualy copy the keys over
and i have a public key on my domain name to pull easy
copying it over
copyparty may allow you to download while i upload but it may now support it with me using sftp @cold barn
I'll just wait until it's done
btw zstd tends to have a better ratio of compression to creation/extraction speed compared to gzip or xz
I wonder if I can add that to the default on my KDE menu?
also Iām going to sleep now

Have a good [[timezone]]
goodnight!
OMG @hazy saddle I think I figured out a way to continue using submodules (my beloved ā¤ļø) without having to fuck around with them
just fork any that you need to modify, do the modifications there, and vendor the latest change in your evalynos repo
I was seriously not thinking about it that hard since I tend to just not need submodules š
but yeah right now I'm just working on getting evalynos built inside arch
I might eventually take a look at your patches to figure out where the fuck the arch-dependency is happening
if you don't get to it first :)
And I already have forks on my mom codeberg accounts lol
Il do a poll for this a bit later I think
I can try an alpine Linux build in a moment and see maybe if itās just an older packages thing?
I will also test WSL on my grandmas computer for this
@cold barn compiled just fine on alpine Linux edge with a minor change because OVMF paths
Crap I am on master 
I thought I did the command
I did git branch and then checkout
So it must of broke shit
But it was your script file PCC
It is gonna have to be WSL2 but Iām gonna test it on Debian there
Oh shit KVM works under WSL2???
Let me just do a bit more testing as I still need to make the toolchain
And itās a bit picky about audio server and XDG
But itās booting
It also wants sudo but thatās an easy fix
@cold barn I donāt know if this is viable for your setup but everything works perfectly under Debian WSL2 and your script on the proper dev branch. Iām even using KVM
But if everything works for me on 3 machines running diffrent environments

Somthing may be going badly on your end
I am honestly shocked at how good this works
I just had to relogin and add the group
And all issues went away
Props to the NT kernel team and whoever did the userspace bits of WSL
This is very good
Now make the rest of the userspace good

WSL2 is just linux VM
Well yes
But Iām surprised that it can do nested VMs properly
And open GUI crap
Etc etc
WSL1 was cooler
Void is what I'm using btw, but that might work too
You can just do git switch

You might want to just vendor the ovmf builds from the ovmf-nightly builds. If you can't find it, I will in a sec. I think it's on the Codeberg mirror of that GitHub osdev0 account
I should also vendor limine
I'll start with a fresh void chroot and go from there then
Hyper-V is known for that lol
Ahh lol
Also my USB to serial cable is here
Bus 001 Device 016: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
it works :O
after a few correctess tweaks

tho i think i need to swap the flanterm locks to not disable IRQs

and possibly use a kthread for it 
that way printf goes into a buffer
& that will flush it
maybe same for serial?
though thats much less intensive of a task so its fine
i wonder what linux does here
Fire
Iām gonna clean it up a bit more
As itās a lot of magic numbers
And I should abstract things a bittt more
But it should be all good after than and be āperfectā

magic number b gone
But yeah the serial driver is now in a wayyyy better state
It used to be a copy of the one from the wiki almost 
Which well is not exactly the best for real hardware and it being extendable
Iāve split everything out into functions etc to make it all nice and easy to work with
If I ever get termios etc to set baud rates etc etc etc
Whatās good is I now have an Intel and an AMD machine with hardware serial ports
Which means any issue I have should be solvable on these if itās a CPU feature crash / issue
And I should be able to help others etc
Only issue is they live at separate houses

@cold barn Iām about to go to sleep
Did you ever manage to get it to build right lol
yeah I need to do homework and shit though so I gotta lock in before I do anything else
I also got "distracted" with other obligations for most of today tbh
@cold barn https://git.evalyngoemer.com/evalynOS/evalynOS/commit/a923a02e3c002e8e9b8c44de2b503804948e1824
your commit is in :3
and the new seiral driver is here
Of course Amazon fucking delays the bracket by two days :p
After the window of me being able to reorder it for same day
So now I have to stay here at this house and wait for overnight shipping
what bracket?
The thing I need to get a serial port
StarTech.com 16in (40cm) 9 Pin Serial Male to 10 Pin Motherboard Header Slot Plate - motherboard Serial Port Adapter (PLATE9M16), Gray
ah ok
This thing

@peak cloak okay i was jokin
but i had to remove my gpu
š
shit was scary because i couldnt find the release
and i popped it out half way
the serial is working
but the driver failed once

gg
maybe i will do several self test methods if one fails
ther is a scratch register i can use to test
yeah there is a register on the serial controller that gives you a byte of memory
make sure you dont write to the CPU_SELFDESTRUCT register 
or try to set big endian mode on x86 
(you bend 15 cpu pins or more)
GDB stub time
I will have two modes for SMP
One for latching onto a core
And one for latching onto a thread
You will of course need a lot of kernel support
For sending IPIs etc
And if a core has IF=0 and the serial port is on there well

Not much I can do about it
If your having issues you can always dedicate a core :p
I will include serial drivers for this
But I will support generic TX/RX layers
So you can use UDP with this or whatever else etc
Oh sick QEMU lets me use the physical serial port as the backend
So I can work on it really nicely
i think i may have to use polling on the serial driver?
if i am in a #DB context i dont want other IRQs
Okay so
I am connected
I think itās going okay?
But
I think itās tweaking out
It locks GDB into an infinite loop
I am only sending an empty packet to everything but
The fuck is wait exit enter?
i also stop getting any packets or data?
yeah i am getting the same packets
i get nothing after

:hmmCat:
tell me
i have the VM connected to my physical serial port
thats connected to my usb adapeter
and im pointer gdb to the usb adapter
Oh great heavens
all on the same machine
@sterile plank progress!
deltarune
Yes Iām listening to deltarune theory while osdeving
now listen to osdev theories while deltaruning

I now have to implement the register packets
So Iām going to have to add the right callbacks for debug and breakpoints
So when it gets one of those
It will capture it and then spin loop waiting for more GDB stuff
So it will have to nest interupts
Which is supported I think
Or maybe I donāt need that
No I will but
Okay yeah this will work
In the exception
It will store a pointer to the stack with all of the register state
So then when GDB packets come in
It can modify and read those
I wish you best of lucks :pp
Then when that exists and the interrupt is popped
i havent been osdeving for a long time
Then the #DB will return and have the new register information
Ty :3
In the spinning loop il possibly spin similar to a lock so it knows when its ready to continute
Using atomic etc because this crosses context boundaryās
Tbf you wonāt need full nesting if you just make it enable interupts on that context so then the other ones can follow in and eventually return?
i have no idea
its oke :3
im just talking into the void of my thought process
@sterile plank
Itās coming along well
I wonder if I could support reloading the kernel over serial

Like it would allocate the memory needed to put a new image there
And load a trompolihe
Get the new image over serial
And then reload the kernel using LBP
Reusing all the info I got earlier
To be clear this is only one snapshot

I still need to add single step crap
Because rn GDP always is returned the one thing
chat my schedular may be fucked

Okay well good news bad news
Good news
The debugger works
Kind of
Bad news
It gets trapped inside that loop
And wonāt debug anything else
Somthing seems to be saving and restoring that context there
And switching to it

Which
May be the first thread?
It could be that
Because then it gets first launched to
Yeah yeah

Not sure the proper way to solve that right now
and well somthing switches to it
but it dosnt sleep nice
or it does idk i cant read cpuusage well
but it acts like the idle thread

then the debugger gets trapped there
okay yeah
the first thread spawned
gets clobbered

which isnt an issue
because i can just spawn idle thread first
and then it gets clobbered
with what basicaly is an idle thread
this is what it looks like when its stuck
i think i just need the schedular to unset & set the TF on any returns from the preemption
eg here
Then this way when going into any context after a preemption
It can properly enable and disable TF
If task switching to needs debugging
Enable TF
Else
Disable TF
Also @peak cloak Iām gonna add borscht 
Because Iām gonna make this configurable
As a lot of this may be dead code
So having it configurable will be good for performance
With all the extra branches
YOU'RE WHAT
good luck finding instruction manual 
tell me also if you cant understand it i want people to actually be able to read it
also use version 2.0c if you dont want to kill yourself
What did you change

Also why notttt
there's 1.3fa backport and then there 2.0c, 2.0+ has customization options and also the gui alignment doesnt suck balls anymore
Make one 

Why do you even feel the need to do backports lmfao
blind
One day blinding stew
maybe some esoteric idiot wants to try 1.0
its literally all bugfixes to 1.0 anyway
so 2.0 is the only actual update 
the backport was kinda important anyway, if it was a bug id leave it alone but it literally is so bad that make won't read your makefile properly



its also here
still no GREGloader commit 
kool - KDE smart fridge
anyways tell me if it explodes somehow
the documentation is quite indeed utterly confusing 
ohok
Il have a make target that will download and compile it
And then let you use it
Otherwise it will use default options 
download it and compile it 
genuine insanity
and then i break backwards compat /j
"Oh no!" you scream, as you literally can't compile your project
It's just like the XAPIC 
also you might get brutally segfaulted if you try to use an invalid config
not always but theres a risk 
it works fine with configs that dont suck balls
Itās called
Pinning to commits

if i add more features its not gonna conflict im certain
until i dislike a certain feature and do an x86 and remove it 
intel sucks balls, i thought they at least stood by backward compat
but no 
Ngl I may have to move this to a feature branch

And just do my VFS soon
But Iām really close to finishing this
Just lost
RIP
Maybe when obberow is free he can help like he said
And this is fucking things up
And Iām just catching it in ifle threads
Because I donāt have breakpoints yet
Okay yeah it seems to just be breakpoints and them being broken
I have swapped serial to be an NMI
It does not like having a ācliā inside of the #BP handler though
It got very corrupted
Though maybe I should setup ISTs
Well I should :p
Well more so locked up badly
I tried to add a breakpoint manually and it well didnāt go well
So Iām gonna code in hbreak support for GDB
Not sure how to tackle software ones for this :p
Hopefully it wonāt break badly?
Because with the manual break it kept trapping on the same one after running s
Maybe thatās just some other issue
But it is working almost
This will be good because it will then be on a whole seperate context
Well I hope that still means I can fuck with the frame that gets restored on IRETQ
Also instead of a CLI il swap up some handling to not set sti earlier etc
No thatās me :p
yes
Amazing
I woke up
Itās now randomly not working
Even after undoing changes

Itās just fucking packet overflowing constantly
I am going to have to scrap this all
Arenāt I
and restart
I have an idea!
IRQLs
This way everything can be masked except serial
Which means I donāt have to mess with cli/sti
And messing things up
Which means things can be dealt with cleanly
IRQLs suck
They make my kernel run doom at 1 frame per 7 seconds
Atleast during the fireworks test
Before it could atleast somewhat be playable

CC: @urban vale I would like to ask if you have any idea whatās causing this 
wait
guess who was using cli/sti still
:p

i fixed it
now IRQLs work
Paru!
I am doing it the lazy way
Without CPU local
So I wonāt be able to emulate it on other architectures
Sadly
But thatās a problem for future me
Sorry about the ping lmfao
But now I can properly make serial have super high priority
And then raise to the level below it
So only serial can interupt me
I also could just not use IRQLs on CPUs lacking support
And fallback to other methods
Because for most things Iām not using them fully
Sooooo I can use a few ifdefs here and there
Or arch spesific abstractions
oh btw all my IRQLs are at IRQL2

so im not sure if anything is breaking
wait i can test this
this seems to work
wait a second
i can use a lookup table for IRQ to IRQL translations
oh and thats bad because i shouldnt change IRQL on exceptions
nvm i already handle that

Also
Thatās not how IRQLs work
š
After looking at IRQLs I can't believe i just reinvented them in my previous kernel 

Lmfaoo
They are pretty cool
And itās gonna let me implement my debugger
Without having a ton of issues
Since it will be able to preempt everything
Even when spinlocked etc
I set an IRQ to IRQL15 and it works

With like properly setting the vector
My fireworks test tends to slow everything else down with its hundreds of threads
Nah normally it runs doom finely
My fireworks spawns a shit ton of hello worlds
In a batched way
It was because I still had spinlocks setting cli and sti
Through the schedules
Because it uses a different unlock function
They should instead raise IRQL
Well yes
My inline functions for spinlocks that everyone use did that
But the schedular has a special unlock function
Where assembly can call it
Which I forgot to update
Fixing that makes it run smoothly
me?
