#saalty's unnamed OS
1 messages Β· Page 2 of 1
think again
yes, i think this is most likely worth foregoing
the pervious notepad should be much more basic
oh they xml'd it
ig at least they're making everything consistent :^)
what would that even be useful for?
there isn't even a feature in notepad which makes use of it
at least apparently
this is such a late response to your question but i think it would be nice if you could put a link to google maps/similar service and it would embed the map view and controls into the notepad
Maybe Microsoft Word but.. notepad? Really?
XHCI is now working
Here is mouse input data, delta X with delta Y
This is a huge update but I havent posted in a while
π²
Fixed! ||Surprised I fixed it faster than getting the limine talk||
I could implement USB Mass storage devices along with the current HID in order to not require an installed hard drive
Yeah I will probably do that
Now that I will feed mouse data into usermode, I will repurpose the current keyboard data queue to be a general purpose event queue, with events being mouse, keyboard, etc
Actually, instead of an event queue, I could do an event ring buffer
So when hardware sends data, it will add an item to the ring buffer and advance a dequeue pointer, and then usermode processes can use a syscall to poll for events and advance the enqueue pointer
Where is saalty #1 fan π
Now I cleaned up the XHCI driver and I now have it pass HID data to the user mode processes cleanly
Now I am trying to make it work on real hardware
20 computer restarts in, sigh
its lonely
For some reason the driver freezes right when runstop bit is set.
Also, I pushed the latest changes to the Codeberg repository.
I also will have to rewrite my memory allocator, it is a mess
Maybe I have to properly de-initialize the firmware's XHCI data structures
idk where they went, but i'm here as well :3
well, welcome back to you too :P
Yeah I was gone for a few months lol
But I am happy to say my sine wave is at its peak!
πͺ
Go go go saalty! We're rooting for you!!!!!!
hell yeah saalty!
Thanks guys!
Right now I am stuck in a weird bug with calling my kernel main function
There is a triple fault for some reason
Was a bug with some macros, should be fixed now
Yup, fixed
Right now I am trying to get HPET working to make everything run more smoothly
Looks like I did it
Probably my most simple driver so far
The OS boots smoothly now.
Going to screen record it's current state.
If only there was a cycle accurate x86_64 emulator with hardware virtualization...
Then my job would be a lot easier
But at the same time it would be extremely slow
Also I will need to rework the paging to support higher addresses than 4GiB
Pushed my latest changes
nice to see another codeberg user
Yeah, github is turning into too much of a shitshow for me to use it any longer.
Aka microsoftification
I was also considering Sourcehut, but it's too minimal for my personal tastes
I am considering doing a full rewrite of the OS
It feels like a skyscraper which has a foundation made of toothpicks, and if I make it offbalance it will crash down
so basically obos rewrite 4?
anyway gl with the rewrite
Maybe gitlab?
thanks
idk, maybe
I am thinking of making the rewrite be designed to be compatible with Windows
Maybe there will be a combination of UNIX and NT design principles
Make working set model vmm
what's that?
Search it
well, online explanation of it is too vague
And from what I have read so far it seems to be for memoey managers that swap pages
I don't swap pages currently
basically
it's the pages that should be loaded to minimize page faults (to load swapped pages)
and maximize performance
only a set amount of pages can be in it at once
and it's limited by the working-set size
first link [here](#virtual-memory message) is a paper on it
thanks for the info!
I guess me and ske will try to implement it once we have page swapping
as right now we dont swap pages at all
I'm implementing it in OBOS
and I'll probably add a swap along with it
*swap interface
the swap will probably just be some reserved ram region
nice, i'll check out the obos thread once in a while to see your progress on it
and to have a reference implementation for me to go off of I guess
never swapped pages before so this will be something new
check keyronex, @woeful rover's implementation would probably be better
In theory, it's simple
you just turn off the present bit
i know how to swap pages, i'm just worried about the implementation specific bugs I might encounter lol
maybe store some info about where the page is in swap
then on page fault load in the page
yeah
as for the working-set, in hindsight, it's simple, but the hard part is in how to determine its contents
i guess the working set model attempts to minimize the amount of page swaps
that's basically the entire point
the working-set (maximum?) size is user-defined I guess
i see
there are a couple algorithms for it
one is in the paper
some others can be found here
In a computer operating system that uses paging for virtual memory management, page replacement algorithms decide which memory pages to page out, sometimes called swap out, or write to disk, when a page of memory needs to be allocated. Page replacement happens when a requested page is not in memory (page fault) and a free page cannot be used to ...
I plan on using the "aging" algorithm
it's described in the paper somewhere, although I don't think it was really named that in the paper
it had something to do with "used bits"
as for how you'd know when to change said "used bits" (aka the age)
you would basically make some timer
(periodic timer)
whenever it expires, I'm pretty sure you just loop over pages, checking the accessed and dirty bits in the pte
oring the two bits
and you'd also unset them
then, you shift the value you got from adding them into the age
then, to determine which ones are in the working-set, you or each bit in the age, whichever pages are zero, you don't put in the working-set
and whatever ones are, you put in the working set
now, I could be mistaken
maybe I misunderstood something
so if something I say is wrong, someone please correct me on it
the reasons why this algorithm is good are described in the wikipedia page
maybe this part is wrong, or is different rather
you could also check pages which have smallest age
that could work too
*biggest
you swap out pages with the smallest
I will try to follow that article π
just ignore the math part of the paper
I can probably set up HPET to run another periodic timer to do what you are describing
I did that and it worked out fine
nice
That's (technically) what I'm planning to do'
I've made a timer interface
Oh
for my kernel
I made it because of the vmm though
I'm done the outer layer
I just need the hpet code
Do you treat timer devices like drivers or are they seperate
the timer interface treats them as an abstract interface from the arch code
which is basically what a driver is
well technically it tells the arch to initialize a timer with a frequency that the arch code chooses
and the timer will be on some irq object initialized by the exteriour interface
Unnamed OS development is probably going to end, in favor of an entirely new bootloader + kernel + OS designed ground up to look and function like Windows 10.
I will talk with ske about this, but a clean rewrite would allow us to have a much cleaner and more modern bootloader and kernel
If we end up going along with this new OS, we will probably make another thread in #1006498459798474873 for the new OS in order for people to be able to distinguish between this one and the new one.
And if anyone feels sad about this, Unnamed OS walked so the new OS could run.
One issue with the windows clone idea is copyright, and that will be tricky, but we will try our best to avoid using Microsoft's intellectual property
Windows clone in terms of GUI look or Abi and api?
Why not help make reactos better in that case
Both
I love ReactOS, and have been thinking of contributing to it, buuuut it's not Windows 10 compatible and not made by me π
Its not windows 10 compatible yet
Because itβs an absolutely incredible amount of work
You wont be windows 10 compatible even if you advertise yourself as windows 10
You're right, I didn't think of the actual amount of work I would have to put in
But that leaves me the question of where I want to go with osdev.
At this point, I don't know what I want to make
Yo guys
yo salty
Decided to not rewrite everything and just, y'know, keep working on this one
Going to debug my USB driver on real hardware which is just as painful as it sounds
I already have a bug on real hardware with USB...
Also, how did you reply so fast r4
haha I happened to be looking at discord and it was an easy thing to type
oh alright lol
good luck with your debugging π
Thanks, I will severely need it
meanwhile js developers can just make a simple callback for a keypress... π
function keyDown() my ass
lmfao
Yo salty any updates on the OS?
Procrastination!
YAY!
Very awesome right?
Yeah lol gn m8
Getting motivation
Primarily going to focus on USB again, to try and get it to a polished and stable state
LETS FUCKING GO
Thats the spirit! After the USB driver, I will dedicate my effort to making a NIC driver...
Will be pretty exciting
One thing that I want in my OS is the ability for the user to modify programs even while they are running, so like inspecting their exact RAM and writing to a programs RAM at any time
To allow this, I might add a command/syscall which would allow a root privilege user/program to "pause" a program's execution, unbeknownst to the program
this way, the user has even more control of their computer, as it should be.
Also will allow the user to inspect the CPU registers of the program's paused state
like Cheat Engine?
Cheat engine but its already in the system and probably more low-level inspecting options
so a debugger?
LOL
this already exists, see ptrace on linux
good that it already exists
just saying, the way you worded it makes it sound like a revolutionary feature
I thought so at first, but then I remembered cheat engine and ptrace like you said
Slightly disappointed that it already exists but whatever
Well actually, cheat engine works by attaching itself to a process
Cheat engine is probably easily detectable
Not sure about ptrace though
technically you can get the pid of the tracer process via procfs
and there are obvious ways to detect that you've been blocked for a while
like checking whether the time jumped forward by a large amount
POV you make it kernel mode and give them full memory control
Guess who is back
The USB driver is now more stable and has much better mouse support now
The video showcases it
The video shows the mouse stuttering quite a bit because of the software framebuffer blit lag, but without rendering its very smooth
What's annoying is that my main OS is stored on my only nvme drive, so at the moment I cant test my OS on real hardware
Guess I will have to move my main OS to an AHCI ssd
be brave, test your os on that drive
well it would overwrite the GPT, as it doesnt base the OS installation on a partition but the entire drive
perhaps I should add partitioning support later
but its not really high priority
USB keyboard works flawlessly now
Together with USB mouse
I think the USB driver is basically done now
Which is huge
Which controller
Too tired to record a video right now lol
xhci
Real hid or boot?
Real
thanks
I did, but there is issues. The main one being my motherboard has 3 fucking xhci's
π
I have to rewrite my driver to support more than 1
But shouldnt be too hard
Huh
How did you manage to not support that
Anyway saying its basically done without even testing real hw idk man
Also try other emulators at least
I know, I am going to test it on real hardware
But at least on qemu it works (this doesnt mean much though from my experience π)
Yup
Here, you can see the mouse drawing multicolor lines and me inputting text
Both mouse and keyboard through USB, and storage is through NVMe
Support for real hardware is definitely going to be worked on, but might take a while to get working
I'll give updates for the status of it
Also, its just the USB driver that will have to get working on real hardware, NVMe and other stuff work fine
So it shouldnt take too much work
(famous last words)
nice one, thats cool
The saalty is back
And the latest update brings new features and optimizations to primarily the filesystem
Most significantly, the filesystem now supports file sizes which arent aligned to 512
The reason why this wasn't the case earlier, well, I wont answer that!
Also fixed several memory leaks, and other poor memory management
So the OS should be more stable than ever
USB support on real hardware is still in the works though.
The OS code also features a better interactive example of USB 3.0 keyboard and mouse
YEAAAAAAAAAAAAAA