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
X-Scale has joined #osdev
Stellacy has quit [Remote host closed the connection]
<heat> i have umount and it actually works on physical filesystems
<heat> the haters said i couldn't do it x2
gildasio has quit [Ping timeout: 260 seconds]
gildasio has joined #osdev
<vdamewood> heat: I'm sure not everyone who said you couldn't do it was a hater.
<heat> i didn't say that
<heat> i said "the haters said i couldn't do it"
<heat> all of the haters said i couldn't do it; however, not everyone who said i couldn't do it was a hater
<rbox> they hate us cuz they ain't us
<vdamewood> heat: That's what I said.
<Mondenkind> heat: you can not have umount that actually works on physical filesystems
<heat> you're too late, hater
<heat> what the heck were you doing? sleeping? haters never sleep
<heat> YOU ARE WEAK
<Mondenkind> i was sleeping
<Mondenkind> with your mother
<heat> dude
<vdamewood> I'm not crazy; I'm an airplane.
<heat> not cool.
<vdamewood> I'm not a hater either. Still an airplane.
<heat> i wouldn't like being an airplane tbqh
* vdamewood drops heat off at Tuvalu.
<Mondenkind> i will not do it again
linearcannon has joined #osdev
linear_cannon has quit [Read error: Connection reset by peer]
m3a has quit [Ping timeout: 276 seconds]
rustyy has quit [Ping timeout: 245 seconds]
m3a has joined #osdev
Turn_Left has quit [Read error: Connection reset by peer]
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
gog has quit [Ping timeout: 245 seconds]
eddof13 has joined #osdev
eddof13 has quit [Quit: eddof13]
Gooberpatrol66 has joined #osdev
eddof13 has joined #osdev
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
qubasa has quit [Ping timeout: 245 seconds]
andydude is now known as andydude2
Matt|home has quit [Ping timeout: 276 seconds]
goliath has joined #osdev
gildasio has quit [Remote host closed the connection]
gildasio has joined #osdev
rustyy has joined #osdev
rustyy has quit [Quit: leaving]
rustyy has joined #osdev
linearcannon has quit [Remote host closed the connection]
vin has quit [Quit: WeeChat 2.8]
eddof13 has quit [Quit: eddof13]
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
X-Scale has quit [Quit: Client closed]
netbsduser has joined #osdev
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
dzwdz has quit [Ping timeout: 260 seconds]
Left_Turn has joined #osdev
alpha2023 has quit [Read error: Connection reset by peer]
alpha2023 has joined #osdev
dzwdz has joined #osdev
Turn_Left has joined #osdev
GeDaMo has joined #osdev
Left_Turn has quit [Ping timeout: 248 seconds]
ldelabre has joined #osdev
ldelabre has quit [Client Quit]
heat__ has joined #osdev
heat_ has quit [Read error: Connection reset by peer]
memset has quit [Remote host closed the connection]
memset has joined #osdev
warlock has quit [Remote host closed the connection]
heat__ is now known as heat
X-Scale has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
Stellacy has joined #osdev
Stellacy has quit [Remote host closed the connection]
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
scaleww has joined #osdev
gog has joined #osdev
node1 has joined #osdev
Gooberpatrol66 has quit [Ping timeout: 252 seconds]
Brnocrist has quit [Ping timeout: 260 seconds]
Brnocrist has joined #osdev
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
Left_Turn has joined #osdev
mavhq has joined #osdev
Turn_Left has quit [Ping timeout: 265 seconds]
node1 has quit [Ping timeout: 256 seconds]
scaleww has quit [Quit: Leaving]
sparklysara has joined #osdev
Starfoxxes has joined #osdev
xx0a_q has joined #osdev
spare has joined #osdev
osdev199 has joined #osdev
MiningMarsh has quit [Quit: ZNC 1.9.1 - https://znc.in]
Turn_Left has joined #osdev
MiningMarsh has joined #osdev
Left_Turn has quit [Ping timeout: 265 seconds]
ddevault has quit [Remote host closed the connection]
pitust has quit [Write error: Broken pipe]
listentolist has quit [Remote host closed the connection]
ursa-major has quit [Write error: Connection reset by peer]
lh has quit [Remote host closed the connection]
tommybomb has quit [Remote host closed the connection]
noeontheend has quit [Write error: Broken pipe]
lucyy has quit [Remote host closed the connection]
jleightcap has quit [Remote host closed the connection]
sm2n has quit [Write error: Connection reset by peer]
hanemile has quit [Write error: Broken pipe]
nagitsu has quit [Remote host closed the connection]
asymptotically has quit [Remote host closed the connection]
patwid has quit [Remote host closed the connection]
tom5760 has quit [Remote host closed the connection]
yuiyukihira has quit [Remote host closed the connection]
alethkit has quit [Remote host closed the connection]
vismie has quit [Remote host closed the connection]
rselim has quit [Remote host closed the connection]
baraq has quit [Remote host closed the connection]
gjn has quit [Remote host closed the connection]
whereiseveryone has quit [Remote host closed the connection]
xtex has quit [Remote host closed the connection]
exec64 has quit [Remote host closed the connection]
listentolist has joined #osdev
whereiseveryone has joined #osdev
noeontheend has joined #osdev
yuiyukihira has joined #osdev
lucyy has joined #osdev
tom5760 has joined #osdev
gjn has joined #osdev
sm2n has joined #osdev
exec64 has joined #osdev
ddevault has joined #osdev
tommybomb has joined #osdev
asymptotically has joined #osdev
alethkit has joined #osdev
jleightcap has joined #osdev
baraq has joined #osdev
hanemile has joined #osdev
patwid has joined #osdev
nagitsu has joined #osdev
ursa-major has joined #osdev
rselim has joined #osdev
xtex has joined #osdev
pitust has joined #osdev
lh has joined #osdev
vismie has joined #osdev
edr has joined #osdev
<Ermine> heat_: great job!
<heat_> what did i do?
<nikolar> you broke it
<heat_> :(
<heat_> sarcastic great job then
<nikolar> oh that's from me
<nikolar> i dno't know what Ermine wants
<Ermine> broke what
<Ermine> heat_: you did umount
<heat_> oh thank you
<osdev199> heat: hi, in my nvme driver, while creating the first i/o completion queue, it is failing with the status code 2 (Invalid Field in Command). I have double checked my commands and still can't figure out which cmd is invalid.
<osdev199> Here are my commands: https://pastebin.com/PYiL0WJA . I'm testing my driver on my real machine.
<bslsk05> ​pastebin.com: uint32_t cdw0 = 0x00010005; /* cdw0: cid 1, prp used (15:14 clear), fuse nor - Pastebin.com
<osdev199> I also matched my commands with your driver's and I guess both are similar: https://github.com/heatd/Onyx/blob/master/kernel/drivers/nvme/nvme.cpp#L514
<bslsk05> ​github.com: Onyx/kernel/drivers/nvme/nvme.cpp at master · heatd/Onyx · GitHub
<osdev199> any idea? Thanks.
<osdev199> heat_
<heat_> idk
<osdev199> ok.
memset_ has joined #osdev
memset has quit [Ping timeout: 260 seconds]
heat_ has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
<netbsduser> i still have no idea what was going on with esr=0x2000000 exceptions in userland paged executable code
<netbsduser> but it turns out that if i just return from the handler in that case, eventually it works, and if i invalidate the tlb entry covering the pc that it trapped at, it just works
<heat_> were you missing a tlbi?
<netbsduser> not as far as i can see
<netbsduser> i went as far as invalidating every tlb at every page fault and eviction
<netbsduser> and putting the most pessimistic barriers around each
<netbsduser> and a complete invalidation of the instruction cache
<netbsduser> and it still happened
<netbsduser> this workaround seems like it shouldn't work but for whatever reason, it seems that it does work, even if i limit the resident set of a user process to 16 pages and reclaim every page in the system very frequently
<zid> what's an esr? Extremely suspicious register?
<netbsduser> exactly the conditions i would expect things to explode under
<netbsduser> it's the exception syndrome register
<netbsduser> sometimes it just says unknown reason and you've got to guess
dzwdz has quit [Ping timeout: 248 seconds]
gcoakes has quit [Ping timeout: 265 seconds]
spare has quit [Remote host closed the connection]
spare has joined #osdev
osdev199 has quit [Remote host closed the connection]
eddof13 has joined #osdev
dzwdz has joined #osdev
Turn_Left has quit [Remote host closed the connection]
Turn_Left has joined #osdev
spare has quit [Remote host closed the connection]
X-Scale23 has joined #osdev
theyneversleep has joined #osdev
X-Scale23 has quit [Ping timeout: 256 seconds]
heat_ has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
Stellacy has joined #osdev
voidah has joined #osdev
<geist> netbsduser: hmm, is this on real hardware?
<geist> propbably so, i doubt there are any unknowns on QEMU TCG
<geist> *generally* unknown ESR is pretty narrow set of stuff, so it's probably something pretty exotic. all *normal* types of exceptions have a code
<geist> one unknown may be something like the bus has thrown an error, and the arch cant handle that
<geist> though normally tat's an SEerror (system error) interrupt
<geist> but one thing that is easy to make it cause that is touching memory you're not supposed to
<geist> like mapping a hole in the physical address space and touching it
<geist> most ARM SOCs are pretty picky about that
<geist> that's why things like that tend to be 'unknown' errors from the ARM core point of view. it's basically a fault somewhere outside of the cores purview, and doesn't know how to deal with it
<netbsduser> geist: it's under KVM on a pi 4
<netbsduser> what's bizarre is that invalidating the TLB covering whatever's in ELR seems to resolve it in my case
<netbsduser> or maybe that's a red herring, but certainly even if i do nothing in this case but just return, things work again after a few hundred or so of them
<geist> hmmm could be a KVM thing yeah
<geist> but yeah if you get a few hundred in a row that's suspicious
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 245 seconds]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 244 seconds]
goliath has quit [Quit: SIGSEGV]
<heat_> geist, random q but do you know (more or less) how well a random bunch of pages compresses?
<geist> in fuchsia? good question, i can ask adrian who works on it
<geist> he has the data
<geist> also depends on the algo, etc
<heat_> yeah
<geist> i think a lot of it is how it slots in to the backend storage. linux has multiple schemes to store packed pages. i think we have a 3:1 mechanism
<geist> ie, if a page compresses to 1/3 or 2/3 we have a slot for it, i think
<heat_> i'm looking into swapping and i'm considering playing around with a zswap-like mechanism
<heat_> with zstd
<geist> yah with linux you can live select the storage algorithm, and to a certain extent that matters more than anything else, becase it selects what thresholds it matters
<heat_> the most immediate idea is to take whatever pages you were going to swap to disk and see if they compress well enough
<geist> and also while you're at it you should look for particular things like zeroed pages, etc. linux IIRC has a scheme where if the page is all one of a repeating byte it just gets remembered that way
<heat_> yep
<geist> i think we only look for zeros, and at the moment iirc the simple trick is we just compress it and if the compressio signature matches a known zeroed page we just mark it as zeroed
<geist> that's mostly because we didn't want to fiddle with the compression code to add an additional 'tap' to it to tell is if it just saw all of one byte
<heat_> yah
<nikolar> that's a fine idea honestly
X-Scale has joined #osdev
MiningMarsh has quit [Ping timeout: 265 seconds]
MiningMarsh has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
sbalmos2 is now known as sbalmos
eddof13 has quit [Quit: eddof13]
X-Scale has joined #osdev
eddof13 has joined #osdev
Stellacy has quit [Ping timeout: 260 seconds]
goliath has joined #osdev
Stellacy has joined #osdev
eddof13 has quit [Quit: eddof13]
Matt|home has joined #osdev
hwpplayer1 has joined #osdev
eddof13 has joined #osdev
scaleww has joined #osdev
eddof13 has quit [Client Quit]
X-Scale has quit [Ping timeout: 256 seconds]
CaptainIRS has joined #osdev
FreeFull has quit []
FreeFull has joined #osdev
MiningMarsh has quit [Ping timeout: 252 seconds]
MiningMarsh has joined #osdev
xenos1984 has quit [Ping timeout: 264 seconds]
xenos1984 has joined #osdev
eddof13 has joined #osdev
andydude2 is now known as andydude
sparklysara has quit [Ping timeout: 252 seconds]
xx0a_q has quit [Quit: WeeChat 4.3.5]
memset_ has quit [Ping timeout: 260 seconds]
memset has joined #osdev
heat_ has quit [Read error: Connection reset by peer]
heat__ has joined #osdev
eddof13 has quit [Ping timeout: 264 seconds]
hwpplayer1 has quit [Quit: brb]
snappy has quit [Quit: WeeChat 3.5]
Ellenor has quit [Ping timeout: 252 seconds]
xenos1984 has quit [Ping timeout: 264 seconds]
Ellenor has joined #osdev
xenos1984 has joined #osdev
scaleww has quit [Quit: Leaving]
X-Scale has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
gorgonical has joined #osdev
CaptainIRS has quit [Remote host closed the connection]
darkstardevx has quit [Remote host closed the connection]
darkstardevx has joined #osdev
Gooberpatrol66 has joined #osdev
netbsduser has quit [Ping timeout: 248 seconds]
netbsduser has joined #osdev
skipwich has quit [Ping timeout: 276 seconds]
arminweigl has joined #osdev
skipwich has joined #osdev
<Matt|home> o\
<gorgonical> How goes it popcorn lovers
<zid> I've never heard of popcorn used as a euphamism for obscure linux terminal emulators
<gorgonical> There are much more strained allusions to kernels coming in the future from me, don't you worry zid
<Matt|home> that's a good point
<Matt|home> what should i call my kernel
* Ermine rewrites vulkan tutorial code to C
<zid> many more, bitch
<gorgonical> The sweet spot is a reference so oblique that only about 5% of the readership could guess it without a hint. Then it's funniest
<gorgonical> zid: they are much more strained than using popcorn
<gorgonical> I said fried chicken the other day
<zid> many more strains, much more strained
<Matt|home> i think i'll go with "THE UNSINKABLE TITANIC RESURRECTED" or something, maybe the hindenburg
<Matt|home> the more i tempt fate the better
<bslsk05> ​www.youtube.com <no title>
Starfoxxes has quit [Remote host closed the connection]
<gorgonical> Idea: you base64 encode the audio for this song and then pick the first sensible english word you find in the base64
<gorgonical> that's the name of your kernel
<zid> That's my new password hash idea
<zid> We just base64 encode your password and throw away anything that isn't 0-9 A-F
Turn_Left has quit [Remote host closed the connection]
<andydude> but what if the hash is ++++++++++++===
<zid> Did I stutter
Turn_Left has joined #osdev
<GeDaMo> At least it'll be easy to remember :P
<andydude> So wait, what is popcorn again?
<zid> Corn that has been popped.
<GeDaMo> "Popcorn is a variety of corn kernel" https://en.wikipedia.org/wiki/Popcorn
<andydude> Matt|home: I'm a big fan of names which inflate the author's ego
<andydude> like MattOS, AndyOS, etc.
<geist> BSD
<gorgonical> my shitty forth is called NickForth for that reason
<andydude> libTomMath
<andydude> (^ that's actually a real package name)
<Matt|home> hell yes.
<Matt|home> by the way i don't have an ego, im just better than most people
<Matt|home> like legit, that's not egotism that's just a fact
<andydude> another option is to use a random word generator and make 6 words, and pick your favorite 2
<andydude> lol
<gorgonical> smells like correct horse again
<andydude> Introducing the aghast-manacle kernel!
<sham1> CorrectHorseBatteryStableOS
<zid> CHBOS
<andydude> I would buy it
<sham1> CHBSOS
<zid> ChbsOS is too hard to say
<gorgonical> ChubsOS
<sham1> ChungusOS
<zid> ChubOS sounds lewd
<andydude> CorrectOS sounds too grandiose
Turn_Left has quit [Remote host closed the connection]
heat__ is now known as heat
<GeDaMo> ULtimateOS
<heat> LinuxBSD
<sham1> Lindows
<sham1> Wait
<heat> call it the worst of both worlds
Turn_Left has joined #osdev
<andydude> Winix?
<heat> microshit winbad
<sham1> Michaelshoft Binbows
<zid> PedrOS
<sham1> Although Binbows of course was a nice computer sture, from what I remember seeing that youtube video about it
<sham1> store
<heat> >Producer(s)Dale Geist
<heat> dude not cool :(
m3a has quit [Ping timeout: 252 seconds]
<andydude> geist!
<sham1> I also love that Michaelsoft Binbows is actually now marked on Google Maps
m3a has joined #osdev
andydude has quit [Ping timeout: 276 seconds]
andydude has joined #osdev
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
<Ermine> i want sequel
<Ermine> MICROSHILL WINCRAP 11 WEN
<heat> microterrible winfuck eleshit is already bad enough, doesn't need a parody
<Ermine> macroterrible*
<heat> -- sent from my Fedora Linux, using my Fedora and not showering
<Ermine> no more arch?
<heat> you cannot legally use a fedora when using arch
<Ermine> hm
<gorgonical> okay so I did that base64 thing and dug up my old but capable lua libraries to do it
<gorgonical> There are a lot of nonsense words in this dictionary I used
<gorgonical> The first non-nonsense word that shows up is "koko"
<gorgonical> Other contenders are goad, juck, happy, dusk, raja, hips, punts
Turn_Left has quit [Remote host closed the connection]
Turn_Left has joined #osdev
<gorgonical> even with luajit this is slow on my laptop
<heat> goaded
alpha2023 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
alpha2023 has joined #osdev
Gooberpatrol66 has quit [Quit: Konversation terminated!]
<geist> koko the os
<geist> kokos
<geist> kokix
Left_Turn has joined #osdev
<zid> kokos instantly sued by Coca-Cola corp
<zid> brand confusion with CokeOS
Turn_Left has quit [Ping timeout: 252 seconds]
Turn_Left has joined #osdev
<gorgonical> geist: the only problem is that kokos is a common hpc framework that abstracts hardware
<gorgonical> turns out there's a lot of words in this base64 string. none so far that are longer than 5 letters though
<heat> call me when you find linux thnx
<heat> seriously, CALL ME. message won't do. i have this great business opportunity and i want to loop you in
<mjg> i'm gonna daily drive windows 2000
<mjg> fuck the haters
<zid> –)î
<mjg> there is an asterisk to that statement tho, namely i'm in fact not going to do it
<heat> you should daily drive one of those old POSIX subsystems for like a week
Left_Turn has quit [Ping timeout: 244 seconds]
<nikolar> oh yeah definitey
<mjg> old posix? do you mean SOLARIS
<heat> sadly there was never a SOLARIS subsystem
<mjg> lemme tell you how win2k won my heart: it had a nice theme
<mjg> (seriously though it did not crash every other time you look at it weird, massive upgrade over fcking 98)
<heat> knowing you oldies the "nice theme" is probably the most horrid pattern/color combination ever seen
<mjg> no
<gorgonical> I use NsCDE because I like how the old shit looks
<bslsk05> ​guidebookgallery.org: GUIdebook > Screenshots > Windows 2000 Pro
<geist> i always kinda liked CDE yeah
<mjg> very clean, some touch ups over the 9x thing
<heat> yep, horrid
<heat> how is that nice
<mjg> lol
<mjg> ok what's nice in your obok
<heat> i'm a simplicity stan
<mjg> fucking cde looks like someone pulled off a prank
<mjg> which got out of hand
<gorgonical> mjg: how do you mean lol
<mjg> how is the win2k not simple mon
<geist> gotta remember, at the time having a X based desktop environment was a pretty new thing
<mjg> show me a screenshot of what you consider simple
<heat> just good looking, aesthetic
<heat> not even particularly simple
<geist> agreed. i like mac UI
<heat> but simple enough
<mjg> you are free to be wrong
<gorgonical> classic perfection
<geist> yep
<mjg> but you don't get to shit on win2k claiming you preferf simplicity, and then link a theme which is clearly *less* simple
<heat> christ save us
<geist> though i'm a bit partial to nextstep from that era
<heat> mjg, mon it's about a nice balance simplicity and aesthetics
<mjg> ye that's the cde joke i remember
<zid> Better than windows 10
<mjg> it truly looks horrid
<heat> something too complex looks awful, something too simple looks plain
<heat> the win2k screenshot looks plain and has terrible colors, therefore awful
<geist> also gotta take it in tegh historical context
<zid> w10 you can't resize windows from the top cus the grabber is a single pixel
<mjg> probably has the same designer as the person who did gui for atari st
* geist shrugs, clearly folks just wanna piss on stuff
<heat> oh i know, but nostalgia over this kind of stuff is IMO just misguided
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
<heat> some people yearn for the 90s look on things when... ugh
<mjg> i was literally just praising windows 2000
<nikolar> What does "nostalgia is misguided" even mean
<mjg> heat: well you are too young to be nostalgic about anything
<nikolar> The whole point is that it reminds you of your past
<mjg> give it time mon
<zid> w98 ui was peak look vs function
* Ermine does nostalgia driven development
<heat> i am definitely nostalgic about things
<geist> no there's a name for being nostalgic about stuff you never experienced
<heat> none of those are ugly looking desktops
<geist> that's why i get nostalgic for 70s minicomputers
<zid> anemonoia
<zid> anemoia
<nikolar> Heh yeah geist
<geist> anemoia yeah
<heat> i actively used win xp for many years of my childhood and dood that OS looks terribad
<mjg> eye of the stock holder
<Ermine> I can defo say that win9x font rendering > nowadays linux font rendering
<mjg> heat: xp looks like shit
<zid> anemoia is when you yearn for blood you never had.
<heat> don't say that on the internet
<heat> they'll kill you
<nikolar> Lol
<geist> i personally never liked XPs telletubbies theme, and would always run it in win2k mode
<mjg> you remember the default wallpaper
<zid> oh yea, fucking, font rendering on windows, fuck me, cleartype is such ass
<geist> which looks pretty much fine
<gorgonical> xp looks like trash. xp in classic mode looks great
<zid> give me AA back pleaaase
<mjg> people found where the photo was taken and marked it on google maps
<geist> this is why i usually use on linux machines cinnamon with a pretty plain windows decorations
<mjg> then some fucking guy did a avideo how he flew there just to see it in person
<heat> vista looked dope but a little antiquated
<zid> Right well, honzuki ends in a couple of minutes
<geist> it's like win2k era simplicity, with a slightly more modern look (dropshadows, etc)
<geist> and nothing really more
<zid> rip honzuki
<Ermine> Also, there was a time for me when windows xp was widespread so Vista/7/8 looked like WOW!
<mjg> windows 7 was tolerable looks-wise
<gorgonical> geist: I used xfce4 forever and it's still the default app set I install
<heat> oh right cinnamon.. the GNOME 2 vibes right?
<zid> yea I always just use xfce4
<zid> cus it's simple and I like its terminal
<geist> at least pre-whatever gnome is nowadays
<Ermine> heat: cinnamon is more usable than gnome actually
<geist> indeed.
<Ermine> I've used it for some time
<gorgonical> I have used lxde too but I'm just used to xfce at this point
<geist> mate was gnome 2, cinnamon is gnome 3 (i think)
<zid> blackbox when
<geist> or that era of fork off
<Ermine> Then went on kde due to bugs
<heat> GNOME 40 is fine IME
<heat> or whatever release they're on now. i think they do a yearly increment?
<geist> but basically i want a titlebar with a list of windows, some plugins for stuff, allow me to put icons on the desktop, and some sort of start menu i can type into to search
<mjg> what wm are you on right now heat
<heat> kde
<Ermine> +2 each half year
<geist> ie, about win7 era i guess functionality
<gorgonical> dear god
<zid> geist: the teletubbies theme was *okay* if you set it to like, black, btw
<zid> But it was still just worse than the classic theme yea
mavhq has joined #osdev
<mjg> now kde is something i have not poked around in quite a while
<geist> modern gnome is right out broken because you can't use the desktop for icons
<mjg> i had kde2 for a time
<geist> that is a concious decision they made and screw them for it
<mjg> oh/
<mjg> where do you place icons then?
<mjg> some toolbar?
<geist> you dont
<mjg> ???
<heat> there's a central start menu thing android-like
<mjg> so how do you gui-stuff there
<geist> right. basically treats your system like android/ipad style
<mjg> 8/
<geist> like you hit some button and then it drops down this grid of apps, etc
<zid> I literally just want
<zid> w98, but with autocomplete
<heat> how have you not seen that? GNOME's like the default on ubuntu
<kazinsal> the race to make linux a desktop operating system has resulted in linux being somehow even less suitable for general-purpose desktop computing than ever before!
<Ermine> I used gnome before 40 with bunch of extensions to make it palatable. I've even believed in them and contributed some code. But then I've looked at gnome 40 and gave up
<mjg> dude first thing i did was install i3
<mjg> and that was 6 years ago
<zid> not ALEXA SEARCH, not TILES, not METRO, fucking, autocomplete and some menus
<geist> sadly it's the only supported environment at work, but a bunch of cinnamon folks keep it going as long as we can
<gorgonical> zid: basically that's what I use
<gorgonical> rofi
<heat> geist, what happens if you apt-install another one?
<mjg> no i3 gang?
<zid> I refuse to use w11 because they removed taskbar not-grouping
<zid> not sure if they ever added it back, it keeps changing
<geist> funny you say that. i turned my computer on friday and cinnamon was gone, because osme auto update purged it
<heat> do you get auto-sent a letter of termination?
<Ermine> mjg: does sway count
<geist> had to apt-get install cinnamon to get it back
<zid> at first you had to have centered entries, and they got rid of that I think
<mjg> Ermine: da
<heat> >auto update
<heat> fuck me
<geist> it's fine, they live side by side, you just choose it
<zid> also, WHERE HONZUKI WTF IT 10 PAST
<mjg> crowdstrike ceo
<geist> well, i dont own this computer, it's works
<heat> i guess so
<geist> it's just how it is, welcome to employment
<geist> OTOH it has 256GB ram and 128 threads, so it's kinda nice
<mjg> :p
<mjg> red hat allowed folks to administer their own laptops
<heat> yeah it's just that auto uninstalling packages is a little weird
<mjg> you did not even have to use fedora or rhel
<mjg> but then again you were mostly on your own
<heat> whoever uses linux knows how to admin their system, hopefully
<geist> heat: actually it was not exactly that. turned out it was something like it auto installed somethig that collided with cinnamon
<mjg> if anything hit the fan and you wer not using the standard system
<geist> and caused apt to remove it because reasons
<heat> ah ok
<mjg> so that's ubuntu based?
<heat> typical apt stuff
<heat> debian
<mjg> can you uname -a
<geist> debian
<mjg> or is that secret
<Ermine> Btw, I forget to turn on vulkan renderer for sway on my laptop
<geist> probably secret
<Ermine> let's do it
<mjg> blink if it's 6.1
<heat> i'd be surprised if its anything other than more or less latest debian
<geist> it's nothing fancy, but shouldn't be posting the exact version of the exact kernel on the fleet of desktops at work, etc
<heat> yeah
<mjg> i'm not asking for real exact version
<kazinsal> we're a rhel shop at work, retraining my brain from the idiosyncrasies of debian-based platforms to rhel-based ones has been Fun
<geist> it's newer than 6.1
<mjg> i would expect it is newer than debian tho
<mjg> probably 6.8
<heat> why would it be newer than debian?
<mjg> drivers?
<mjg> you do realize debian is old af
<mjg> even new debian
<heat> i'd hope they backport shit
<heat> they = debian or ubuntu or some shit
<mjg> ubuntu has a base "stable" kernel and "hardware enablement kernel"
<mjg> aka a much higher release
<heat> i have little idea because i use ARCH LINUX
<heat> btw
<heat> 6.10.2
<geist> https://en.wikipedia.org/wiki/GLinux does't really say much
<mjg> i expect the g folk roll with custom "hardware enablement"
<mjg> well i suspect the kernel is around the same one used for chromeos
<geist> doesn't have to be, that's a completely different part of the company
<kazinsal> completely different "market segment" too
<kazinsal> chromeos is for chromebooks etc. glinux is for workstations
<heat> gopenbsd
<mjg> validating stability of very different kernel versions for desktop usage by teams which don't cooperate is very corporate
<heat> those teams are all completely different with different objectives
<mjg> ye, like finding a stable kernel
<heat> chromeos runs random patches, android runs random patches
<mjg> i don't expect overlap with android
<geist> mjg digs himself into a deeper whole of not knowing how the real world works
<geist> hole even
<mjg> how does it work geist
<geist> can't tell ya!
<geist> trade secret
<heat> OH is that stashed in your uname -a then?
goliath has quit [Quit: SIGSEGV]
<geist> and that is part of the 'how the world works'. it's all secret and weird and cobbled together
<gorgonical> why is it so goddamn hot today
<heat> i'm in town
<gorgonical> go away
<mjg> geist: is it trade secret how the world works
<mjg> what's your trade
<geist> it is
* mjg burps
<mjg> if these business units don't cooperate they are chasing and fixing the same bugs separately
<mjg> which again would be very corporate
<geist> bingo.
<geist> working together is very corporate, not working together is very corporate
<geist> and everything in between
<mjg> i already noted this would be very corporate mofo
<heat> sitting in meetings is extra corporate
<mjg> anyhow
<mjg> this reminds me of hiring a person only to have them fired the first day
<mjg> because the team is getting sacked
<mjg> but nobody informed hr
<geist> yah having silly discussions in meetings is very corporate
<mjg> :d
<geist> but as kazinsal pointed out the neesd of different linux kernels for the different use cases is very very different
<heat> we should circle back on this next week, wdyt?
<geist> and on different time scales, on different hardware
<heat> maybe get some of the stakeholders for different products in?
<geist> heat: action item
* geist puts it on next quarter's OKRs
<kazinsal> I continue to be quite glad that I've left the private sector
<bslsk05> ​goomics.net: Goomics 370
<geist> pretty much. but even if everything is wide open, it's too much information when it's that big
<geist> easy to miss the details if some other team fixed it already
<gorgonical> the different needs thing is exactly the reason I can get a phd doing kernel development
<geist> word.
<geist> exactky, different needs is why you dont end up with a monoculture of one thing
<heat> operating systems are a solved problem, use linux lol
<geist> which is IMO bad
<gorgonical> heat: lol
* geist smacks heat
<heat> ouch
<mjg> linux > fuchsia
<gorgonical> tell that to the security team
<gorgonical> "you want us to put HOW MANY lines of code in the tcb??"
<mjg> seucrity team is all jerkoffs
<heat> s/linux/openbsd/
<bslsk05> ​<heat*> operating systems are a solved problem, use openbsd lol
<heat> better?
<mjg> windows 95 users needed the system to keep crashing
<mjg> and ms went above and beyond
* mjg is waiting for kazinsal to claim 9x was rock solid
<kazinsal> 98se was decent. rest of 'em weren't so hot
<Ermine> 95 doesn't like vmware's sb16 emulation
<Ermine> though all other 9x'en sound got broken on recent vmware versions
<sham1> WINDOWS ME
<Ermine> I've got none of them working in qemu btw
<gorgonical> I would also like to report that last week I finally got my risc-v core to complete r-type instructions. I had to really commit some crimes against chisel
<heat> sham1, i also like windows but why would you want to get windows'd?
<Ermine> windows me too
<heat> woah buncha windows fetishists i see
<Ermine> horny windows users be like
<Ermine> heat: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/rs6000/rs6000-call.cc;h=a039ff75f3c9c07e00a150b427bb6d75f07b02f7;hb=HEAD#l635
<bslsk05> ​gcc.gnu.org: gcc.gnu.org Git - gcc.git/blob - gcc/config/rs6000/rs6000-call.cc
Left_Turn has joined #osdev
karenthedorf has joined #osdev
Turn_Left has quit [Ping timeout: 244 seconds]
<sham1> I'm sure it does
<sham1> I'm also sure that whoever wrote that probably didn't even think about that
<heat> why would you ever want it to escape?
<heat> > Initialize a variable CUM
<Ermine> cyberpunk 2077 music kicks in
<mcrod> dumb question
<zid> dumb answer
<mcrod> you are a server, right? when a client connects, the server accepts your connection via accept(), which gives you their socket
<mcrod> now let's say that you have 10 people on this server
<mcrod> we'll say that these users are a list of some `struct user_t`
<zid> It extracts the first connection request on the queue of pending connections for the listening socket
<mcrod> user_t needs to know what file descriptor it is assigned
karenthedorf has quit [Ping timeout: 265 seconds]
<zid> (listen's backlog param has the length of said queue)
<heat> i would kill you for struct user_t, if that's the question
karenthedorf has joined #osdev
<nikolar> gorgonical, is that an FPGA core
<mcrod> wait, I think I have just answered my own question in my head
<heat> _t typedefs rae also undefined per POSIX and maybe ISO C
<zid> _t is evil
<mcrod> heat god dammit i don't write _t in real life
<zid> ofc it's a type
<zid> what the fuck else is it
<heat> what was the question
<zid> no idea
<zid> It's just an list of incoming connection infoz, and you generate a number when they accept it, gg
<mcrod> ok, it still applies, never mind, but in a much less crazy way than I had thought in my head
<mcrod> basically, a user is assigned a file descriptor, but if I had to shoot something off to a user with that specific FD, I can't imagine a linear search is great for that
<zid> kernel gets a little "this socketinfo pairs to this internal fd" mapping in the NETWORK STACK
<zid> mcrod: How are you dealing with multiple programs existing all fd 0 1 and 2?
<zid> all using*
<mcrod> i have no idea what you're saying
<heat> ok the real question is: why would you send _to an fd_?
<zid> Was trying to figure out how you were architectred such that this is a question/problem
<mcrod> heat: well, I want to send to a user, and you send() to an fd
<zid> I could *make* it a problem, I think, but I'd have to *try* to do it
<mcrod> the user is fundamentally at the network level merely a file descriptor
<heat> you send to a user (user id?), that user has an id... you look up the id in your hash table or radix tree or even array (if the userbase is small enough)
<geist> basically
<mcrod> i'll give a more concrete example
<mcrod> yes, that's basically my thought
<geist> poll/select style interfaces that let you associate a pointer sized cookie with a connection are nice
<mcrod> take an IRC server for example: you connect, the server talks to you, but you're not a USER
<geist> because they then let you directly reference your user_t
<zid> Side note: I'm so in love with that the FDs are sequential from the user side, just lets you do pointer swapping for accept/close
<mcrod> you are a *thing* that isn't a user, you don't have an ID
<heat> you're a client
<mcrod> yes
<mcrod> in the case of IRC you're not a user until you've sent your nick and user commands
<mcrod> now, in reality, i think you would be a user_t from the getgo
<heat> so maybe your client holds the fd, and the user has a client pointer. or maybe the user has a client embedded and you create a fake anonymous user while the client doesn't log in
<zid> wait, we've been userspace this entire time?
<mcrod> yes :p
<geist> zid: keep up
<zid> oh.
<zid> geist: I took an early assumption and it betrayed me, rip
<zid> this being osdev
<mcrod> hm, ok
<geist> we all know about assumptions
<zid> The way you manage sockets is you do the swap trick on an array of fds on connect/disconnect, and for the 'software' part where /msg geist turns into send(74, you need a hash
<zid> or something, back to fd
<heat> but, y'know, i still don't really understand your question. are you asking about algorithms to find specific ids?
<mcrod> the algorithms aren't the problem, I know a hash table, tree etc is the right solution for any of that
<zid> int user_to_fd(const char *user) -> user_to_fd("geist") -> 74
<mcrod> the problem is I don't know how to handle a connection that doesn't have any identifying information, but I have to handle it
<zid> what issue is that causing
<heat> oh you'll just need to look it up
<zid> Why do you need to be able to deal with that
<zid> that should inform your answer directly, surely
<mcrod> because that's IRC
<zid> No?
<\Test_User> can you just store the fd in the aforementioned user_t struct
<mcrod> \Test_User that's my initial plan, yes
<heat> i don't know if epoll or kqueue can let you store a cookie pointer
<zid> struct user_t { int fd; char *name, *user, ..; }; those fields are NULL other than fd (and addrinfo)
<zid> and aren't used until they're used
<mcrod> right
<zid> what *issue* is there, sending the MOTD by fd, in the part of the code where the motd is sent?
<mcrod> so there's *no name*, *no user*, no *hashable entity yet*
<zid> (actually motd comes slightly after, but whatever)
<zid> Right, but what *issue* does that cause?
<heat> but the simple af solution is to have e.g a hash table mapping user id -> user struct and then a somewhat-reverse fd -> user struct
<zid> { fd = accept(); p = new_user(fd); send(p, "Please send username back"); p->state = WAITING_FOR_USER; }
<zid> send(p->fd)
<mcrod> heat there is no user id yet at this stage, is my point
<heat> you don't need one
<zid> then on select() -> read(), case WAITING_FOR_USER: p->user = strdup(read()); break;
<zid> when do you *ever* need this info that you don't have
<mcrod> I guess I'm not making it too clear
<mcrod> either that or I'm not totally following
<heat> if you're not logged in, no one can send you messages. you (the server) might need to send shit back to them, but there you can use the somewhat-reverse fd -> user struct table
<zid> If you're doing "Message every connected socket" then you're going by fd not username anyway, so I still can't think of a single time you'd need to send a message *by name* to a 'just a socket'
<heat> as such you'd be inserted into the second hash table, but not the first
<heat> this is assuming you're wanting to do this whole process in a WEBSCALE totally non-blocking way
<mcrod> ok, that was my next idea
<mcrod> two hash tables
<zid> mcrod: lmk if you come up with an answer to "Why do you need their name before they've sent it"
<mcrod> pretty sure we've established the problem
<mcrod> it is: "i can't do user_map["name"]" without knowing the name
<zid> why do you need to do that
<zid> (there is no need to do that for an IRC server)
<mcrod> there's no need to look someone up?
<zid> You can't message people who haven't logged in
<mcrod> *i know that*
<zid> so there's both no *way* to do it, *and* no *reason* to do it
<zid> so it solves itself by being moot
<zid> You said "There's no need?" I said "No" and you said "I know that!"
<mcrod> the question was: given `n` incoming connections that have no identifying information other than a file descriptor, what is the most efficient way to talk and manage state for those connections, because user_map[fd] doesn't, and wouldn't work
<zid> You do not need to ever do user_map[fd]
<zid> So it's a non-problem
<mcrod> bullshit
<zid> They are not users yet, they are *sockets*
<mcrod> that's right
<mcrod> they are sockets.
<zid> You cannot message a 'socket', only a user, so there is no need to message them!
<zid> /msg 378 does not message anybody
<mcrod> i have to send() to the socket, and recv from them
<zid> yes, using the socket
<zid> you will have the socket because select() or poll() or whatever will tell you it
<zid> or accept()
<\Test_User> so, your problem is finding which user data you need to modify based on which fd you're trying to recv from?
<mcrod> thank god
<mcrod> yes
<zid> You don't need to reverse lookup from select(), it *gives you the fd*, any info you need from there can be *forward* lookuped
<zid> <zid> The way you manage sockets is you do the swap trick on an array of fds on connect/disconnect
<mcrod> the connection has ZERO INFORMATION other than the FD at this time, but there could be `n` number of those at once, and I don't know how to handle that other than some bullshit linear search
<zid> array
<mcrod> `n` negates that
<mcrod> well, not really
<mcrod> realloc I guess
<zid> struct user *users[FD_MAX]; int total;
<heat> two hashtables
<heat> create as many hashtables as you'd like
<heat> make hashtables out of hashtables
<zid> doesn't beej have a select server on it
<mcrod> it's got nothing to do with select
<heat> note that bullshit linear search isn't all bullshit if the N is small and contained
<zid> It's also not linear, it's O(1)
<mcrod> N wouldn't be small, it couldn't be
<zid> if you do it the way we always do it
<zid> oh wait do I have my DIABLOMUD sksleton
<heat> how large is it? are we talking modern CPUs here?
heat has quit [Remote host closed the connection]
<mcrod> yes
<zid> you can always do a dynamic array
heat has joined #osdev
<zid> if you REALLY want
<zid> I'd honestly just do a static array though
<mcrod> I literally cannot know ahead of time how many "transient" users could fire off at once, or the solution is to yes, not care, saying "processing too many transient users"
<zid> should I just make this
<zid> I can't find an easy example for the swap trick
<zid> Anyway, struct user_t *users[MAX]; int total; connect -> users[fd] = new_user(fd); disconnect: free(users[fd]); is absolutely plenty for the forward lookup, but you can dynamic array it if you want to, not sure why you'd need a hash table for a linearly increasing small integer
<acidx> fwiw: the lwan web server allocates an array that's as large as the number of file descriptors for the process that getrlimit() returns, and uses that to figure out which file descriptor corresponds to which connection struct
<zid> yea, so does most software that uses select/poll, it's just easiest
<zid> and you MIGHT need that much memory anyway, if that many clients connect
<zid> so it's just a pre-allocation
<zid> doesn't 'waste' any memory
<acidx> if you want to curb the memory allocation you can always setrlimit()
<mcrod> that sounds right but I wasn't sure if it was bullshit
<heat> hah thats bound to blow the fuck up on weird distros
<zid> I actually use FD_MAX or whatever, the constant from select()
<acidx> heat: how so?
<zid> FDSET_MAX idk
<heat> fwiw i don't _think_ any of them are setting the fd limit any higher than 1024 because of select
<zid> What's the point of having a million fd's in your ulimit, if you're not willing to allocate the 8MB of memory to have that many pointers
netbsduser has quit [Ping timeout: 276 seconds]
<heat> however it's a very popular trend nowadays to completely blow open the traditional limits
<zid> If you can't handle an 8MB .bss, don't set your fd limit to a million, ez
<zid> user error
<zid> I found out recently that linux internally caps pids to like, 4 million, you can't ulimit higher
Left_Turn has quit [Read error: Connection reset by peer]
dzwdz has quit [Remote host closed the connection]
dzwdz has joined #osdev