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
heat has joined #osdev
<mcrod> she's married
<zid> so is spaghetti until it's wet
<heat> mcrod, do you want a very small (almost undetectable) riscv board for Intelligent Monitoring and Pedestrian Detection
<mcrod> sure
<zid> I do
<mrvn> lex tokens and grammar rules always should have a std::stringview of the text they cover
<heat> milkv.io/duo
<bslsk05> ​milkv.io: Milk-V
<zid> I want to wear a balaklava and record a video of me trying badly to set it on fire with a disposable lighter
<mcrod> why is CMAKE_INSTALL_DO_STRIP not documented anywhere
<zid> while shouting DEATH TO RISC-V
<heat> yoooooooooo
<mrvn> heat: any intention of supporting c++?
<heat> milk + Small size, big potentials...
<heat> is this a huge penis joke
<heat> have i been penis'd
<heat> this is like dick sites
<zid> Mr. Roger Shaftily
<mcrod> https://gitlab.kitware.com/cmake/cmake/-/issues/18997 - "removing mention of CMAKE_INSTALL_DO_STRIP from 3.15's docs, at least pending further investigation on whether it should be public"
<bslsk05> ​gitlab.kitware.com: Document "install/strip" special target for Ninja / Makefile generators (#18997) · Issues · CMake / CMake · GitLab
<zid> can you not
<zid> tell it to run
<zid> strip
<mcrod> why
frkzoid has joined #osdev
<zid> arse.exe: arse.o\n\tgcc arse.o -o arse.exe\n\tstrip arse.exe
<heat> doesn't cmake implicitly strip release builds?
<zid> like a real build system
<heat> or at least not generate debug info in the first place
<mcrod> i can't find any evidence of that
<mcrod> oh
<zid> stripping binaries is weird though
<zid> who does this
<mcrod> Release doesn't generate debugging info
<mcrod> RelWithDebInfo, well, does.
<heat> ok great!
<zid> (I mean, I strip them because splitdebug, but that isn't a real strip)
<mcrod> what.. the fuck?
<bslsk05> ​cmake.org: Search — CMake 3.27.0-rc2 Documentation
<mcrod> yet, you can find a shitload of references to it in the source code, when it deploys the help files...
<heat> you don't have debug info dawg
<heat> what's the problem?
<mcrod> I think CMake ships with RelWithDebInfo
<zid> strip -s or strip -S
<heat> ships what
<zid> something he made up
<mcrod> dunno, I pass -DCMAKE_BUILD_TYPE:STRING="Release" every chance I get
<mcrod> i wish i made it up
<zid> You made it up
<heat> ok great
<heat> also, you don't need to add :STRING after everything
<mcrod> i know you don't _have_ to
<mcrod> my fingers are used to this though
<zid> Is this "the bash people told me to" again :p
<mcrod> no
<heat> #cmake people told me to!
<mcrod> that script has been mostly improved
<mcrod> also eat a dick people when I don't know how to do something, I ask
<mcrod> :(
<heat> you need to ask my opinionated ass
<mcrod> if this were C/C++, ok
<mcrod> but bash scripting?
<mcrod> it's hopeless
<heat> i'm a professional posix shell scripter
<mcrod> no you aren't
<mcrod> (are you really)
<heat> no
<zid> I know a professional powersheller
<zid> he did advent of code in it
<heat> do you want to pay me? i can become one
<mcrod> powershell would be preferable
<heat> "The default CMake build type is the “empty” build type, which is used in combination with the environment variables CFLAGS and CXXFLAGS."
<mcrod> at least command line shit is actually well fucking defined in there
<heat> there's your answer, the cmake build type does nothing
<heat> by default
<mcrod> i... i know
<heat> on linux
<mcrod> that's why you specify -DCMAKE_BUILD_TYPE
<heat> no
gmacd has joined #osdev
<zid> Or you don't, and just set your cflags correctly :P
<zid> that's for toggling between multiple option sets
<bslsk05> ​www.kitware.com: CMake and the Default Build Type
<zid> do you have multiple option sets?
<mcrod> no
<zid> Then you definitely don't need the optional sets support then
<zid> you can just put your one config right into cflags, done
<heat> KISS
<heat> ME
<mcrod> did you brush your teeth
gog has quit [Quit: byee]
<heat> no we're on IRC no one brushes their teeth here
<mcrod> ok didn't think so
gmacd has quit [Ping timeout: 240 seconds]
ThinkT510 has quit [Ping timeout: 248 seconds]
frkzoid has quit [Ping timeout: 240 seconds]
[_] has joined #osdev
[itchyjunk] has quit [Read error: Connection reset by peer]
frkazoid333 has quit [Ping timeout: 240 seconds]
[_] has quit [Remote host closed the connection]
[_] has joined #osdev
ThinkT510 has joined #osdev
gmacd has joined #osdev
[_] has quit [Remote host closed the connection]
<bl4ckb0ne> why are people still using cmake when meson exists
<mcrod> my worries are over
gmacd has quit [Ping timeout: 240 seconds]
<heat> every build system is far better
<heat> except autotools
<mcrod> idea here: user clones repo, they go to `./fetch_toolchain.sh`, they load up the project in their IDE, and by the grace of god because of CMakePresets.json it Just Works
<mcrod> also because of toolchain files
<zid> even better idea
<zid> gnu make
<mcrod> no
<zid> You open the file you want to edit in your editor, then tell it to invoke "make"
<zid> when you're done editing
<bl4ckb0ne> anything is better than autotools
<bl4ckb0ne> and scons
<bl4ckb0ne> scons should burn
nyah has quit [Quit: leaving]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
Matt|home has quit [Quit: Leaving]
gmacd has joined #osdev
_whitelogger has quit [Ping timeout: 240 seconds]
_whitelogger has joined #osdev
staceee has joined #osdev
AndrewYu has joined #osdev
Piraty has joined #osdev
sm2n has joined #osdev
ddevault has joined #osdev
vismie has joined #osdev
night has joined #osdev
particleflux has joined #osdev
pounce has joined #osdev
jleightcap has joined #osdev
froggey has joined #osdev
Ermine has joined #osdev
LittleFox has joined #osdev
noeontheend has joined #osdev
leon has joined #osdev
corecode has joined #osdev
alecjonathon has joined #osdev
yuiyukihira has joined #osdev
tommybomb has joined #osdev
m5zs7k has joined #osdev
xvmt has joined #osdev
yyp has joined #osdev
Brnocrist has joined #osdev
energizer has joined #osdev
elastic_dog has joined #osdev
gjn has joined #osdev
milesrout_ has joined #osdev
alethkit has joined #osdev
sebonirc has joined #osdev
pitust has joined #osdev
sprock has joined #osdev
fluix has joined #osdev
whereiseveryone has joined #osdev
tom5760 has joined #osdev
sham1_ has joined #osdev
dzwdz has joined #osdev
asarandi2 has joined #osdev
luke86_ has joined #osdev
heat has joined #osdev
patwid has joined #osdev
dza has joined #osdev
gmacd has joined #osdev
deflated8837 has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
eck has joined #osdev
gmacd has joined #osdev
heat_ has joined #osdev
particleflux has quit [Ping timeout: 255 seconds]
Fox has joined #osdev
particleflux has joined #osdev
m5zs7k_ has joined #osdev
leon_ has joined #osdev
asarandi2 has quit [Ping timeout: 255 seconds]
leon has quit [Ping timeout: 255 seconds]
LittleFox has quit [Ping timeout: 255 seconds]
m5zs7k has quit [Quit: m5zs7k]
eck has quit [Ping timeout: 255 seconds]
sprock has quit [Ping timeout: 255 seconds]
heat has quit [Ping timeout: 255 seconds]
eck has joined #osdev
asarandi2 has joined #osdev
sprock has joined #osdev
frkazoid333 has joined #osdev
leon_ has quit [Ping timeout: 255 seconds]
gmacd has quit [Ping timeout: 255 seconds]
leon has joined #osdev
m5zs7k_ is now known as m5zs7k
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
eck has quit [Quit: PIRCH98:WIN 95/98/WIN NT:1.0 (build 1.0.1.1190)]
eck has joined #osdev
vdamewood has joined #osdev
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
linear_cannon has joined #osdev
gmacd has quit [Ping timeout: 255 seconds]
radens has joined #osdev
<radens> Is there a tool for generating the best way to load a constant into an arm register, or some sort of magic psuedo register or something?
<radens> *pseudo pneumonic
<radens> *mnemonic
<heat_> no, just custom macros you can try to use
<heat_> but it sucks ass
<vdamewood> I'm curious, what does one normally do, Load a few bits, shift, load a few more bits, and repeat?
<radens> I thought there was some sort of online solver or something, but maybe I just dreamt of it
<vdamewood> I kind of wish more systems would do what the MMIX does.
<radens> vdamewood: pretty much. The instructions are all 32 bits, and the constant field is pretty small, so you typically need at least two instructions to stuff a 32 bit number in arm32
<radens> or arm 64 for that matter
<heat_> fwiw ldr reg, =val should work I think?
<heat_> it's just not ideal
gmacd has joined #osdev
<vdamewood> FWIW, the MMIX has 4 separate instructions to load a 16-bit value into a 64-bit register, one instruction for each 16-bit quarter word in the register.
<vdamewood> Of course, the MMIX doesn't exist in hardware, so it's just a virtualized fantasy.
<vdamewood> radens: Looks like the constant field is at least 16 bits, though.
<bslsk05> ​fuchsia.googlesource.com: zircon/kernel/lib/arch/arm64/include/lib/arch/asm.h - fuchsia - Git at Google
<heat_> although i remember geist said this still wasnt ideal or something
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
brynet has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
asarandi2 has quit [Ping timeout: 255 seconds]
gmacd has quit [Ping timeout: 260 seconds]
asarandi2 has joined #osdev
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
heat_ has quit [Ping timeout: 255 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 260 seconds]
sham1_ is now known as sham1
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
osmten has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
omnit3a has quit [Quit: Connection closed for inactivity]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 268 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 255 seconds]
gmacd has joined #osdev
<kof123> http://gsf.cococlyde.org/files mam-1994.pdf https://github.com/att/ast/ https://github.com/att/ast/blob/master/src/cmd/INIT/mamake.c Mamfiles are generated by the --mam option of nmake(1) and gmake(1) and are portable to environments that only have"" sh(1) and cc(1)
<bslsk05> ​gsf.cococlyde.org: files - gsf
<bslsk05> ​att/ast - AST - AT&T Software Technology (165 forks/481 stargazers/EPL-1.0)
<bslsk05> ​github.com: ast/src/cmd/INIT/mamake.c at master · att/ast · GitHub
<kof123> it wants a popen which djgpp might actually have, but i think you can just edit that out and not use that part
<kof123> you sure this is better than autotools ? them's fighting words
<kof123> if you don't have a suitable long #define KEY(a,b,c,d) that is an easy fix too IIRC lol
gmacd has quit [Ping timeout: 240 seconds]
<kof123> for some reason i feel that would be a suitable logo https://finalfantasy.fandom.com/wiki/Mom_Bomb_(Final_Fantasy_IV_3D)
<bslsk05> ​finalfantasy.fandom.com: Mom Bomb (Final Fantasy IV 3D) | Final Fantasy Wiki | Fandom
tiggster has joined #osdev
uzix has joined #osdev
gmacd has joined #osdev
goliath has joined #osdev
gmacd has quit [Ping timeout: 260 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 260 seconds]
eschaton has quit [Server closed connection]
eschaton has joined #osdev
gmacd has joined #osdev
GeDaMo has joined #osdev
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
brynet has quit [Ping timeout: 255 seconds]
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 268 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 255 seconds]
vdamewood has quit [Read error: Connection reset by peer]
gmacd has joined #osdev
vdamewood has joined #osdev
bradd has quit [Ping timeout: 265 seconds]
q3lont has joined #osdev
gmacd has quit [Ping timeout: 265 seconds]
bgs has joined #osdev
Brnocrist has quit [Ping timeout: 260 seconds]
q3lont has quit [Quit: Leaving]
Brnocrist has joined #osdev
radens has quit [Quit: Connection closed for inactivity]
danilogondolfo has joined #osdev
hirigaray has quit [Server closed connection]
gmacd has joined #osdev
Left_Turn has joined #osdev
bleb has quit [Ping timeout: 250 seconds]
gmacd has quit [Ping timeout: 255 seconds]
Left_Turn has quit [Remote host closed the connection]
Left_Turn has joined #osdev
brynet has joined #osdev
slidercrank has joined #osdev
Guest4078 has joined #osdev
gmacd has joined #osdev
bleb has joined #osdev
gmacd has quit [Ping timeout: 260 seconds]
DynamiteDan has joined #osdev
terminalpusher has quit [Ping timeout: 245 seconds]
awita has joined #osdev
gog has joined #osdev
Vercas0 has joined #osdev
gildasio has quit [Ping timeout: 240 seconds]
gxt__ has quit [Ping timeout: 240 seconds]
Vercas has quit [Ping timeout: 240 seconds]
Vercas0 is now known as Vercas
gildasio has joined #osdev
gxt__ has joined #osdev
<Fox> .. apparently having my client configured to notify me when someone says "fox" isn't a very good idea
* moon-child foxes foxily at fox
<Fox> x)
SGautam has joined #osdev
<zid> fox
<zid> is a cool animal
Fox is now known as DragonFox
<DragonFox> (:
<zid> kyuubi no kitsune! ahh! run for your lives
<DragonFox> quite funny being called fox by quite some people, building an OS with a Fox as mascot and using LLVM to compile it (and libc++ and stuff) and then having changed the usual nickname to DragonFox ... so yeah, Dragon compiler and Fox OS :3
<zid> GeDaMo hayaku!
<GeDaMo> I mainly know of the nine-tailed fox from the game Okami :P
<DragonFox> my first thought is always kitsune ^^
<zid> Mine is usually katamari
<zid> then cheese
<zid> then what I want for lunch to go with my cheese
awita has quit [Ping timeout: 240 seconds]
<gog> meow
<zid> My children's books never covered what the english onomatopeia for the noises foxes make are :(
<zid> childrens'*
<gog> what does the fox say indeed
<GeDaMo> "bark, scream, howl, snore, gecker" https://en.wikipedia.org/wiki/List_of_animal_sounds
<zid> those aren't the oneowmeoatlpitaiei though
<GeDaMo> https://en.wikipedia.org/wiki/Gecker "is a vocalization most often associated with infant primates. It is defined as a loud and distinct vocalization, which consists of a broken staccato noise."
<zid> They mainly scream l ike they're dying, y es
<zid> You know in the summer when the kids are playing outside and all you can hear is screaming?
<zid> and you're not sure if they're having fun or killing each other
<zid> Imagine that, but you're alone in the woods
<zid> in the dark
<zid> gog: woods is a place with loads of trees
<GeDaMo> The woods are lovely, dark and deep; But I have promises to keep and miles to go before I sleep
<zid> and I have to walk back all alone!
<DragonFox> soem foxes kinda laugh a lot, like finnegan the fox https://www.youtube.com/watch?v=p_QdPLPmgO4&ab_channel=SaveAFox
<bslsk05> ​'Your Finnegan Fox Fix' by SaveAFox (00:03:04)
<DragonFox> good bot
<zid> bood got
koolazer has quit [Server closed connection]
koolazer has joined #osdev
<gog> good gog
<zid> kitty's owner has been found
<GeDaMo> :)
<Ermine> gog: may I pet you
<gog> zid: aww old kitty found their home
<gog> Ermine: yes
<zid> why is there a sea gull outside though is the real question
<zid> I'm nowhere near the sea
<GeDaMo> Are you sure it's not three hedgehogs in a gull suit? :|
<gog> seagulls are a mystery
<zid> that'd be one fat gull
<zid> Have you ever eaten a hedgehog, they've got a surprising heft to them
<GeDaMo> No, but we have gulls here and they're big buggers :|
<zid> Are you in one of those miserable northern seaside towns
<GeDaMo> Did you see the video of the gull eating a rabbit?
<zid> where it's grey all the time, and full of hardened life criminal gulls
<zid> 25.5C here presently, notbad
<bslsk05> ​'Seagull Swallows a Whole Rabbit on Welsh Island' by Storyful Viral (00:01:42)
<kof123> they have ---acdc-like characteristics IIRC
* Ermine pets gog
<kof123> *..... <awkward silence>
<FireFly> I remember playing mystical ninja starring goemon a lil bit way back in an emulator
<zid> I never ended up playing that game, it looked really fun though
<zid> It was in my strategy guide booklet that came with a magazine and read the reviews and stuff, and I watched the speedrun eventually
ZipCPU has quit [Server closed connection]
* gog prr
ZipCPU has joined #osdev
<zid> gprrog
gmacd has joined #osdev
<zid> grrpog is a noise I am certain I have heard a cat make
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 268 seconds]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 240 seconds]
fkrauthan has quit [Server closed connection]
fkrauthan has joined #osdev
<sham1> POGGERS
gog is now known as poggers
awita has joined #osdev
nyah has joined #osdev
[itchyjunk] has joined #osdev
gmacd has joined #osdev
awita has quit [Ping timeout: 240 seconds]
gmacd has quit [Ping timeout: 240 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 260 seconds]
gmacd has joined #osdev
gmacd has quit [Ping timeout: 268 seconds]
Terlisimo has joined #osdev
heat_ has joined #osdev
<zid> hoggers.
<heat_> hog
<poggers> oink
<zid> zoinks
dude12312414 has joined #osdev
awita has joined #osdev
vdamewood has quit [Read error: Connection reset by peer]
vinleod has joined #osdev
zid has quit [Server closed connection]
zid has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
junon has quit [Read error: Connection reset by peer]
sakasama has quit [Read error: Connection reset by peer]
selfsigned has quit [Read error: Connection reset by peer]
raggi has quit [Read error: Connection reset by peer]
chibill has quit [Read error: Connection reset by peer]
sakasama has joined #osdev
<sham1> Bazinga
<poggers> bazoinka
raggi has joined #osdev
chibill has joined #osdev
sbalmos1 is now known as sbalmos
<mrvn> Is Google really building rfid tracker called G-Spot?
<bslsk05> ​www.snopes.com: Is Google's 'G-Spot' a Real Product? | Snopes.com
<GeDaMo> "False"
<poggers> lmao
tanto has quit [Quit: Adios]
pie_ has quit []
vancz has quit []
tanto has joined #osdev
vancz has joined #osdev
pie_ has joined #osdev
kof123 has left #osdev [#osdev]
tanto has quit [Client Quit]
pie_ has quit [Client Quit]
vancz has quit [Client Quit]
awita has quit [Ping timeout: 240 seconds]
tanto has joined #osdev
vancz has joined #osdev
pie_ has joined #osdev
DanDan has quit [Server closed connection]
kpel has joined #osdev
xenos1984 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
eddof13 has joined #osdev
kpel has quit [Client Quit]
goliath has quit [Quit: SIGSEGV]
slidercrank has quit [Ping timeout: 246 seconds]
dude12312414 has joined #osdev
q3lont has joined #osdev
xenos1984 has quit [Ping timeout: 240 seconds]
xenos1984 has joined #osdev
q3lont has quit [Remote host closed the connection]
q3lont has joined #osdev
nvmd has joined #osdev
poggers has quit [Quit: Konversation terminated!]
goliath has joined #osdev
q3lont has quit [Quit: Leaving]
terminalpusher has joined #osdev
xenos1984 has quit [Ping timeout: 240 seconds]
Guest4078 has quit [Quit: WeeChat 3.8]
xenos1984 has joined #osdev
dutch has joined #osdev
gog has joined #osdev
<zid> And verily, the land shall be divided into six zones of three acts. And there shall be a special zone, the way made open by amassing two score rings and ten
gmacd has joined #osdev
heat_ is now known as heat
<heat> gog, where's pog
<heat> i need to speak to pog
<gog> i killed her and threw her in the faxafloi
<heat> oh no not the faxafloi!
<gog> she belongs to the ocean now
<sham1> The hwat?
<zid> Faxa Bay
<zid> Is bit of ocean
<zid> but written wrong cus iceland
<gog> is the part of iceland between the smoky peninsula and the snow mountain peninsula
<gog> part of the ocean
<zid> maybe if they had more trees they could make paper, and learn it's spelled bay not floi
<zid> flói
<gog> sorry
<gog> i'll only use the american names for places here now
<heat> how do you pronounce tortilla
<heat> in american
<gog> tort ill a
<heat> wrong
<heat> it's tortila
<heat> bad american gog
<gog> bruh
<zid> turrtillerr
<zid> "Thing wot is like a turtle"
<zid> heat: how do you pronounce oi guv leave it out you slag
<gog> tortila is good with guackamol and salsay
<heat> i want a tehco
<zid> you could eat it in the eyerabian penninsula
<zid> eyeberian*
<zid> arab, iber, same thing
<GeDaMo> Aye-firmative :P
gmacd has quit [Ping timeout: 240 seconds]
SGautam has quit [Quit: Connection closed for inactivity]
gmacd has joined #osdev
slidercrank has joined #osdev
junon has joined #osdev
gmacd has quit [Ping timeout: 246 seconds]
<gog> ay-rabian
vinleod has quit [Remote host closed the connection]
vdamewood has joined #osdev
terminalpusher has quit [Remote host closed the connection]
<bslsk05> ​openSIL/openSIL - (0 forks/11 stargazers)
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<heat> AMD boot code opened pog
eddof13 has joined #osdev
luke86_ has left #osdev [WeeChat 3.5]
awita has joined #osdev
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
osmten has quit [Quit: Client closed]
gmacd has joined #osdev
goliath has quit [Quit: SIGSEGV]
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
eddof13 has joined #osdev
awita has quit [Ping timeout: 246 seconds]
SGautam has joined #osdev
<bslsk05> ​arxiv.org: [2306.07899] Artificial Artificial Artificial Intelligence: Crowd Workers Widely Use Large Language Models for Text Production Tasks
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
gmacd has quit [Ping timeout: 265 seconds]
troseman has quit [Server closed connection]
gorgonical has joined #osdev
troseman has joined #osdev
cross has quit [Server closed connection]
cross has joined #osdev
heat has quit [Remote host closed the connection]
heat has joined #osdev
gmacd has joined #osdev
ehmry has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
ehmry has joined #osdev
goliath has joined #osdev
gmacd has quit [Ping timeout: 265 seconds]
slidercrank has quit [Ping timeout: 260 seconds]
<heat> what are good resources for page reclamation?
<zid> amnesty
<zid> have a deposit box people can put pages into, no questions asked
<heat> my svr4 book's pageout algo is wack, it's basically "if you start running out of memory, swap processes out or steal semi-randomly from them"
<heat> linux is like 15k lines of stuff
<gorgonical> that is *a* solution though
<gorgonical> what's the distinction between stealing and swapping here?
<heat> its not a particularly good one in my case, where i have buddy allocators that need contiguous memory free for each memory zone, and then i have a slab allocator that does stupid amounts of caching until it literally can't
<heat> and a page cache that does the exact same shit
<heat> and an inode cache, and a dentry cache, etc etc
<heat> i think that svr4 stole pages (aka unmap and free, swap out to disk if needed) in the pageout thread unless memory got too low
<heat> in which case, swapper swapped whole processes out
danilogondolfo has quit [Remote host closed the connection]
<heat> zircon's stuff looks more tractable but it's still a huge pool of code built on principles i do not understand
<heat> it also only does LRU when I kind of need zone compaction too
Jari-- has joined #osdev
<mrvn> heat: what's the difference between swapping out all a processes memory from swapping out the whole process? Those 4-16k thread metadata?
<mrvn> VM objects?
dutch has quit [Quit: WeeChat 3.8]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<mrvn> Swapping out a random page swaps mathematically proven no more than twice as much as an oracle based (meaning precient so it know what page is next needed) algorithm on average. Beats lots of other algorithms.
<mrvn> Imho though I think the time for swapping has passed. If you need to swap more than a few pages/s then your programm is just plain dead in the water.
<mrvn> ram is cheap.
<gog> heat: zimbabwe
dutch has joined #osdev
<gog> should i get a rpi zero
<heat> which zero?
<heat> rpi zero 2 w? or the older zero?
<geist> funny i actually run with linux swappiness set to 100. with a flash based swap it's pretty good
<geist> lots of random stuff starts up and then sits on ram it doesn't touch, may as well eventually let that age out
<geist> use the ram for something else
<heat> <mrvn> heat: what's the difference between swapping out all a processes memory from swapping out the whole process? Those 4-16k thread metadata? <-- no idea, i think old UNIX kernels support doing the really *full* swap (with data structures) though
<dh`> as I've doubtless ranted about before, one of the reasons you die the moment you start swapping is that all our swap logic is based on 1970s assumptions
<dh`> as well as various design shortcuts
<heat> but linux swapping is actually decent now, to be honest
<dh`> heat: it's about swapping out the u area
<geist> indeed. mac in particular
<heat> no idea how it is on BSD atm, but linux swapping is absolutely survivable
<geist> but yeah it's my understanding that older unices supported a full swap, presumably they just left behind enough metadata to recover the process entirely
<dh`> pretty sure nobody ever swapped out more than the u area
<geist> makes sense in a universe where the machine was incredibly oversubscribed and lots of terminals sitting there with no interaction
<dh`> (basically the kernel stack and a few other bits like the traditional struct pcb)
<kazinsal> yeah gotta do what you can to keep the machine alive when there's 64K of core and 20K taken up by the kernel
<kazinsal> and a dozen users doing user things intermittently
<geist> and i would have been no big deal if you walk up to your terminal, hit enter and it takes 5 seconds to respond
<dh`> anyway, basically everyone uses global LRU as the pageout algorithm and that is basically what guarantees sucking the pipe
<heat> SVR4 used NRU!
<dh`> you need at least per-process LRU to not suck
<dh`> otherwise you get stuck in all kinds of stupid and avoidable thrashing behavior
<geist> yeah i think global LRU is not really necessarily a given. it was fairly well known tat at least early NT (no idea what it does now) used more of a local-working set style algorithm
<geist> right, per process LRU basically
<geist> and i'm fairly certain that's carried over from VMS
<dh`> per-process page queues really change the VM architecture though
<geist> since i think it was also quite preoccupied with working-set
<heat> i don't think you need per-process LRU. just finer grained LRU, like memcg LRU
<heat> (which is, AFAIK, how LRU is done on linux, per memory cg)
<geist> and not to summon a beast, but Solaris had a pretty good writeup on it's global LRU
<heat> we need bryan cantrill
<dh`> idk, the primary problem with global LRU is that processes waiting for pagein don't use pages so by the time the pagein is finished other pages they need to run have gone away
<dh`> and that will tend to happen with anything less than per-process
<geist> well also they tend to punish things somewhat unfairly
<geist> or at least one kinda unfair. also shared pages need more help, etc
<dh`> there are all manner of problems
<geist> right
<dh`> dealing with shared pages in a per-process scheme is ... basically a completely unsolved problem
<dh`> the last time anyone spent a lot of effort caring about this (more or less) shared pages weren't really a thing
<geist> well, except real systems have done it, but on that token they all are unsolved
<dh`> real systems have done Things
<geist> right, so depends on definition of solved
<dh`> like if I needed to implement per-process page queues in netbsd this month, I'd figure something out
<geist> i think a real system that works even if suboptimally not unsolved
<dh`> that's different from sorting out how to do it right
<geist> but that's semantics
<dh`> well, for example you can just bill the shared page to whoever pages it in
<dh`> that's what I think the typical ad hoc approach is
<dh`> but it's clear that this is a long way from good
<geist> yeah. probably have to consider shared pages in some sort of other bucket
<dh`> at one point I came to the conclusion that every VM object should have its own page queue
<dh`> but never finished fleshing that experiment out and it has other obvious issues
Turn_Left has quit [Ping timeout: 268 seconds]
<mjg> freebsd still swaps out kernel-side thread stacks
<heat> how large are your stacks?
<mjg> i'm not confident but i think anything struct-y is permanently wired
<mjg> heat: 16k
<mjg> but the idea to swap them dates all the way back to single-page
<heat> i'm not sure if that's worth the effort honestly
<mjg> i'm confident it is not
<heat> who swaps them back in? hopefully not the scheduler?
<mjg> it is plausible it made sense back in the day
<heat> or are you still taking the "swapper" bit literally
<mjg> i don't know the logic, i remember being unhappy about needing to work around that shite
<mjg> :]
<mjg> i wanted to rip the entire thing out but a geezer protested
<heat> damn you mckusick
<mjg> not that one
<mjg> btw do you know how to DOS freebsd?
<heat> yeah just allocate a lot of memory
<heat> this blistering exploit also works on linux
<mjg> dd if=/dev/zero of=/some/file/on/tmpfs
<mjg> instant death
<heat> your tmpfs doesn't have a size?
<mjg> it does
<mjg> half of ram or somethin by default
<mjg> but if you already are using half of ram for other reasons....
<heat> ah ok, so the DOS is "allocate a lot of memory"
<mjg> oom-killer's cousin on the bsd side will kill ssh and other shit
<mjg> before it kills that dd
<heat> surely you know that's a problem on every system
<heat> no system ever truly handles truly out of memory conditions properly
<dh`> we got rid of both the u area and swapping it out
<dh`> freebsd continues to lag behind ;-)
<heat> heck that tmpfs one is probably hard to fix
<mjg> heat: for example you could realize how is eaing the shite
<mjg> heat: and pace them
<mjg> heat: or hang them until a watermark passes
<mjg> basically do anything other than "well fuck it lemme kill everyone now"
<mjg> ... which is the current behavior
<mjg> s/how/who/
<heat> you could add arbitrary heuristics, yes
<heat> but none of those make tmpfs count as a process resource
<mjg> you could also add some safety belts for non-root
<mjg> just like they exist for regular filesystems
terminalpusher has joined #osdev
<moon-child> once I had a process hang, eating cpu, couldn't kill it
<mjg> an interview question how to diagnose whaht's up
<mjg> right there
<heat> i bet 10 bucks on "holding mmap_lock"
<mjg> if eating cpu, then it was not holding the lock
<moon-child> I had compiled with asan. Thing is, asan reserves a shitton of dummy address space
<mjg> :d
<heat> mjg, wrong
<moon-child> also, it was trying to dump core (bug in asan or something maybe?)
<moon-child> so it was trying to dump that zero address space
<moon-child> _also_, I was running zfs with compression
<mjg> i know it can spin, but afair for those cases it does not
<moon-child> so it was spending its time compressing zeroes
<mjg> hm
<moon-child> into nothing
<moon-child> couldn't kill it
<mjg> that code is pretty whack mate
<heat> mjg, i had some weird memory compation problems with qemu (back in jan) on linux 6.1 where it was indeed holding the mmap_lock, and burning CPU
<heat> they ended up reverting the buggy patch
<mjg> moon-child: what if i told compression knows buffers are zeroed and fials to take advantage of it
<mjg> heat: what was it doing?
<mjg> was it khugepaged?
gog has quit [Quit: byee]
<bslsk05> ​lore.kernel.org: [PATCH for 6.1 regression] Revert "mm/compaction: fix set skip in fast_find_migrateblock" - Vlastimil Babka
<moon-child> heat: oh, re eftpad
<moon-child> I agree with zid it would be funnier if it were broken, but I'm pretty sure all your comments were wrong
<moon-child> :P
<heat> no way dawg
<heat> traditional (and honestly, intuitively) leftpad works with string lengths, not string lengths + null terminator
<moon-child> %*s is the size of the field, not including null terminator
<zid> $mid()
<zid> is the only function you need to implement
<zid> all other string functions are superfluous
<moon-child> zid: ur mid
<zid> ur a bottom
<bslsk05> ​lore.kernel.org: Re: [PATCH for 6.1 regression] Revert "mm/compaction: fix set skip in fast_find_migrateblock" - Pedro Falcato
<mjg> > Thank you so much for looking into this.
<heat> moon-child, hmm
<heat> mjg, least-lkml-user-in-lkml
<mjg> heat: ye you forot where you were or what
<mjg> heat: wtf
<heat> you have to understand i was so frustrated i voluntarily installed an LTS kernel
<mjg> heat: respond real quick and call him a cunt
<moon-child> my lkml experience: report bug, get ignored
<moon-child> would I have gotten a response if I had cursed somebody out?
<mjg> moon-child: dawg
<heat> hey that's my zfs experience
<mjg> there was a poor fucking sap sparc user
<mjg> oracle broke his unusual setup
<mjg> he bisected 'n shit
<mjg> no response
<mjg> (afair he has 2 cpus which end up being enumarated as 0 and 2, new code is unable to cope with the gap and only uses one)
<morgan> huh
<moon-child> o.o
<heat> sounds like hyperthreading is off or something, and it numbers based on topology
<moon-child> maybe just binning
<mjg> it's an old fucking SPARC MOTHERFUCKER
<moon-child> like cpus 1 and 3 were crap so killed
<heat> hyperthreading off, some core is off, whatever
<heat> topology doesn't change
<zid> doesn't amd number the cores weirdly
<zid> even in the base config
<mjg> it was intel
<heat> they all number cores weirdly
<zid> without you having to do anything weird in the first place
<mjg> and bsds of course differ from linux on the front
<zid> like, the acpi tables in their bioses are like "yep, core 47 comes after core 0 bro, trust me, I have 8 chiplet support, I know what I'm doing"
<zid> intel's invented glue now so they can do it too
<heat> gloo
<heat> mjg, how do bsds differ
<heat> 1) Linux sucks 2) BSD sucks even worse
<heat> literally the only difference ever
<mjg> that's it
<mjg> i'm offended and i'm going to sleep
<mjg> :X
<moon-child> don't you love it when everything sucks?
<heat> - Sent from Mail On Windows 11
<moon-child> then there's no way to have a smug sense of superiority
<mjg> suckless.org
<moon-child> ...I stand corrected
<heat> hey we said "sucks" not "is nazi"
<mjg> moon-child: you can always claim you started sucking later
<moon-child> can totally have a smug sense of superiority vs win11 and suckless
<heat> suckless software also ironically sucks
<heat> harder
<mjg> OH
<mjg> fak.ju
<klange> heat: hello; I don't maintain those utility scripts; if you want to contribute meson build scripts, then you should make the changes necessary to support them
<heat> hey mjg lets go for a quick nightly tiki torch march in the woods
<mjg> it's after my curfew
<heat> klange, yeah ok np i'll figure it out tomorrow or something then
* mjg zzzzs
<klange> (i know it's shocking to hear that I have a project with *other contributors*)
<klange> also ew one of these utilities has two outputs
nvmd has quit [Quit: WeeChat 3.8]
Turn_Left has joined #osdev
<heat> what's the problem with two outputs?
Turn_Left has quit [Read error: Connection reset by peer]
<klange> well, coming from make, you can't represent that at all :)
<heat> you can use a stamp file or something
<heat> which, yes, sucks
<heat> but make also sucks :)
<geist> hmm, i thought you can? there's a way to specify multiple outputs of a single rule
<klange> GNU Make has 'grouped targets'. They are not in POSIX make.
<nortti> if you do the "foo bar: …" thing that's aiui just sugar for specifying foo and bar with the same contents
<klange> Grouped targets are "foo bar &: …"
<klange> There's also &:: for if you have a target that appears in multiple groups, which is... fun.
gxt__ has quit [Ping timeout: 240 seconds]
gxt__ has joined #osdev
<geist> oh sure, i'm assuming gnu make
<geist> i only really ever use gmake, too many useful features
goliath has quit [Quit: SIGSEGV]
SGautam has quit [Quit: Connection closed for inactivity]