<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.
<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 :(
<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
<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>
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]
<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
<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
<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]