<heat>
i am on systems not vulnerable to maple syroup
<zid>
freebsd?
<heat>
linux 2.4
<mjg>
openbsd is the o in OG
<mjg>
2.4 is newfag kernel
<zid>
ah fuck I don't have my map mode hotkeys :(
<zid>
I don't even know what they were, I just instinctively hit q and w and stuff for things
<mjg>
i watched a video of some guy reviewing linux on a desktop
<mjg>
turns out it sucks if you try to use it like a normie
<mjg>
and i thought xorg mostly autoconfig itself is the promisedl and
<geist>
XF86Config
<geist>
or was it Xconfigurator?
<geist>
back in the day!
Matt|home has quit [Quit: Leaving]
<zid>
xf86config was the 90s one I ran at least
<geist>
yeah asked you a whole series of quesrtions and ran a test
<geist>
i remember running through that countless times
<zid>
yea was easier to answer questions than edit the config yourself at least
<geist>
yep
<zid>
I did do my share of editing the config though
<mjg>
the bit i like the most about the f-ing xfree86 project is how it died over night
<mjg>
curious what geezer personel did not transition to xorg and consequently allowed autoconfig to work
<geist>
huh reading the history of xfree86 and didn't realize it shot itself in the foot
<geist>
also honestly didn't pay attentoin to the general switch to x.org
<geist>
ah i see. xorg was just a fork of xfree86 before the license thing
<mjg>
XFree86 runs primarily on UNIX® and UNIX-like operating systems like Linux, all of the BSD variants, Sun Solaris both native 32 and 64 bit support, Solaris x86, Mac OS X (via Darwin) as well as other platforms like OS/2 and Cygwin.
<mjg>
tell me the project is dead without saying it is dead
<heat>
even xorg is dead
<geist>
well, it still runs on them, just not new versions
<mjg>
> Move CloseWellKnownConnections() calls into OsCleanup(TRUE) calls.
<klange>
The last release of xfree86 was in 2008. X.org was a fork that all development shifted to...
<mjg>
are they friends with windows devs
<heat>
The last remaining operating system distribution to use it was NetBSD,[4] which shipped some platforms with 4.5.0 by default until removing it as obsolete in 2015
<mjg>
64. Import X.Org fixes for CVE-2008-1377, CVE-2008-1379, CVE-2008-2360 and
<mjg>
CVE-2008-2361 security advisories.
<mjg>
hue
<klange>
It's like OpenOffice and LibreOffice.
<klange>
Except inverted .org usage
<mjg>
oh?
<mjg>
i have no clue what's going on with these
<heat>
what's the google docs of this whole situation?
<heat>
please, i beg you, we need a good alternative
<heat>
>inb4 wayland
<zid>
lotus notes is the Xouvert
<klange>
The Google Docs of this situation is only using webapps and not caring about the host windowing system you run the browser on
<heat>
sanest solution
<heat>
hmm, i wonder if chromium supports DRM directly?
<zid>
heat: I started an muscovy game, not going to go super hard though, just going to slowly eat people as and when I can I think
<zid>
in other news, it's 1448 and novgorod is half dead, got a nice +2 ducats/mo on the trade node out of it, advisers time :p
<heat>
i killed novgorod very early too
<heat>
the annoying bit is that denmark swept in and took the bits of finland i wanted
<zid>
I'm hoping sweden goes disloya
<zid>
so I can support independence
<heat>
i need the army comp spreadsheet
<zid>
flank with horses
<zid>
rest infantry
<heat>
i've been half-assing it with 10-4-2 (inf art cav)
<zid>
artillery is as wide as your stack but you won't be able to afford it
<heat>
i'm not exactly spamming inf atm
<zid>
2 cav should be 4 cav in early game, by 1600 you can probably just ignore it tbh, 2 is fine
<heat>
because that's really depressing and i've actually invested in troop quality
<zid>
If you wanna hyper optimize you run same infantry as them + 4 horses, so you get maximum flank
<zid>
rather than having to run inf vs inf in every slot
<zid>
quality * their national quantity idea is fine
<zid>
quantity also fine, quantity squared!
<heat>
i did economic, quality, offensive, humanist
<zid>
offensive is an odd pick
<zid>
it's great in a WC because of the siege speed bonus
<zid>
defensive is the better group overall though
<zid>
liberaction act from offensive + humanist is good though
<zid>
The amount of radiation you get from eating a banana
<zid>
they have ELEMENTS in them :o
<gog>
oh that's right
<gog>
i love radiation
<gog>
the more ionizing the better
<zid>
It's pretty... rad
<gog>
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
<mjg>
eating bananas is bananas
<mjg>
change my mind
<zid>
Did you read the smallprint btw
<GeDaMo>
On the bananas? :|
<zid>
It usually says Dolé but I fixed it
gildasio has quit [Remote host closed the connection]
gildasio has joined #osdev
lainon has joined #osdev
<geist>
hello fronds
<heat>
hello ghost
<heat>
what is up
<gog>
meow
<heat>
gog have you acquired a copy of the famous video game europa universalis IV
<gog>
i have enough map simulators
<heat>
no you don't
<heat>
there's no limit to map games
<gog>
i'm saving myself for cities skylines 2
ih8win8 has joined #osdev
<zid>
That's an odd thing to give your virginity to
<heat>
for the next paradox game they should call DLCs service packs
<sham1>
And not give them actual names, just "service pack 1", "service pack 2" and so on
<heat>
absolutely
<heat>
they're all needed anyway
<ih8win8>
I have a question about USB. If I'm understanding this right, to set the address of a USB device, I send an 8-byte SETUP packet (00 05 0002 0000 0000) to set the device's address to 2. However, looking at Qemu's source code, it only calls usb_device_handle_control (which ends up setting the address) if the direction bit is 1 (meaning from device to host). Why wouldn't it call usb_device_handle_control for a host to device packet?
<bslsk05>
github.com: qemu/hw/usb/core.c at master · qemu/qemu · GitHub
<ih8win8>
oh, wait, that just handles the token packet, I think. When it receives the data packet, it shoud call usb_device_handle_control.
<geist>
yeah iirc there's a weird part there where you have to complete the transaction using the old address
<geist>
and then the next setup packet uses the new one
<geist>
it's kinda a weird edge of the protocol
<geist>
some device controllers have a assist for this where they let you latch the new address on one transaction later
<geist>
it's more like 'set your address after this is finished'
<geist>
or 'new transfers after this one should only respond to this address'
<heat>
i dont think i'll ever understand how usb works
<heat>
PCI is best!!!
<geist>
looking at a usb trace is worth a thousand words
<sham1>
So how many traces would that make the USB spec
<geist>
at least for old usb, i never fully grokked usb 3, but then i dont have a bus analyser that can deal with those
<geist>
sham1: i *knew* someone would instantly say that, you win the prize!
* geist
slaps sham1 about with wet trout
* sham1
chomps trouty
<heat>
geist i bet there's a way to get a boot pcap for usb in-kernel
<geist>
yup
<heat>
you can already get one at runtime, you just need to enable it with boot args or something i guess
<geist>
wireshark i think maybe has usb capture now?
<heat>
yeah
<geist>
anyway, it's not too weird, it's just very low level. it's like looking at PCI-e packets
slidercrank has joined #osdev
<geist>
so it looks more complicated than it is, but once you grok how the individual packets make up a larger transaction it's fairly straightforward
<geist>
and good bus analyzer software can reassemble transfers
<geist>
a lot of the complexity is the non bidirectional nature of usb 1/2. there's lots of shared bus going on where one side starts a transaction and then releases the data pins and within N clock cycles the other side puts the response on teh bus, etc
<geist>
so until you grok that it's not really obvious which end is sending what
<ih8win8>
hmm not sure if I have to manually send token packets, or if the controller is supposed to do that automatically.
<geist>
ih8win8: oh the host end i assume? what sort of controller are you using?
<ih8win8>
dwc2 on raspberry pi
<ih8win8>
in host mode, of course
<geist>
ah okay, was gonna say there are various levels of host controller, xhci on the high end all the way down to the dwc2, which is about as bad as it gets
<heat>
hahahahaha
<geist>
you have to do *everything* manually. it's one level removed from raw bit banging
<ih8win8>
I hear uhci is pretty bad, too.
<geist>
hell, i think you have to schedule SOF packets manually
<geist>
basically dwc2 was a device controller that got extended to also be a host controller, and it's really too low level for that
<geist>
sure, but UHCI is also like 25 years old. modern host controllers do most of the heavy lifting for you
<geist>
or at least the middle level lifting, you schedule transactions and they deal with the details
<ih8win8>
ugh, I'm not looking forward to dealing with scheduling and concurrency issues.
<geist>
yeah honestly unles syou really really need to, dont bother with dwc2 ost controller, that's just a whole pile of pain
<ih8win8>
It's not like the pi has any alternative.
<geist>
sure it does, pi4 has xhci
<ih8win8>
yeah, but that's pi 4.
<geist>
okey dokey
<ih8win8>
I'm dealing with 2 and 3.
<geist>
well, there ya go
<geist>
anyway, yes you'll almost certainly have to manually do all of the token frame stuff ourself
<heat>
what exactly does dw do? just budget controller chips for shit?
<ih8win8>
ok, I'll try.
<heat>
i remember going thru the fuchsia pci stuff and seeing some hacks for a fucked up PCI controller from them too I think
<geist>
not chips, IP. you buy designware 'blocks' to integrate into your designs
<ih8win8>
Synopsis is the company that makes it. Not sure what DesignWare is, tbh.
<geist>
and they're super cheap
<geist>
designware/synopsis are the same company now. i think part of cadence?
<geist>
ah, no synopsys has a product line called designware
<ih8win8>
I'm guessing that's why it was chosen for the Pi, because it's cheap.
<geist>
right, well more importantly broadcomm picked it, and then it's cheap because it's cheap
<heat>
the raspberry pi is a high quality system
<geist>
like i said pi4 helps immensely, but pi1-3 is using late 2000s era broadcomm SOCs
<geist>
which were generally pretty bad back then. things got a lot better in the late 2010s
<geist>
dwc3 is what you see a lot nowadays, which is at least a proper XHCI controller
<heat>
is it possible to get a serious enough ARM board that is not a server board? and thus does not get you to declare bankrupcy
<geist>
and also has a device mode (since XHCI is usually host controller)
<geist>
depends on what you mean by serious enough
<heat>
like a mid point between the rpi3 and an ampere server with 500000 cpu cores
<geist>
there are *tons* of arm boards out there, most are better than PI, but PI is cheap and ubiquitious (when you can find them)
<heat>
you know, a CPU beefier than an A57 and stuff
<geist>
sure. pi4 is a big jump forward
<geist>
it's i'd say 2-3x faster than a pi3
<geist>
khadas has some decent boards
<geist>
you can get some 8 core a72s or so
<heat>
A72 is still really crap isn't it?
<heat>
like your avg smartphone will be beefier than that right?
<geist>
of course, but A72 is a huge jump oer the A53 class stuff
<geist>
since A72 is properly OOO superscalar
<geist>
really A7x is a line of marginally better than the previous OOO superscalar designs
<geist>
A72 is just the first
<geist>
up through A78
<geist>
but A72 is pretty decent, like say haswell class
<heat>
my 2020 midrange phone has a A77
<geist>
sure. high end cores go in phones
<geist>
look, you cant get what you want, i'm trying to give you real options
<geist>
but if you just wanna bitch about it, i can just stop
<heat>
but it's funny how it's literally 2xA77 and 6xA53
<heat>
yeah i know
<heat>
i'm just looking at them cpus
<geist>
i've had this conversation countless times here, where someone whines about this or that, i try to give them real options, but they just want to whine
<heat>
oh im not whining
<geist>
honestly if you ant a fast ARM machine, get a mac
<geist>
get a low end mac mini. it's lightyears ahead of all of those cores you just called out
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<heat>
i do whine that my rpi's A53 sucks but it was also 15 bucks so i can't get upset
<geist>
and like i said, snag a rpi4, it's much better
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
<geist>
a rpi4 with 8GB is a fairly proper linux machine
<heat>
i'd love for there to be a mid tier fairly-ok-desktop-or-laptop range
<geist>
mac mini
<heat>
yeah i guess so
<geist>
get one used, folks are probably moving on to M2 mac minis now and dumping their M1
<geist>
but really at the end of the day you forget the ISA.
<heat>
oh yeah sure, i'm not really talking about usability, rather just nerd stuff
<heat>
just something cool to poke that could also be fast
<geist>
right you could direct boot on an M1 nowadays
<geist>
honestly when poking at things, not fast is sort of more interesting to me
<geist>
like, doing raw bringup, bcause now whatever you do optimization wise, etc *matters*
<geist>
and it's not just infinitely fast
<heat>
my rpi struggles real hard doing simple UNIX shit like ./configure
<heat>
which yeah, doesn't matter on bringup, matters if you want to do more than that
<heat>
(I do kinda wonder if the sd card is to blame, but tmpfs hasn't really helped, and the cpu usage looks high enough)
<geist>
yeah i've actually built GCC and whatnot on the rpi4
<geist>
and yes sd card matters a *lot*
<geist>
i've actually found on a rpi4 you might get better results putting whatever you're doing on an external USB SSD, or even NFS
<geist>
but rpi3 has shit usb and ethernet, so probably doens't help
<heat>
my rpi does not even have ethernet :v
<geist>
rpi4 properly has a real built in eth mac, so can do 1gbe fine, and USB is on the other side of PCI
smko has quit [Ping timeout: 245 seconds]
<heat>
is a gcc build on the 4 tolerable?
<geist>
sure, i mean it works, just takes some time
<geist>
but time is like 30 minutes or so. but it only has 4 cores, which is the real bottleneck
<heat>
oh that's ok
<geist>
basically it's as fast as a low end core i3 from like 2015
<heat>
really decent perf
<heat>
your storage probably ends up more expensive than the board itself :D
<geist>
i just dont get too fixated on the speed, because it uses like a watt
<geist>
so you get good performance for what your'e doing
<geist>
whereas right next to it i have a desktop with a 1200W power supply
<heat>
yeah
<heat>
like honestly 30 minutes is super great
<heat>
i was expecting worse
<geist>
if i had 1200 pi4s that would probably in aggregate be more horespower: 4800 cores with 9.6TB ram
<geist>
i dunno i made that up, it's probalby longer, but it's in that realm
<geist>
like start the build, come back a bit later, it's done. not like wait 5 days while it's swaps
<heat>
do you think those arm chromebooks could make for good boards too?
<geist>
probably not. a lot of those are 32bit
<geist>
well, you'd want at least a armv8 one
<geist>
i had for a whie a cheapo samsung one which was an a15. was terrible
<geist>
but i hadn't paied attention to what the later ones were, probably were qualcomm based, which means they'd be generally a nightmare to fiddle with
vdamewood has quit [Read error: Connection reset by peer]
<geist>
anything qualcomm based just stay away from, not worth pulling your hair out over
simpl_e has quit [Remote host closed the connection]
vdamewood has joined #osdev
<heat>
why?
<geist>
no docs, very complicated booting process, no docs
heat has quit [Quit: Client closed]
<geist>
everything is hypoer overcomplicated with anything they do
heat has joined #osdev
<geist>
anyway, going to do some work
<heat>
you mean linux-code-as-docs? sgtm
nuvls has joined #osdev
<heat>
find the passion of putting magic values in magic registers with legally dubious GPLv2 code
simpl_e has joined #osdev
<heat>
i looked at some of the exynos code and i was surprised to see they have cute kernel protections
<heat>
probably with hypervisor crap
<mjg>
nah if code is complicated there has to be a decent reason for it
<mjg>
amirite
smko has joined #osdev
<heat>
afaik the crap SoC code really is crap and uninteresting, basically just write magic vals to the magic thing
<heat>
it may be that you're running under a hypervisor that actually does the thing you wanted to do
<heat>
x86 platform code really is scary and complex though, for a variety of reasons
<heat>
including {cheap labour, complex problem, legacy code being shared for 2 decades and 5 DDR generations}
<mjg>
no no old stuff == good
<mjg>
esp. if widespread
heat has quit [Quit: Client closed]
<ih8win8>
32-bit and 64-bit x86 isn't too bad.
<ih8win8>
16-bit segmented mode is awful.
<zid>
he said platform code though
<zid>
and I don't doubt him
gareppa has quit [Quit: WeeChat 3.8]
heat has joined #osdev
dude12312414 has joined #osdev
<heat>
i dont get this
<heat>
"turn off my screen" seems to imply some sort of low power mode for a bunch of devices
<heat>
even if it's not an actual sleep mode...
<heat>
typical micro$hit winblowz
<bnchs>
heat: micro$oft managed to turn computers into phones
<heat>
heresy
<mjg>
referring the ms as m$ is very edgy
<mjg>
i was doing that in high school
<heat>
FreeB$D
<bnchs>
heat: i meant phones that aren't actually phones
<heat>
the F in FreeBSD means financial power
<bnchs>
but rather a phone that can't phone, and just wastes battery and bandwidth phoning M$
<mjg>
careful shitting on windows
<mjg>
there is someone on the channel who thinks it is great, as proven by big installation base
<bnchs>
big installation base?
<bnchs>
more like obese
<geist>
well, shitting on things is not what we're here for
<geist>
or at least i'd rahter us not shit on things for childish reasons
<mjg>
i distinctly rmeember you kept shitting on something
<geist>
sure, i think there's a bit of a different, and less childish
<mjg>
fwiw i'm all for ranting, provided there is some substance to it
<mjg>
and not just being pissed at a thing not being what yo uwanted it to be
<geist>
i guess, my only takeaway is we're also trying to be nice for newbies and wahtnot
<geist>
and if we go too far it tends to push people away
<geist>
so have to temper it a bit
<geist>
i think we have a balance, just nice to try to maintain the balance is all
<mjg>
#truosdev
<geist>
i guess this is one place where discord is nicer because you can just have an #ranting channel that you direct folks to
<geist>
since we dont, we have to be able to strike a balance between on top and off topic and silliness and whatnot
<mjg>
one could create #osdev-rant or #osdev-offtopic or whatever and tlel people to fuck around over there
<mjg>
it is not unheard of
<geist>
i'v been sitting on #osdev-offtopic for months, but there's ome bot that's holding it
<mjg>
also note most of traffic is people not even saying anything osdev
<geist>
that keeps me from getting ops
<geist>
mjg: sure but that's also when i wasn't paying attention :)
<geist>
geist cop is back!
<geist>
stay in line kiddoes or you'll spend a night in the tank
<mjg>
#not-discord-osdev
<mjg>
how's that
<mjg>
#osdev-rant is free
<mjg>
:]
<mjg>
lol #osdev-social is not
<geist>
there used to be a secret osdev lizard council channel
<geist>
where folks would be trash talked
smko has quit [Quit: Lost terminal]
<mjg>
dude a clique talking shit about other people from the group is human behavior 101
<geist>
but it was mostly when we had they-who-shall-not-be-named around
<mjg>
if you are not part of a clique, you are part of the joke
<geist>
indeed. the fact that i dont know of any such channel means it probably exists and i'm just not invited
<geist>
so it goes.
<mjg>
there is no inner circle geist
<geist>
says the inner circle
* mjg
is only saying that because he is in the inner circle
* mjg
is however a part of a clique $elsewhere
<geist>
so complaint of the day: i started a build, went away to take a shower/eat/etc, came back, build had stopped because i forgot to start something in the background
<geist>
hate that, blew 30 minutes of building
<geist>
and just this one time i didn't wait for the build to start before walking away, whcih iusually do for precisely this reason
<mjg>
personally i "liked" corporate cliques
<geist>
whatcha mean?
<geist>
ripping on MSFT etc?
<mjg>
great proof that capitalism does *not* weed out companies which waste money
<mjg>
no, people engaging in organisational jockeying as a team effort
<geist>
oh i see what you mean
<mjg>
good luck pointing out a project is utter dogshit
<mjg>
johny jackass needs his promotion
<mjg>
so tony twat is going to "defend" the code by handwaving
<heat>
i like how my ironic early 2000s shitting on micro$hit wingarbage led to this
<geist>
microslot winblows heat
<geist>
next mjg will tell us about slum slowaris
<mjg>
macroshaft lossdows
<mjg>
sus microsystems can do nothing wrong mate
<mjg>
... cause they dead
<heat>
SUS
<geist>
OR ARE THEY
<heat>
sus macroshitstems
<mjg>
intentionally bad machines
<heat>
u were shitting on windows but this is actually pretty good
<heat>
it works
<mjg>
OH
<heat>
and that's more than i can say for linux
* mjg
unfriends heat on facebook
<heat>
>facebook
<heat>
boomer behavior
* heat
unfollows mjg on tiktok
<zid>
freebsd is a sort of speculative biology project, can people survive with no useful software?
<mjg>
but ed is on freebsd
<mjg>
what more do you want
<sham1>
ED IS THE STANDARD EDITOR
<heat>
i want microsoft wordump
<mjg>
microsoft excess
<geist>
bloatpad
* mjg
can't help but note how a talk on keeping the channel on topic got off topic
<heat>
this is very on topic
<heat>
as i was saying, windows is actually ok
<heat>
i don't know if it scales for 100 cpus but it scales for normal people
<heat>
and you know, usually does things ok
<geist>
it got a bit more functional for me when WSL2 got pretty good and the shell started coming with a bunch of things i actually use
<mjg>
you sound like a solaris defender
<geist>
ssh, scp, etc
<heat>
yeah ssh is very useful
<heat>
even though i don't really dev on windows
<heat>
for sanity reasons
<geist>
yeah but using it to ssh into other things without needing a dedicated app feels very linuxy and i like it
<geist>
or at least it's in line with what i do on linux and mac all the time. open terminal, ssh
<heat>
i really like the new centered start menu
<heat>
deal with it losers
<mjg>
does windows have virtual desktops now? or however they may call it
<heat>
yeah since 10
<geist>
i kinda dont care, because i only ever use windows key to bringup a search box
<geist>
or put stuff i run on the desktop
<geist>
yeah, it's a bit clunkier to move things between desktops, but it works
<geist>
win11 kinda broke it for me, but it's a straight up bug that i assume they'll fix
vdamewood has quit [Read error: Connection reset by peer]
vdamewood has joined #osdev
<heat>
does one need macOS to get a unified UI experience?
<heat>
or do they also have their own little 30-years-of-UI-design moments
<geist>
arguably, yeah
<geist>
though i also tend to stick to fairly plain UI experiences, like cinnamon on linux, so it's pretty much unchanging
<heat>
if you go deep enough in windows you get a w98 menu
<geist>
but mac is fairly consistent, though i think the window management is somewhat full-screen centric
<heat>
by simply using linux you get to experience like at least 2 different UI toolkits with their own different looks and tooling
zxrom_ has joined #osdev
<geist>
also recent mac release rearranged all of the settings app, so everything moved around, but they moved around fairly consistently
<geist>
macs will move things around between releases, but they're pretty consistent about it, so every new release is a bit of muscle memory relearning
zxrom has quit [Ping timeout: 245 seconds]
<heat>
when i used a mac a while back i struggled super hard with the windows management
<heat>
very bizarre compared to windows/linux
<geist>
yeah, takes a bit of relearning, though i find it to be very consistent with keyboard shortcuts
<geist>
which i love
<geist>
also notice a lot of one off windows things copy it (ctrl-w for closing window, etc)
<geist>
but inconsistently
<heat>
also the cmd vs ctrl thing
<geist>
yeah that i just deal with and it gives me no problem
<heat>
my mind naively mapped ctrl to cmd but then that all went to shit in the terminal
<geist>
right
<geist>
it helps that when i'm on a mac i'm always using a mac keyboard of some type, so the cmd button is where the alt is
<geist>
and being american i never have to use alt key for stuff
<geist>
though mac has pretty good direct support for non english characters
<mjg>
btw if you check xnu sources they are also... PESSIMAL
<geist>
mjg: one of the things working at apple taught me is no one gives a shit except kernel people
<heat>
xnu sources are just netbsd/freebsd sources but with less nerds
<mjg>
geist: mate it's the kernel which i looked at and which sucks:p
<zid>
One day I will bother to bust out the keyboard layout editor and actually make windows have characters on its keys
<geist>
ie, kernel people worry about this stuff, real people dont care as long as it works well enough
<zid>
altgr-anything does nothing except for éíáúó€¦
<heat>
also they have a lot of interesting ideas in there
<zid>
a whopping.. 7 keys
<heat>
particularly security stuff, etc
<geist>
well, i mean in seriousness, when making a product it mattesr what end users see, not how well the guts work. it's an important engineering lesson
<heat>
xnu is probably not particularly scalable nor does it need to be
<geist>
because i was grossed out by xnu at the time too, and did what i could to help, but benchmarks didn't mean anything to anyone
<geist>
it's tuned for things that a bunch of other systems are
<mjg>
it could be mate to eat less battery by not doing wtfs in the kernel
<mjg>
but i don't know what % is it
<mjg>
s/mate/made/
<geist>
very big on real time kernel stuff (audio bits run at super high priority)
<geist>
and it uses swap hyper aggressively
<geist>
and compressed pages
<mjg>
i know it has a bunch of magic for scheduling
<geist>
indeed, re power, and yet their laptops are consistently amazing power wise
<heat>
i guess for the kernel you don't really have an "end product" as in end users do you?
<heat>
/maybe/ battery life, in cases where the kernel matters
<geist>
i remember at the time i was there they still sold xserves, which caused some consternation, since for a while there darwin server was directly competing with things like linux servers
<geist>
and it would get the shit kicked out of it if you ran things like lmbench
<geist>
but that problem sorted itself out when they stopped selling server versions and hardware
<mjg>
lmao i remember some attemtps at making xnu into a server
<geist>
anyway i'm not apologizing for them, it's more like it taught me that raw performance isn't always the end goal. consumer electronics and embedded and whatnot have more complicated goals
<geist>
and i think that can be almost more interesting, since you have to deal with grey area
<mjg>
but ye, it is how the end users perceive it, not how it actually is nor how does it look like under the hood
<geist>
*especially* graphics performance. they were going nuts at the time about smooth scrolling
<geist>
and using every trick in the book
zxrom_ is now known as zxrom
<geist>
i remember being completely grossed out and then sort of appreciated that at the time (mid 2000s, dunno about now) XNU would fsync() every file when you closed, it automatically
<geist>
so performance was atrocious
<heat>
i remember some story of some software where it was loading so fast that they added a sleep() just to look like it was doing things
<geist>
but the idea was, you wrote the data, you closed the file, it's on the disk
<heat>
windows still does that geist!
<geist>
heat: i wonder about that sometimes when you have to look at 3 or 4 logos on some modern game
<geist>
like, is it doing something in the background?
<heat>
that would be smart, but do they care?
<heat>
and if they aren't doing anything, WHY ARE THEY NOT SKIPPABLE
<geist>
because you have to look at the logos
<mjg>
:/
<mjg>
you reminded me of need for speed 2
<geist>
corporate mandates at least 5 seconds of looking at their thing
<mjg>
EA logo would stay for liek 3 seconds
<mjg>
and only then it would start loading
<geist>
(they're almost certainly loading assets in the background though)
<heat>
PoV: You bought the new assassin's creed
<heat>
Inspired by historical events and characters, this work of fiction was designed, developed, and produced by a multicultural team of various beliefs, sexual orientations and gender identities
<mjg>
... none of which got sexually harassed while doing so
<mjg>
(check if not blizzard)
<geist>
if not the entire games industry
<heat>
geist you'd think that but then you see GTA V and their scanf big stupid
<mjg>
i don't know man, some shops are male-only
<mjg>
:p
<zid>
to be faaair
<zid>
that bug was only bad because msvcrt was bad, and they just.. never tested how it'd scale
slidercrank has quit [Ping timeout: 245 seconds]
<mjg>
will-it-scale gta5_processes
<mjg>
when you gonna add the testcase heat
<heat>
so clearly they never looked
<heat>
"why is sscanf top of the profile?"
<zid>
The 'bug' was not rewriting that code well before then
<mjg>
what is a profile
<zid>
before it was slowing the fuck down so much
<heat>
its your facebook account mom
<mjg>
i watched a video the other day with some fucking guy benchmarking his code
<mjg>
he noted it does not perform like he expected
<mjg>
this and that got checked and he is out of ideas
<mjg>
guess what he did not do
<geist>
hey at kleast it wasn't in the core game loop!
<mjg>
he did not fucking profil
<mjg>
e
<mjg>
gg
<geist>
probably that's how that stuff happens too, folks that work in the core game loop are probably the experienced folks. stuff like loading assets, etc are for the interns
<mjg>
bet you could trace that scanf to stackoverflow?
<zid>
asset loading *is* what a core game loop is these days
<zid>
shit's seriously complicated
<zid>
This was "getting a toc from the network end for the current multiplayer shop contents, mission list, etc, etc"
<zid>
and they'd just mashed it into one giant xml or something
<zid>
and it grew a couple of orders of magnitude since release
<heat>
json!
<heat>
this aint the early 00s
<heat>
we're modern!
awita has joined #osdev
<mjg>
it's a classic problem
<mjg>
they test something at lol scale
<mjg>
and then it suddenly blows up due to n^2 or worse
<heat>
the scale was always there because gta was always damn slow to load
<heat>
it just got progressively worse over time
<mjg>
huh
<mjg>
then i'm confused how it shipped
<mjg>
you would think by that time someone with performance-fu would take a look
<heat>
bad code got shipped???
<mjg>
ey heat popular game therefore no bugs
<heat>
games these days all come with 4K textures just in case you have a 4K display
<heat>
so they're all 100+ GB
<heat>
do they care? no, so it doesn't get fixed
<mjg>
you reminded me of a game, whose name i can't recall, which shipped for PCs and XBOX
<mjg>
it looked like semi-shite
<mjg>
turns out they were forced to downgrade pc graphics to look like it does on xbox
<mjg>
and there were original textures 'n shit still present in install data
<mjg>
someone patched the game around and it looked great
<mjg>
gg
<mjg>
i can google for it
<zid>
*that* scale was never there
<zid>
O(n^2) just gets real big real fast, from "you can't even tell" at a few hundred bytes, to "this is never going to end before the universe does" at a couple meg
goliath has joined #osdev
<mjg>
now this makes me wonder, is there a code analysis tool which detects these kind of problems?
<heat>
what problems?
<mjg>
bad O
<heat>
maybe
<heat>
that seems hard to guess though
<heat>
hey i wonder if AI could work there
<heat>
like train the tool with a bunch of O() examples, then let it guess
<bslsk05>
'The Contrepreneur Formula Remastered (False Copyright Claim)' by Mike Winnet (00:22:44)
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
dude12312414 has joined #osdev
<zid>
You know what would be a cool ML plugin
xenos1984 has quit [Read error: Connection reset by peer]
<zid>
colouring code by whether it interacts with user input
<zid>
for auditing visually
<sham1>
O(n^2)? Just get O(n^2) servers, what's the problem
<sham1>
O(money)
<zid>
for each user? :P
<zid>
"Tokenizing string... uploading to AWS cloud... please wait..."
plarke has joined #osdev
<sham1>
Clearly you need serverless functions to scale
<sham1>
Also mongodb
<zid>
I made more noogles, enjoyed that
<zid>
figured out how strong the chili powder I had is (or isn't, as the case is)
<zid>
so I dumped a nice amount in this time
awita has quit [Remote host closed the connection]
<sham1>
Some of the noodle spice pouches are quite disappointing
LittleFox has quit [Quit: ZNC 1.8.2+deb3.1 - https://znc.in]
tomith has quit [Quit: tomith]
LittleFox has joined #osdev
lainon has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
xenos1984 has joined #osdev
ih8win8 has quit [Ping timeout: 250 seconds]
linkdd has joined #osdev
<linkdd>
hi, quick question. In my hobby osdev project, I do error handling by returning a bool, if it's false then the error code is stored in a global (atomic) variable. Similar to how errno is used in the stdlib. however, i'm concerned that when I implement multiprocessing (with SMP), there might be data-races related to this variable being global. I know that errno on Linux is thread-specific, but I guess in an
<linkdd>
osdev project, it would not be as simple as adding the `__thread` keyword to my global variable declaration?
[itchyjunk] has quit [Ping timeout: 246 seconds]
<heat>
obviously you'll have corruption yeah
<heat>
you'll need percpu variables
<heat>
__thread *could* be a way, but it's generally Not The Way
<zid>
task->errno? :P
<heat>
i put them all in a special section and access them with inline asm
<linkdd>
doesn't gcc (or clang) rely on a C runtime for the OS being present (crt.o ?) for __thread to work properly? i'm assuming i don't even have access to it in my kernel
<heat>
yeah ofc you'll need to implement everything
<heat>
it's the fun of osdev
<zid>
it'd be libgcc wouldn't it
<zid>
other than the setup code
<heat>
no
<heat>
this is libc stuff
<zid>
oh is it all funcs and not operators?
<heat>
PT_TLS program headers plus any pthread function it may implicitly call or something (rare? not worth thinking about)
<zid>
__thread a; a = 7; if this needs to generate funky special instructions (lock prefixes, whatever) surely that's on either the compiler, or a callout to libgcc, was my thinking
<zid>
or pthreads, yea
<heat>
yeah but those get stuck in PT_TLS, which gets mapped and set up to the thread pointer
<heat>
in an ABI dependent way
[itchyjunk] has joined #osdev
<zid>
I assume you can fake it with your own #define THREAD __attribute__((section(".thready")) / int THREAD b; or whatever
<heat>
yes, i "fake" it
<heat>
i have a .percpu that gets base addr = 0x0, and then i use asm to access it
<zid>
yea that'd do it, I recommend renaming it to threadyboi though
<heat>
so mov %gs:pcpu_var, %rax works fine
<heat>
but this requires inline asm and is kind of depressing
<linkdd>
how does a .percpu section in the elf would make it "data-race free"? i'm not following
<heat>
the other idea is to have a struct pcpu { int errno; thread *curr_thread; process *current; ...};
<heat>
well, each cpu gets its own copy of that
<heat>
just like TLS, but a dollar-store, manual way
<mjg>
why on earth would you roll with a global
eddof13 has joined #osdev
* mjg
glares at unix
<linkdd>
oh right, a different value for each cpu in the "gs" register i guess?
<mjg>
just return the error and not bool
<zid>
I'd just hang it off the task struct until it became a real problem cus lazy
<heat>
linkdd yep
<heat>
or in arm64 TPIDR_EL1, or in riscv the tp register
<linkdd>
mjg: i'm just trying some things to make my life harder :D
<heat>
note that this is all really annoying to get right
<bslsk05>
github.com: Onyx/kernel/include/onyx/x86/percpu.h at master · heatd/Onyx · GitHub
<mjg>
i think for maximum pain yu should definitely refrain from c and c++
<heat>
for maximal pain do NOT refrain from c++
<Griwes>
there's things more painful than C++ :P
<linkdd>
i said "make my life harder" not "impossible"
<mjg>
heat: for a bootloader?
<mjg>
try python
<mjg>
:d
<linkdd>
i wanna try to embed lua in the kernel :S
* Griwes
glares in the general direction of Japan
<mjg>
not so long ago i saw a video with a fucking claiming all langs are equivalent, as proven by turing
<mjg>
and you in particular you can write an OS in any of them
<mjg>
liek lol
<mjg>
linkdd: are you a netbsd user?
<mjg>
linkdd: they did it
<mjg>
it may be it got ripped out though
<linkdd>
nope, i left the linux as desktop a few years ago
<linkdd>
but thanks for the fun fact
<linkdd>
(also i said linux, because i never had a bsd for desktop)
<mjg>
you are definitely pain-avoidant for a person claiming to love it
<mjg>
:]
<linkdd>
mjg: i work on windows
<linkdd>
but sometimes i cheat and use the WSL or docker
<linkdd>
heat: in your percpu.h, any reason why you use macros instead of functions?
<linkdd>
alright, i defined `extern void errno_set(int); extern int errno_get(void);` it the platform independant code, and i'll define the symbols in my arch specific code, which will use the percpu var technique you described
<mjg>
that's the easy way out
<linkdd>
i want a clear separation of platform-independant code and platform-specific code, so I always use `extern ...` when I need to define a "generic interface"
lainon has joined #osdev
<heat>
linkdd because functions suck and are expensive
dh` has quit [Read error: Connection reset by peer]
<linkdd>
even if you add the inline keyword? :p
<heat>
depends
<heat>
inline does not mean inline unless you always_inline, and even then it does not mean inline
<Griwes>
inline doesn't do much useful beyond manipulating ODR rules
SGautam has quit [Quit: Connection closed for inactivity]
<heat>
also macros are literally the only way to do those things generically
<heat>
(the things that those macros do, ie take identifier names and access those as symbols)
<linkdd>
right
dh` has joined #osdev
immibis has quit [Ping timeout: 240 seconds]
qxz2 has joined #osdev
heat has quit [Quit: Client closed]
immibis has joined #osdev
Turn_Left has quit [Read error: Connection reset by peer]
night has quit [Quit: goodbye]
night has joined #osdev
heat has joined #osdev
sprock has quit [Remote host closed the connection]
<moon-child>
heat: ur a function
<klange>
i'm a function with the signature `depression klange(caffeine);`
<heat>
i am not a function
<heat>
if anything im __always_inline static inline
<heat>
klange is caffeine an implicit int or a type?
<klange>
that's a signature, so it's a type
<klange>
I am a function that takes caffeine as an input and returns depression.