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
m5_ has quit [Read error: Connection reset by peer]
m5_ has joined #osdev
netbsduser` has quit [Ping timeout: 252 seconds]
<Ermine> ntoskrnl.exe
<Ermine> what's happening in the kernal land today
<kof673> filesystem, malloc, scripting language thing, i do have a plan for "kernel" just very slow :D
<kof673> they can be tested in userland/hosted first...........
Leftas has quit [Quit: Ping timeout (120 seconds)]
Leftas has joined #osdev
k0valski18891621 has quit [Quit: Peace out !]
<geist> RUUUUST
<zid> Ermine: nikolar is taking the day off
<mpetch> @zid on an unrelated note I saw mention of call print_debug; db "Error msg" and it reminded me of the call/pop (part of jmp.call/pop) method used by stack overflow exploits to embed a string in the payload and get its address from the stack.
k_hachig_ has quit [Ping timeout: 244 seconds]
m5_ has quit [Read error: Connection reset by peer]
m5_ has joined #osdev
<geist> yah that's a fairly common pattern in a lot of early architectures that didn't necessarily have a stack pointer or some sort of hardware stack
<geist> but had some sort of branch-and-link sort of instruction that would let you at least get back to where you came from
<heat_> GEIIIIIIIIIST
<heat_> hi
bauen1 has quit [Ping timeout: 245 seconds]
<heat_> yesterday i randomly remembered that bizarre nintendo nx bug with the missing memory barrier plus cache clearing
goliath has quit [Quit: SIGSEGV]
Lucretia has quit [Read error: Connection reset by peer]
Marsh has joined #osdev
MiningMarsh has quit [Ping timeout: 246 seconds]
Marsh is now known as MiningMarsh
<geist> ahaha
<heat_> yep
heat_ is now known as heat
<heat> it is a little odd that the nx kernel doesn't have a single memory barrier in its scheduler
<heat> linux has like 3 or 4
<zid> yea you'd think something would serialize
<geist> this is a known thing, you're supposed to insert a DSB in the conect switch at the minimum in case you interrupted a sequence like this
<geist> which is what you just said yeah. it's non obvious
<heat> not just for this but you want barriers for various other things
<zid> you'd assume it'd just.. never work
<zid> or always work
<heat> including syncing up task wakeup with task sleeping
<zid> never work because the barriers were missing, or always work because the sched does lots of systemy stuff and probably causes a serialize regardless
<heat> you also want a barrier on task spawning
<zid> but it *very rarely failing* is kind of funny
<geist> yes, but in this particular sequence it's actually mentioned in the arm doc
<geist> since you issue the cache flushes (or tlb flushes too) and then must issue a DSB as a seperate instruction
<geist> either you must do that operatio with interrupts disabled (slow)
<geist> or you must arrange for there to be a barrier inside the interrupt if theres going to be some sort of task switch that does't let it complete the sequence
<heat> do you need a dsb or just a dmb?
<geist> and yeah it's be *extremely* hard to see this sequence
<geist> dsb
<heat> why?
<geist> dmbs only deal with memory and memory barriers, DSBs *specitically* in addition to being a DMB also interlock with cache and TLB ops
<geist> think of a DSB = { DMB, wait for other pending OOO ops like cache/TLB }
<zid> super dmb, that's what the s is for
<geist> i think the other way of looking at it is DMB isn't really 'blocking' per se. it simply orders memory operations as they're setting in the queue
<geist> DSB however actually stops forward progress and waits for things to commit
<geist> then at the 3rd layer, ISB keeps the cpu from moving forward past it
<geist> this is why DSB; ISB; is the absolute barrier of the cpu
<heat> why isn't dmb + isb equivalent?
<heat> since isb will still wait
m5zs7k has quit [Quit: m5zs7k]
m5zs7k has joined #osdev
<geist> gotta think about that for a sec
<geist> i mean dmb wouldn't interlock with cache ops and whatnot, because it's not defined to
<geist> i think it would just plow past the dmb and the isb acts as a prefetching stall
the_oz has quit [Ping timeout: 252 seconds]
<geist> ie, the cpu cannoot prefetch/speculate around an ISB until the PC actually arrives at it (ie, it's retired all the instructions)
<heat> oh yes, the diff would be wrt cache and tlb ops yeah
<zid> DOSH ALERT
<geist> but since the DMB doesn't actually wait for memory ops to complete, it simply inserts a sort of before-and-after label on any existing memory ops that havne't completed, it would just keep going past
<heat> memory barriers man, memory barriers.
<heat> how out of order are these things anyway?
<heat> i can't really gauge how much ooo fuckiness these modern cores do
<heat> i do know x86 is really memory-barrier happy in the sense that the memory model is really forgiving and even a locked atomic implies a full memory barrier
joe9 has joined #osdev
<geist> my experience is the M1 cpu (and presumably the later ones) is *extremely* OOO
<geist> people have documented it and i've found at least one bug in zircon that i could only reproduce on qemu on m1
edr has quit [Quit: Leaving]
joe9 has quit [Quit: leaving]
<klys> seems it's rather important when writing a program with involved data structures to have a document that tells all the constraints of those data structures and to read that document before proceeding the next time you work on the project.
<zid> how dare you be thorough
<heat> ikr just write the code lol wtf
<klys> getting into it I had some questions about what those last and next pointers were for and why I had them pointing at adjacent elements. also I was assuming there would only be one trunk structure. it's been a couple of weeks of coding weirdly.
surabax has quit [Quit: Leaving]
heat_ has joined #osdev
heat has quit [Ping timeout: 268 seconds]
heat_ has quit [Ping timeout: 272 seconds]
m5_ has quit [Read error: Connection reset by peer]
cow321 has quit [Read error: Connection reset by peer]
Arthuria has quit [Killed (NickServ (GHOST command used by Guest684531))]
Arthuria has joined #osdev
the_oz has joined #osdev
cow321 has joined #osdev
m5_ has joined #osdev
m5_ has quit [Ping timeout: 248 seconds]
pabs3 has quit [Read error: Connection reset by peer]
pabs3 has joined #osdev
bauen1 has joined #osdev
Arthuria has quit [Ping timeout: 260 seconds]
ThinkT510 has quit [Quit: WeeChat 4.5.2]
vdamewood has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ThinkT510 has joined #osdev
Lucretia has joined #osdev
ring0_starr has quit [Ping timeout: 248 seconds]
knops has joined #osdev
knops has quit [Ping timeout: 252 seconds]
netbsduser` has joined #osdev
Gooberpatrol66 has quit [Read error: Connection reset by peer]
Gooberpatrol66 has joined #osdev
GeDaMo has joined #osdev
zijjgfs has joined #osdev
guideX has quit [Read error: Connection reset by peer]
joe9 has joined #osdev
gog has joined #osdev
cow321 has quit [Read error: Connection reset by peer]
cow321 has joined #osdev
wereii has quit [Quit: ZNC - https://znc.in]
goliath has joined #osdev
<mcrod> hi
wereii has joined #osdev
wereii has quit [Quit: ZNC - https://znc.in]
wereii has joined #osdev
demindiro has joined #osdev
<demindiro> I have learned a couple things:
<demindiro> 1. .pushsection is exactly what I need
<demindiro> 2. precise stack scanning for roots (for tracing GC) is surprisingly easy
<demindiro> And most importantly: 3. don't forget to initialize your data structures because fuck that was awful to debug
<demindiro> Macros in GAS are also way nicer than those in C somehow
surabax has joined #osdev
cow321 has quit [Read error: Connection reset by peer]
<pog> macros are part of the syntax rather than a preprocessing step
heat_ has joined #osdev
<heat_> demindiro, if you compile your .S files with gcc/clang (instead of as) you can get it to preprocess your files
<heat_> thus the best of both worlds
<demindiro> nah
<demindiro> I don't like the C preprocessor
<heat_> it defines (iirc) __ASSEMBLER__ which you can use to gate off C structs
<heat_> well, it's very useful for shit you want to share between C and asm
heat_ has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
cow321 has joined #osdev
vdamewood has joined #osdev
<nikolar> demindiro: what are you doing with a gc
<nikolar> Gc kernel?
hwpplayer1 has joined #osdev
<demindiro> nikolar: bootstrap interpreter
<nikolar> What's a bootstrap interpreter
<demindiro> I intend to add a JIT too, but it will be implemented as another interpreter in the language itself
<demindiro> The idea is lots of stacked interpreters and JIT optimize them
<demindiro> And the bootstrap interpreter just a small one written in assembly
<nikolar> Right
<demindiro> The semantics of the language should be just right that optimizing it down efficiently should work regardless of how many interpreters you pile on top
FreeFull has quit []
<demindiro> And yes, I'll use a GC for most services. Tracing GC should work fine if you keep the heap small
<demindiro> Which shouldn't be too hard if you have many small heaps per "process" a la Erlang
guideX has joined #osdev
<heat_> linux operating system
hwpplayer1 has quit [Read error: Connection reset by peer]
simpl_e has joined #osdev
<nikolar> KERNAL
* kof673 narrator: in the lost forest of #osdev, the natives still primitively chant for favour, "kernel, kernel!" they cry out
benlyn has joined #osdev
Left_Turn has joined #osdev
Left_Turn has quit [Ping timeout: 252 seconds]
<Ermine> i'd like to interject for a moment
<Ermine> linux is not an operating system system unto itself
craigo has joined #osdev
Etabeta1 has quit [Ping timeout: 252 seconds]
m5_ has joined #osdev
k_hachig_ has joined #osdev
<gog> it's acksually gnu plus linux
hwpplayer1 has joined #osdev
<heat_> uhhhhhh maam i use the gnu operating system aktshually
<Ermine> gog: use gnu plus onyx
<gog> gnu plus kjarna
<heat_> subscribe to gnu plus
<heat_> your new foss libre documentary streaming service
<Ermine> drm-free!
<Ermine> In both senses
Left_Turn has joined #osdev
the_oz has quit [Ping timeout: 268 seconds]
the_oz has joined #osdev
demindiro has quit [Quit: Client closed]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 260 seconds]
k_hachig_ has quit [Ping timeout: 260 seconds]
EwwNasty has joined #osdev
Arthuria has joined #osdev
k_hachig_ has joined #osdev
<nikolar> heat_: is gnu plus google+ but gnu
<Ermine> more like msn but gnu
zijjgfs has quit [Quit: Leaving]
zijjgfs has joined #osdev
zijjgfs is now known as ring0_starr
xenos1984 has quit [Read error: Connection reset by peer]
cow321 has quit [Ping timeout: 252 seconds]
<zid> gnoogle plus
<nikolar> zid, copyright that
<zid> I just did
xenos1984 has joined #osdev
<klys> noogleplus.com sounds like i'm asking for a cat.
xenos1984 has quit [Ping timeout: 268 seconds]
<gog> ^w^
<gog> i'm kbity
<zid> bnuuy is popular atm in my dickscords
cow321 has joined #osdev
xenos1984 has joined #osdev
<heat_> nikolar, disney+ but gnu
<nikolar> Ewwq
<klys> gnuvies
<klys> cast via port 5900
<klys> could use: x11vnc -viewonly -shared -forever 2> /dev/null; and this: https://github.com/amitbet/vnc2video
<bslsk05> ​amitbet/vnc2video - A fully featured VNC client written in golang (40 forks/158 stargazers/MIT)
<zid> run vlc in wine, easier :P
<klys> wine? vnc works natively too
<klys> ack, wine? vlc works natively too
netbsduser` has quit [Quit: Leaving]
netbsduser has joined #osdev
<heat_> nikolar, it's a streaming service full of various renditions of https://en.wikisource.org/wiki/The_Pig_and_the_Box
<bslsk05> ​en.wikisource.org: The Pig and the Box - Wikisource, the free online library
<nikolar> That's, ugh, something?
simpl_e has quit [Remote host closed the connection]
<heat_> it's a children's book on the perils of DRM
simpl_e has joined #osdev
<nikolar> Oh lol
Arthuria has quit [Remote host closed the connection]
k_hachig_ is now known as k_hachig
Gordinator has joined #osdev
xal has quit [Quit: bye]
xal has joined #osdev
Arthuria has joined #osdev
k_hachig has quit [Ping timeout: 260 seconds]
Matt|home has joined #osdev
FreeFull has joined #osdev
netbsduser has quit [Ping timeout: 248 seconds]
the_oz has quit [Remote host closed the connection]
the_oz has joined #osdev
cow321 has quit [Read error: Connection reset by peer]
netbsduser has joined #osdev
Arthuria has quit [Ping timeout: 248 seconds]
cow321 has joined #osdev
k_hachig_ has joined #osdev
MiningMarsh has quit [Read error: Connection reset by peer]
MiningMarsh has joined #osdev
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
mavhq has quit [Read error: Connection reset by peer]
cow321 has quit [Read error: Connection reset by peer]
mavhq has joined #osdev
steelswords94361 has quit [Quit: The Lounge - https://thelounge.chat]
Arthuria has joined #osdev
cow321 has joined #osdev
Arthuria has quit [Ping timeout: 252 seconds]
EwwNasty has quit [Remote host closed the connection]
Arthuria has joined #osdev
benlyn has quit [Ping timeout: 248 seconds]
simpl_e has quit [Ping timeout: 252 seconds]
simpl_e has joined #osdev
simpl_e has quit [Read error: Connection reset by peer]
simpl_e has joined #osdev
k_hachig_ has quit [Ping timeout: 268 seconds]
Lucretia has quit [Remote host closed the connection]
Turn_Left has quit [Read error: Connection reset by peer]