klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
[AFK] has joined #osdev
<[AFK]> Is assembly x86 difficult to learn?
[AFK] has quit [Client Quit]
[AFK] has joined #osdev
<moon-child> is french difficult to learn?
<[AFK]> Probably?
nshire has quit [Quit: Connection reset by beer]
<[AFK]> i have been pretty hesitant to work on low level code like Assembly x86 since i have only 1 working device as my daily driver
<heat_> x86 assembly can't brick your device
<heat_> *unless you're running it in places where it can brick your device. in that sense it's slightly more dangerous than C
<Ellenor> (-:
<moon-child> yeah bricking is not really something you should be worried about
<[AFK]> I really want to get into OS dev. The only issue i have right now: My laptop is my only daily driver, and cant mess it up. I dont know if it is possible to fire a blank VM up and then try my code there, and im too hesitant to try anything that may potentially brick or stress my laptop up
<heat_> use qemu
<[AFK]> Noted. Checking it out
[AFK] is now known as Shaddox404
<Shaddox404> Thank you. I will check this out. Later!
Shaddox404 has quit []
Shaddox404 has joined #osdev
Shaddox404 has quit [Client Quit]
[_] has joined #osdev
[itchyjunk] has quit [Ping timeout: 260 seconds]
navi has quit [Quit: WeeChat 4.0.4]
goliath has quit [Quit: SIGSEGV]
rorx has quit [Ping timeout: 245 seconds]
carbonfiber has quit [Quit: Connection closed for inactivity]
<epony> in about 1 year, a new age will truelly be UPON YOU ALL, butt your ID cards and passwords would for the most part remain the same
<epony> passports too
* epony adds a little spin to the galaxies for extra crusty centrufungus and giggles and lols for alls
<epony> you're gonna LIKE IT!
Gooberpatrol66 has quit [Ping timeout: 245 seconds]
<gog> hi
vdamewood has quit [Quit: Textual IRC Client: www.textualapp.com]
teroshan has joined #osdev
MrBonkers has quit [Quit: ZNC 1.8.2+deb2build5 - https://znc.in]
<mcrod> hi
teroshan has quit [Quit: The Lounge - https://thelounge.chat]
teroshan has joined #osdev
MrBonkers has joined #osdev
teroshan has quit [Client Quit]
teroshan has joined #osdev
teroshan has quit [Client Quit]
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
Gooberpatrol66 has joined #osdev
teroshan has joined #osdev
rorx has joined #osdev
teroshan has quit [Read error: Connection reset by peer]
melonai2 has joined #osdev
melonai has quit [Read error: Connection reset by peer]
melonai2 is now known as melonai
xvmt has quit [Ping timeout: 252 seconds]
asarandi has quit [Quit: WeeChat 4.1.1]
cultpony has quit [Ping timeout: 252 seconds]
cultpony has joined #osdev
teroshan has joined #osdev
elastic_dog has quit [Ping timeout: 276 seconds]
DoubleJ5 has joined #osdev
xvmt has joined #osdev
asarandi has joined #osdev
DoubleJ has quit [Ping timeout: 252 seconds]
DoubleJ5 is now known as DoubleJ
teroshan has quit [Quit: The Lounge - https://thelounge.chat]
tanto has quit [Ping timeout: 252 seconds]
teroshan has joined #osdev
tanto has joined #osdev
teroshan has quit [Client Quit]
teroshan has joined #osdev
teroshan has quit [Client Quit]
teroshan has joined #osdev
[itchyjunk] has joined #osdev
teroshan has quit [Client Quit]
[_] has quit [Ping timeout: 256 seconds]
teroshan has joined #osdev
teroshan has quit [Client Quit]
teroshan has joined #osdev
elastic_dog has joined #osdev
teroshan has quit [Client Quit]
teroshan has joined #osdev
tanto has quit [Ping timeout: 252 seconds]
tanto has joined #osdev
[itchyjunk] has quit [Remote host closed the connection]
teroshan has quit [Quit: The Lounge - https://thelounge.chat]
teroshan has joined #osdev
teroshan has quit [Quit: The Lounge - https://thelounge.chat]
teroshan has joined #osdev
opus has quit [Quit: bye]
heat has joined #osdev
heat_ has quit [Read error: Connection reset by peer]
netbsduser has quit [Ping timeout: 252 seconds]
smeso has quit [Quit: smeso]
smeso has joined #osdev
gog has quit [Quit: byee]
epony has quit [Quit: QUIT]
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
experemental has joined #osdev
heat has quit [Ping timeout: 246 seconds]
kfv has joined #osdev
experemental has quit [Ping timeout: 256 seconds]
goliath has joined #osdev
experemental has joined #osdev
gbowne1 has quit [Read error: Connection reset by peer]
kfv has quit [Read error: Connection reset by peer]
kfv has joined #osdev
GeDaMo has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
danilogondolfo has joined #osdev
uzix has joined #osdev
uzix is now known as mahk
danilogondolfo has quit [Remote host closed the connection]
kfv has quit [Read error: Connection reset by peer]
kfv has joined #osdev
air has quit [Quit: Client killed by user]
kfv has quit [Read error: Connection reset by peer]
kfv has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
<Ermine> Oh, I missed microkernal discussion
air has joined #osdev
kfv has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<geist> yah
<geist> also no one mentioned all the TRON based stuff. like the nintendo switch OS
<geist> being a µkernel and all
goliath has quit [Quit: SIGSEGV]
kfv has joined #osdev
kfv has quit [Client Quit]
netbsduser has joined #osdev
<netbsduser> geist: i alluded to it lightly
<geist> ah guess i just missed it
<netbsduser> i think i said words to the effect of "microkernels are dominant everywhere except your desktop, laptop, smartphone, and webserver"
<geist> ah
<zid> Only if microkernel = nokernel
<netbsduser> and who can deny it? this is one of those areas where people's sight is short and few see beyond their niche
<geist> well, i think its a bit of a bold statement
<netbsduser> it's a bit like how i have repeatedly seen proclamations of the death of PHP made mostly by people around silicon valley startups, while most of the web still runs on wordpress
kfv has joined #osdev
kfv has quit [Read error: Connection reset by peer]
Shaddox404 has joined #osdev
kfv has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
kfv has quit [Remote host closed the connection]
kfv has joined #osdev
kfv has quit [Client Quit]
Shaddox404 is now known as 073AAJ75X
073AAJ75X is now known as Shaddox404
goliath has joined #osdev
<Ermine> well, let's face it, microkernels don't cut it in highload environments, where people bring stuff into kernel space with help of ebpf
<zid> It's just an incredibly niche technology with limited practical applicability
<zid> It's more of a research field than anything else
<zid> it's the string theory of CS :P
navi has joined #osdev
<Mutabah> microkernels are better for realtime though
<Mutabah> Where you want predictiability more than pure speed
<Ermine> And I believe that only microkernel OSes can be made immune to state-level adversaries
sbalmos has quit [Ping timeout: 256 seconds]
sbalmos has joined #osdev
gog has joined #osdev
bauen1 has quit [Ping timeout: 276 seconds]
<zid> why? a microkernel seems much harder to formally verify
<zid> plus a lot of what makes it more secure is just weasel words
<zid> I could do everything through something like fuse too, and just claim if you can overwrite my filesystem with a 'userspace' exploit, it doesn't count as getting hacked
<Mutabah> Smaller modules with well-defined (and testable) interfaces are (usually) easier to verify...
<Mutabah> but, if you get too small then things might get interesting
goliath has quit [Quit: SIGSEGV]
Shaddox404 is now known as AFK_Shaddox
<zid> Mutabah: I can already test things as 'modules', it's called the C API
<zid> but now we have to go through IPI and stuff on top
<Mutabah> those C modules could be communicating over side-channels (calling into each other)
<zid> yes, but I can for example, verify my weird-tree.c
<zid> and then treat it as a blackbox from then on
<zid> as long as various assumptions about the environment hold
<Mutabah> My argument isn't that modular monolithics are unverifiable, it's that micros would be (marginally) easier to verify
<Mutabah> due to simpler modules with strict well-defined interfaces
<zid> object files files have strict well-defined interfaces already
<zid> you don't *gain* that with a microkernel
<zid> you just shift what the interface entails to use
<zid> and imo in a microkernel, that is harder
<zid> IPI rather than 'a function call'
<zid> it's still semantically the same thing
<Mutabah> object files don't have a strict interface
<zid> ofc they do?
<Mutabah> I can put a `extern void frobnicate();` anywhere in my code, and call that function despite it being unrelated
<zid> and?
<zid> I can do a weird IPI anywhere
<Mutabah> yes... but you go through the IPI interface to that module
<Mutabah> that `frobnicate` could be an implementation detail of a completely unrelated module.
<zid> and you go through the frobnicate interface to that module
<zid> weird_tree_initialize_to_7
<zid> *is* the interface to the weird tree
<Mutabah> My point is that a microkernel would be a simpler task, due to it being lots of smaller-scoped verification units. As opposed to needing to consider a large module as a whole.
<zid> That's just a program organization thing
<Mutabah> This includes memory safety verification, which is hard to be fully sore in C
<Mutabah> *fully sure
<zid> I can make tiny .o files too
<zid> That's a language thing, I could write it in rust
<zid> and do the same thing
<zid> or javascript
<Mutabah> To verify a C file, you need to know all of the ways it is invoked (or - have a formal spec for it in its entireity, and consider that spec at every use site)
<Mutabah> *shrug* Useless conversation
<zid> Mostly yes
<zid> I'm not sure why you were even arguing tbh. You have the "verify this program" problem, but microkernel is just "verify this program, but now the interface between routines is an IPI", that shouldn't be a challenging debate.
<zid> It's either true or isn't about microkernels
<Mutabah> My stance is that verififying the IPI would be simpler (due to it being similar to a network protocol) than verifying a large monolith
<Mutabah> although, I've never done formal verification
<zid> why is the monolith 'larger
<zid> if anything it's smaller, because it can be the exact same program, but without being split via ipi boundaries
<Mutabah> hmm...
<zid> we're not comparing "40 million lines of linux", we're comparing "program A written as a collection of .o files and linked together" and "Program B, written as a collection of individual programs, IPI'd together"
<Mutabah> I guess I'm thinking more of security scoping...
<Mutabah> and the concept of combinatory explosion of interdependencies between the components (functions) in a module
AFK_Shaddox is now known as Shaddox404
<zid> Which is why modules are modular, and have internal state that you can verify can stay within certain bounds etc
<zid> then use it as a black box
<Mutabah> If you can verify that the black box is actully black, then go for it
<Shaddox404> Very interesting conversations, i like it!
<zid> Most well written C files are already, bad ones are bad
<zid> tautology ho
<zid> I'm sure there are badly written microkernels out there just the same
<zid> and well written ones that don't violate their own encapsulation
<Mutabah> I was going to argue that a uK means that you only need to re-verify the changed portions
<Shaddox404> Sorry if this is the wrong place to be asking this: but does C support threading now?
<zid> yes it does
<zid> they basically copy-pasted pthreads into the C..11? standard
<Mutabah> but... if your verification process allows treating modules as black-boxes then that wouldn't be a difference
<zid> Mutabah: yours requires it to support that anyway
<zid> why can't mine, I could pretend every function call is an IPI couldn't I?
<Mutabah> zid: I think it's newer than C11?
<Mutabah> Sure, but that's a LOT of IPIs
<zid> Mutabah: The only spec newer than C11 is C17 which is a typo fix on C11
<zid> for a single macro
<Mutabah> zid: Process boundaries are stricter than module boundaries
Shaddox404 is now known as 073AAJ75X
073AAJ75X is now known as AFK_Shaddox404
<Mutabah> zid: Ah, yeah, I was thiking 99
<zid> Mutabah: that my 'int statea;' and 'int stateb;' are in a.o and b.o rather than a.exe and b.exe shouldn't matter
<zid> you need to have verified everything *up* to that point for the verification to be true regardless
<zid> if you can't do it in the former case, you can't do it in the latter case either
<zid> if you can't verify *code*, you can't verify *programs*, they're.. made of code.
<zid> Much less programs that do RPC to get their results
<Mutabah> I'm not saying anything about can/cannot
<Mutabah> My argument has always been about simplicity
<zid> Your simplicity is *after* my simplicity though
<zid> You ahve to be able to verify everything your simplicity sits upon
<zid> and is infact, *more* work, because it's.. on top of work you did for mine
<zid> Your abstractions are built on top of mine
<Mutabah> What do you mean by that?
<zid> Once I've proven that ipi.o does the right thing, then we can prove your microkernel is correct
<zid> You can't *start* at the 'microkernel' level, unless you're making very gross assumptions about how things work which.. imo sort of isn't the point of a formal verification?
<zid> "The code is correct, as long as the implemtnation, which we have no idea about, is correct" is a thing you could definitely say though
<Mutabah> Ceding argument: My original basis was on the assumption that verification was unable to consider a `.o` files as a black box
<zid> and on some level you're doing ir regardless
<Mutabah> and could only consider process boundaries (or user-kernel boundaries)
<zid> you might be doing it for the cpu
<zid> or you verified the ISA does the right thing, but didn't verify the chip implemented the ISA correctly, etc
<zid> it's turtles all the way down
* Mutabah returns to writing a turtle
<zid> your turtyle is crushing my turtle with its fat body
q3lont has joined #osdev
PublicWiFi has joined #osdev
heat has joined #osdev
<heat> i'm a hybrid kernel fan
<heat> whatever that means
<heat> it sounds cool
<nortti> hybrid kernel is a kernel which contains both a combustion engine and electric drivetrain
<zid> ^
<zid> Exactly what I was going to say :P
<zid> Maybe something about wearing sandals too
<heat> toyota unix
<heat> I DONT LIKE MICROKERNELS, THEY MAKE ME UPSET
<heat> whatever the microkernels are, i can't tell either
<Mutabah> zid: by "Turtle" I mean a compiler :)
<heat> they told me i should hate them so i do
<zid> heat: correct.
<netbsduser> a hybrid kernel is a kernel which has all the benefits of a monolithic kernel and none of the downsides of a microkernel
<zid> so it's a monolithic kernel
<heat> Mutabah, that reminds me, can mrustc compile your OS?
<netbsduser> zid: no
<netbsduser> it's a hybrid kernel
<heat> or do you just target compiling rustc?
<zid> You just described a monolithic kernel though
<netbsduser> it has all the benefits of a monolithic but none of the downsides of a micro
<heat> zid, that's the joke
<zid> heat: correct.
<heat> currekt.
<Mutabah> heat: I primarily target building rustc
<Mutabah> haven't tried building my kernel for aaaages
<netbsduser> acess 2 is in rust now?
<netbsduser> i remember it from the forums 15 years ago
<Mutabah> netbsduser: Nah, I stopped work on that ages ago - got it to a rather stable place then was distracted by rust
<Mutabah> so wrote a new kernel/OS project in rust
<netbsduser> oh i see it now
<netbsduser> rust_os
<Mutabah> very imaginative name :)
<netbsduser> that rusticated udi you did, is it something serious or just a diversion?
<Mutabah> diversion mostly
<Mutabah> It has some lovely soundness holes, and as cool as UDI is, it's not really practical
<heat> RUSTIFIED STORPORT
<netbsduser> i thought about doing udi for a lark but i missed the chance to learn it during the teenage critical period for acquiring new schemas
<netbsduser> now my mind is only flexible enough to bend to storport
<heat> storport was a good choice
<heat> in the sense that its a stable API and ABI
<heat> it's something you definitely won't find in any open-source OS
<heat> OS OS
<netbsduser> it could even be practically useful
<heat> FOSSOS
<netbsduser> even reactos didn't have it which surprised me
<heat> it might be new enough that they don't need it
<netbsduser> was hoping to look to them for guidance but the API is simple enough, just a bit weird with its big variadic functions that do everything
<heat> everyone loves variadic functions
<Mutabah> UDI is pretty mid-bendy
<Mutabah> that said, I managed to almost fully map it onto rust's async model :)
Left_Turn has joined #osdev
q3lont has quit [Quit: Leaving]
<heat> netbsduser, does windows do request merging before storport or after it? or in storport?
<heat> well, request merging and all the other fun tricks like reordering and whatnot
<netbsduser> it's either in storport or in the scsi disk class-driver (the driver that adapts scsi to a higher-level abstraction for disks), probably within storport
goliath has joined #osdev
<AFK_Shaddox404> https://youtu.be/5HSjJU562e8 the explanation is impressive
<bslsk05> ​'Reverse Engineering Game Code from the Neutral Zone' by Retro Game Mechanics Explained (00:40:58)
netbsduser has quit [Ping timeout: 252 seconds]
netbsduser has joined #osdev
<kof123> > (08:48:20 AM) Ermine: And I believe that only microkernel OSes can be made immune to state-level adversaries no, because there is no agreement on what the word "state" means lol
<kof123> > this is one of those areas where people's sight is short and few see beyond their niche that is every area :D
bauen1 has joined #osdev
<kof123> > why is the monolith 'larger > if anything it's smaller, because it can be the exact same program, but without being split via ipi boundaries yes, a man named conway observed this
heat has quit [Remote host closed the connection]
heat has joined #osdev
<kof123> > t's turtles all the way down the turtle is a hybrid, or triple-storied, or....just say water and land :D hybrids all the way down ...
<kof123> that is tongue in cheek, but he specifically was hybrid :D
AFK_Shaddox404 is now known as Shaddox404
heat has quit [Remote host closed the connection]
heat has joined #osdev
Turn_Left has joined #osdev
Shaddox404 has quit [Ping timeout: 252 seconds]
<kof123> i have access to a turtle occasionally. he sits in a pond all winter...when it gets warmer he will climb out and bask in the sun lol
Turn_Left has quit [Remote host closed the connection]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 256 seconds]
biblio has joined #osdev
biblio has quit [Client Quit]
Shaddox404 has joined #osdev
Shaddox404 has quit [Ping timeout: 245 seconds]
heat_ has joined #osdev
heat has quit [Ping timeout: 260 seconds]
heat_ is now known as heat
Left_Turn has joined #osdev
<netbsduser> anyone have experience in crafting CFI directives? i'm trying to put together a risc-v exception handler which permits backtracing in GDB to the interrupted frame. i have done it successfully for aarch64, m68k, and amd64, but risc-v is eluding me
Turn_Left has quit [Ping timeout: 256 seconds]
<netbsduser> gdb complains "Backtrace stopped: frame did not save the PC" even when i add .cfi_offset for %ra
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 260 seconds]
Shaddox404 has joined #osdev
gog has quit [Quit: Konversation terminated!]
Terlisimo has quit [Quit: Connection reset by beer]
Terlisimo has joined #osdev
Shaddox404 is now known as AFK_Shaddox404
xenos1984 has quit [Ping timeout: 268 seconds]
xenos1984 has joined #osdev
AFK_Shaddox404 is now known as Shaddox404
gog has joined #osdev
<netbsduser> http://vpaste.net/4E8e6 this works for traps from supervisor mode at least
<netbsduser> i have no idea why it does nothing when a `.cfi_signal_frame` directive is made
xenos1984 has quit [Ping timeout: 256 seconds]
xenos1984 has joined #osdev
bauen1 has quit [Ping timeout: 252 seconds]
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 268 seconds]
experemental has quit [Ping timeout: 240 seconds]
zxrom has quit [Quit: Leaving]
sortie has quit [Quit: Leaving]
sortie has joined #osdev
Left_Turn has quit [Remote host closed the connection]
Left_Turn has joined #osdev
Shaddox404 has quit []
Left_Turn has quit [Ping timeout: 255 seconds]
Left_Turn has joined #osdev
bauen1 has joined #osdev
Left_Turn has quit [Ping timeout: 268 seconds]
Left_Turn has joined #osdev
Left_Turn has quit [Remote host closed the connection]
gbowne1 has joined #osdev
Left_Turn has joined #osdev
jjuran has quit [Ping timeout: 246 seconds]
jjuran has joined #osdev
thinkpol has quit [Ping timeout: 268 seconds]
jjuran has quit [Remote host closed the connection]
jjuran has joined #osdev
thinkpol has joined #osdev
sbalmos has quit [Quit: WeeChat 4.1.2]
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
sbalmos has joined #osdev
heat has quit [Ping timeout: 240 seconds]
heat has joined #osdev
netbsduser has quit [Ping timeout: 268 seconds]
netbsduser has joined #osdev
<sham1> hi
xenos1984 has quit [Read error: Connection reset by peer]
navi has quit [Quit: WeeChat 4.0.4]
Shaddox404 has joined #osdev
<Shaddox404> If i need to start creating my own OS, should i study a bit of electronics too?
<heat> not really
<Shaddox404> Alrighty
<zid> Unlikely to help, unless you're so uncomputer that you'd be learning things you should already know as a software person
<heat> like, it might help understanding certain stuff, particularly on really old crappy hardware
<heat> but generally, no
<Shaddox404> I see
<Shaddox404> I had attempted to create a cross-platform shell in Java (and it could parse scripts) so this is the first time im dipping my toes into a project of this magnitude. A bit nervous too
<sham1> OS development is a process which will have a lot of hurdles, but there are also many different ways you can subdivide it and be able to work on a lot of different sorts of things
<heat> why the heck are you nervous
<heat> are you on stage?
<sham1> Also, and this goes for any sort of a big project even outside of software engineering, but it helps to have a bunch of small incremental goals as opposed to trying to do it all at once
xenos1984 has joined #osdev
<zid> OS dev is actually a tiny project, code wise, if you don't want anything complex
<sham1> Eh, I get the nervousness. Perfectionism and the like can make you question whether you are actually good enough and such
<zid> it's just very *specific* code
<Shaddox404> Well, first time i'll be working on Assembly x86
<zid> Shaddox404: high chance you struggle and fail, but learn a bunch along the way, then
<zid> look at it as an excuse to get some experience with some low level concepts and tools
<sham1> In some sense, if you question your own skills, you might be nervous that you would "prove yourself right"
<Shaddox404> Yea exactly, "will i be able to do it" question in particular
<Shaddox404> Yea, its now or never then
<sham1> But yeah, even in "failure" you can still learn
<zid> Preprerations A through G were a failure afterall
<sham1> I don't really feel that in a hobby project, you could be considered to have failed or succeeded
<zid> If all else fails, make a gameboy game.
<Shaddox404> That gives me the confidence, thanks guys!
Shaddox404 has quit []
<sham1> Wish I could convince myself out of impostor syndrome that easier
<zid> make a gameboy game sham
<sham1> I think now I'll sleep
* geist yawns
<sham1> Oh nice, just what I needed
* geist tries to pass it around
<zid> grats sham you now have covid
<heat> GEIST
<heat> hi
<geist> whats the haps