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
wootehfoot has quit [Quit: Leaving]
demindiro has joined #osdev
<demindiro> Good news
<demindiro> I got readdir() and unlink() etc to work
<demindiro> Bad news
<demindiro> The benchmark results SUCK
<demindiro> At least, when I compare it to e.g. ext2
<demindiro> It'd probably be useful if I could somehow enable the kernel_cache option for FUSE
Burgundy has joined #osdev
wxwisiasdf has joined #osdev
<wxwisiasdf> Good morning!
<epony> with ext42 you'll be adopting bsd versioning
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
nick64 has quit [Quit: Connection closed for inactivity]
demindiro has quit [Quit: Client closed]
demindiro has joined #osdev
<demindiro> It appears it is not my filesystem that is slow but the FUSE driver in the kernel itself
<demindiro> With writeback cache enabled my filesystem is barely doing anything (shown by tracing) yet it's slow
<demindiro> This seems ridiculous
<demindiro> [2022-12-26T00:54:16Z DEBUG fuser::request] FUSE( 38) ino 0x4000000000000001 SETATTR mode: None, uid: None, gid: None, size: None, atime: None, mtime: Some(SpecificTime(SystemTime { tv_sec: 1672016056, tv_nsec: 720229826 })), ctime: Some(SystemTime { tv_sec: 1672016056, tv_nsec: 720229826 }), file_handle: Some(FileHandle(0)), crtime: None, chgtime:
<demindiro> None, bkuptime: None, flags: None
<demindiro> [2022-12-26T00:54:46Z DEBUG fuser::request] FUSE( 40) ino 0x4000000000000001 WRITE fh FileHandle(0), offset 241664, size 29406, write flags 0x1
<demindiro> [fuse/src/main.rs:329] data.len() = 29406
<demindiro> [2022-12-26T00:54:46Z DEBUG fuser::request] FUSE( 42) ino 0x4000000000000001 SETATTR mode: None, uid: None, gid: None, size: None, atime: None, mtime: Some(SpecificTime(SystemTime { tv_sec: 1672016086, tv_nsec: 812230691 })), ctime: Some(SystemTime { tv_sec: 1672016086, tv_nsec: 812230691 }), file_handle: Some(FileHandle(0)), crtime: None, chgtime:
<demindiro> None, bkuptime: None, flags: None
<demindiro> [2022-12-26T00:55:16Z DEBUG fuser::request] FUSE( 44) ino 0x4000000000000001 WRITE fh FileHandle(0), offset 270336, size 29406, write flags 0x1
<demindiro> [fuse/src/main.rs:329] data.len() = 29406
<moon-child> fuse is hella slow, isn't it?
<demindiro> Literally 30 seconds for not even 30 KB, all in the *kernel*
<demindiro> How even?
justmatt has quit []
<demindiro> Like no shit userspace filesystems appear as crap if the *kernel* driver is crap
<demindiro> I must be missing something
<demindiro> 1KB per second doesn't make sense
<heat> that's impossible
<demindiro> I confirmed that it is not my driver that is blocking at least
<zid> someone accidentally the usleep(1000);
<demindiro> [2022-12-26T00:59:32Z DEBUG fuser::request] FUSE( 20) ino 0x4000000000000001 WRITE fh FileHandle(0), offset 0, size 129300, write flags 0x1
<demindiro> [fuse/src/main.rs:329] data.len() = 129300
<demindiro> [fuse/src/main.rs:335]
<demindiro> [2022-12-26T00:59:32Z DEBUG fuser::request] FUSE( 22) ino 0x4000000000000001 SET
<demindiro> But then wtf even
<demindiro> Why is it so fucking slow
<demindiro> I know that bonnie++ intentionally writes 1 byte per call but still
<demindiro> given how much faster ext2 et al are it has to be faster right?
<heat> does FUSE use the page cache?
<demindiro> I enabled writeback cache
<heat> >given how much faster ext2 et al are it has to be faster right?
<heat> hm?
<heat> also I don't know what writeback cache means
<demindiro> It doesn't do any calls to my filesystem while bonnie++ is writing bytes
<demindiro> FUSE_WRITEBACK_CACHE or something
<zid> sounds like it's a writeback cache
<demindiro>         const CAP: u32 = FUSE_WRITEBACK_CACHE;
<demindiro>         config.add_capabilities(CAP).unwrap();
<demindiro> Without it it does a bunch of 1 byte write calls to my fs which would obviously be slow, but without it it doesn't do that
<demindiro> And somehow is even slower
<demindiro> Because FUSE has to be doing phenomenally stupid
<zid> you accidentally installed the fuse for simulating tape drives
<demindiro> A tape drive is faster than this shit
<demindiro> I bet a literal floppy is faster
<zid> floppies are super fat
<zid> fast
<heat> have you considered that maybe you are doing something wrong
<demindiro> I do
<demindiro> But I seriously don't know what
<demindiro> Because my FS is literally doing nothing between the 30 sec
<zid> if it's *actually* 30 seconds, exactly 30
<zid> that sounds like a timeout
<demindiro> According to log yes
<demindiro> I think the kernel just flushes every 30 secs or something
<demindiro> Imma make a flamegraph
<zid> fuse's writeback cache might
<zid> that's what a writeback cache is for afterall
<zid> you'd need to fsync to get it to do it early I imagine
<heat> 30s definitely sounds like the writeback timeout
wxwisiasdf has quit [Quit: Lost terminal]
Matt|home has quit [Quit: Leaving]
<heat> GCC LTO more than doubled my OS's build time
<heat> lol
dh` has joined #osdev
<heat> theory: gcc is a lot less monolithic and the increased page faulting when exec means it goes slower on LTO
<demindiro> I actually think the kernel may be doing some kind of sleep()
<demindiro> CPU is basically idle
<demindiro> And the filesystem image is in tmpfs
<demindiro> So it should just have to copy data
<heat> please describe your problem
<demindiro> 30KB/s write with FUSE because Linux is literally doing nothing
<heat> how are you defining write?
<heat> write at the bench level or at the filesystem driver level?
<demindiro> What bonnie++ the benchmark program does, it tells Linux to write 1 byte a bunch of times, Linux then caches it for up to 30 sec before sending about 30KB of data to the filesystem driver.
<heat> yes, am aware
<heat> so, where's the issue?
<demindiro> The issue is that it is ridiculously slow for no apparent reason
<heat> slow where?
<demindiro> And I strongly dislike things that are slow for no good reason
<demindiro> Writing is slow
<heat> but where?
<demindiro> In the kernel
<heat> BUT WHERE
<demindiro> IN FUSE
<heat> BUT WHEN
<demindiro> Hell if I know where exactly, I'm looking at it now
<heat> do you have like any data?
<demindiro> Yes
<demindiro> A flamegraph that is a big bar of bonnie++ and then a tiny bit of kernel stuff
<heat> get a main() { write a bunch of shit; fsync; } and then bench it
<demindiro> And htop that says everything is idle
<epony> 1 byte are you serious
<demindiro> And a trace
<demindiro> Yes it's a benchmark
<heat> idc about bonnie++, could be bonnie.rs for all I care
<demindiro> But try ext2 or whatever and it's magically order of magnitudes faster than FUSE
<epony> because it does more than what you naively implement in user space
<heat> get a main() { write a bunch of shit; fsync; }
<epony> heard of buffered operations..
<epony> and queues
<demindiro> I have writecache enabled
<heat> cool
<demindiro> It's slower with writecache enabled for FUSE
<heat> do what I said
<epony> and writing only metadata and the data later on pooled flushes
<demindiro> heat: your main() is already what bonnie++ does but without fsync
<epony> you know file systems are not "just my while loop" ;-)
<heat> yes but I want you to get the simplest testcase and discard everything bonnie++ does
<demindiro> epony:  0:55 <demindiro> [2022-12-26T00:54:16Z DEBUG fuser::request] FUSE( 38) ino 0x4000000000000001 SETATTR mode: None, uid: None, gid: None, size: None, atime: None, mtime: Some(SpecificTime(SystemTime { tv_sec: 1672016056, tv_nsec: 720229826 })), ctime: Some(SystemTime { tv_sec: 1672016056, tv_nsec: 720229826 }), file_handle:
<demindiro> Some(FileHandle(0)), crtime: None, chgtime:
<demindiro> 00:55 <demindiro> None, bkuptime: None, flags: None
<demindiro> 00:55 <demindiro> [2022-12-26T00:54:46Z DEBUG fuser::request] FUSE( 40) ino 0x4000000000000001 WRITE fh FileHandle(0), offset 241664, size 29406, write flags 0x1
<demindiro> 00:55 <demindiro> [fuse/src/main.rs:329] data.len() = 29406
<demindiro> 00:55 <demindiro> [2022-12-26T00:54:46Z DEBUG fuser::request] FUSE( 42) ino 0x4000000000000001 SETATTR mode: None, uid: None, gid: None, size: None, atime: None, mtime: Some(SpecificTime(SystemTime { tv_sec: 1672016086, tv_nsec: 812230691 })), ctime: Some(SystemTime { tv_sec: 1672016086, tv_nsec: 812230691 }), file_handle: Some(FileHandle(0)),
<demindiro> crtime: None, chgtime:
<demindiro> 00:55 <demindiro> None, bkuptime: None, flags: None
<demindiro> 00:55 <demindiro> [2022-12-26T00:55:16Z DEBUG fuser::request] FUSE( 44) ino 0x4000000000000001 WRITE fh FileHandle(0), offset 270336, size 29406, write flags 0x1
<demindiro> There is no reasonable explanation for that
<heat> for what? the delay?
<demindiro> The fact it only writes 1KB/s
<demindiro> 30KB after 30 sec
<bslsk05> ​www.brendangregg.com: Off-CPU Flame Graphs
<heat> get one
terminalpusher has quit [Remote host closed the connection]
<demindiro> OK, flamegraph of custom program is a lot more useful for some reason
<zid> aaaaaaaa
<demindiro>       33.069479668 seconds time elapsed
<demindiro>        0.000000000 seconds user
<demindiro>        0.116180000 seconds sys
<demindiro> perf stat output
<zid> why is it all inside getnetbyaddr_r
<demindiro> Interesting to note that with 16KiB it's actually fast
<demindiro> wait what
<demindiro> hold on
<demindiro> what the fuck?
<heat> -fno-omit-frame-pointer
<demindiro> ah
<heat> glibc isn't compiled with that IIRC?
<zid> why does he not have symbols for his glibc though
<demindiro> I guess I can ignore everything userspace
<demindiro> Idk, devuan/debian
<heat> zid, he does
<zid> have you considered gentoo with splitdebug
<heat> ok so this flamegraph doesn't look like it means much
<heat> we really need an offcpu fg
pog has quit [Ping timeout: 272 seconds]
Burgundy has quit [Ping timeout: 272 seconds]
heat has quit [Remote host closed the connection]
heat has joined #osdev
heat has quit [Remote host closed the connection]
<bslsk05> ​github.com: Use of `std::move` in libc++ leads to worsened debug performance · Issue #53689 · llvm/llvm-project · GitHub
<kaichiuchi> i love everything about this
<demindiro> I used offcputime, idk if that's actually useful
<demindiro> I haven't been able to get the python scripts linked in the blog to work yet btw
<demindiro>     We have run into an issue that a task gets stuck in
<demindiro>     balance_dirty_pages_ratelimited() when perform I/O stress testing.
<demindiro> hmmm
<demindiro> Maybe I need to get a more recent kernel
terrorjack has quit [Ping timeout: 264 seconds]
<kaichiuchi> hm
<kaichiuchi> the more I read about debug performance of C++
<kaichiuchi> the more I'm beginning to understand
terrorjack has joined #osdev
<kaichiuchi> for the record, that issue inspired this change into clang: "Improved -O0 code generation for calls to std::move, std::forward, std::move_if_noexcept, std::addressof, and std::as_const. These are now treated as compiler builtins and implemented directly, rather than instantiating the definition from the standard library."
justmatt has joined #osdev
demindiro has quit [Quit: Client closed]
vdamewood has quit [Ping timeout: 256 seconds]
vdamewood has joined #osdev
elastic_dog is now known as Guest8788
Guest8788 has quit [Killed (lead.libera.chat (Nickname regained by services))]
elastic_dog has joined #osdev
<geist> hmm what is the issue?
<geist> mostly that O0 would be terribad without it?
theWeaver is now known as ChaosWitch
ChaosWitch is now known as KaosHaecksen
GeDaMo has joined #osdev
wootehfoot has joined #osdev
KaosHaecksen is now known as KaosHaeckse
KaosHaeckse is now known as KaosHaecksen
Turn_Left has quit [Ping timeout: 248 seconds]
bgs has joined #osdev
kof123 has quit [Remote host closed the connection]
pog has joined #osdev
<kaichiuchi> yeah essentially
<kaichiuchi> well, the problem is debug performance is pretty bad for people who have to care about it (e.g. game developers)
<kaichiuchi> until now, if you'd use std::move() on -O0, it would generate a call instruction instead of just doing static_cast<T&&>() and that would be a problem if you're doing anything <algorithm> like in a critical path
Left_Turn has joined #osdev
Burgundy has joined #osdev
vdamewood has quit [Quit: Life beckons]
<sham1> <algorithm> at the critical path sounds like trouble
gildasio has quit [Ping timeout: 255 seconds]
gildasio has joined #osdev
epony has quit [Remote host closed the connection]
vdamewood has joined #osdev
epony has joined #osdev
[itchyjunk] has joined #osdev
Burgundy has quit [Ping timeout: 272 seconds]
KaosHaecksen is now known as Freja
papaya has joined #osdev
heat has joined #osdev
<heat> pog
<moon-child> heat
<zid> teeth
<zid> choon-mild
wootehfoot has quit [Ping timeout: 260 seconds]
<kaichiuchi> heat: dong
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 256 seconds]
Matt|home has joined #osdev
<heat> 🅱️
freemint has joined #osdev
<pog> meow
<zid> hello poggers
<marshmallow> if I understand this correctly, on arm64, EL1 can use both SP_EL0 and SP_EL1. why would you actually ever want to have two sp registers, instead of using one (normal kernel stack thread), just spill the value onto the stack and move a new value onto sp for kernel stack interrupts?
<zid> arm has fred? jelly
<marshmallow> if I understood correctly, in EL1, SP_EL0 is not userspace sp.
<zid> irq stack vs syscall stack?
<zid> there's a bunch of arm nerds here, but I ain't one of them
<marshmallow> like, if EL1 could only use SP_EL1, you could simply avoid spilling SP_EL0 onto the stack. instead, if I see this correctly, you also need to save userspace sp upon entering EL1
<marshmallow> (cc/ heat, geist)
<zid> Do we think that honzuki is coming out today, more importantly, with it being the holidays
terminalpusher has joined #osdev
<kaichiuchi> i've gone down the rabbit hole of stories of game developers caring about debug performance
<kaichiuchi> and all I can think to myself is they must be geniuses if they can make anything super performant on MSVC
<kaichiuchi> i did not realize how far these guys had to go
<zid> debug builds? in my studio? It's more likely than you think
<zid> why do I only get 6GB/s on memcpy
<pog> cosmic rays
<zid> using cosmic rays to encode the copy woudld be faster
<kaichiuchi> i mean, of course I understand that debug builds are important
<kaichiuchi> but somehow it never occurred to me that yes, 16ms to 7ms/frame is *hard* in debug mode
<kaichiuchi> can't test a game if it isn't playable
<zid> SSE2 2-pass nontemporal copy: 2781.9MB/s
<zid> This seems very fucky
<kaichiuchi> your face
<zid> is very fucky? I know
<pog> oopsy woopsie we made a fucky wucky your data is now cowwupty
invalidopcode has quit [Remote host closed the connection]
invalidopcode has joined #osdev
<zid> at least aida knows what a number is
[itchyjunk] has quit [Remote host closed the connection]
justmatt has quit []
justmatt has joined #osdev
justmatt has quit [Client Quit]
justmatt has joined #osdev
<epony> wet floor loose cables high voltage dorky walks
justmatt is now known as justmatt_
justmatt_ is now known as justmatt
Terlisimo has quit [Quit: Connection reset by beer]
justmatt has quit []
justmatt has joined #osdev
Terlisimo has joined #osdev
foudfou_ has joined #osdev
foudfou has quit [Ping timeout: 255 seconds]
gxt has quit [Ping timeout: 255 seconds]
gxt has joined #osdev
<heat> marshmallow, "Holds the stack pointer associated with EL0. At higher Exception levels, this is used as the current stack pointer when the value of SPSel.SP is 0."
<heat> sounds like it's the userspace sp to me
xenos1984 has quit [Ping timeout: 252 seconds]
xenos1984 has joined #osdev
foudfou_ has quit [Quit: Bye]
foudfou has joined #osdev
<marshmallow> sounds like it to me too
<marshmallow> other doubt: do the TTBR registers actually store a virtual address or a physical address?
<j`ey> physical
<marshmallow> uhmm, why would you want to store the physical address? shouldn't it point to the virtual page table root address, which eventually would lookup its physical address?
<zid> how's it going to find it
justmatt_ has joined #osdev
Matt|home has quit [Ping timeout: 248 seconds]
justmatt_ has quit [Client Quit]
justmatt has quit []
<marshmallow> uhmm, no, ok, right, my bad :P
<zid> First you erm
<zid> and then uhh
<zid> I've carefully written the address on this postcard, then put it inside this sealed envelope.
<marshmallow> and given a virtual address, ranges of bits of such an address are used as index to guide the MMU page table walk process?
<j`ey> yep
<zid> yea that's a decent way to look at it
<zid> alternatively it's a big trie and each layer cares about a different set of bits, which is slightly more complicated
<marshmallow> so eventually the MMU really needs to know two things: TTBR register value and the virtual address the kernel is accessing?
<zid> and presumably some permissions stuff
<zid> idk what arm's page tables look like
<j`ey> you know the concept
<zid> they might only use MTRRs or something for permissions for all I know though
<marshmallow> aren't the permissions bits embedded in the address the TTB register contain though?
Matt|home has joined #osdev
<j`ey> theres no permission bits in the TTBR register values
<marshmallow> sorry, the PTE contains the permission bits
<marshmallow> which can be looked up through TTBR
<zid> same as x86 then
<zid> so I guess the main difference is just the weird sizes arm supports
Matt|home has quit [Killed (NickServ (GHOST command used by Matt|afh!~Matt@2601:580:c002:1100:628e:4ef9:f3e5:4fb5))]
Matt|home has joined #osdev
<j`ey> but those are the same for 4K
<marshmallow> just to ensure I understood, can we conclude that page tables all live in physical RAM?
<zid> everything lives in physical ram
<marshmallow> yeah sorry
<zid> Unless you have a supply of ghost ram
<zid> SpooooOoooKy
<Matt|home> zid - i thought some stuff in the address space had it's own dedicated rom chips or whatever :p /pedantic
<zid> pedantic and wrong, the best kind
<zid> ram is all in ram, not rom
<marshmallow> can you access a page table through its virtual address?
<Matt|home> am i? damn
<Matt|home> oh i don't feel good..
<zid> you can access the physical memory the page tables reside on yes
<zid> else you wouldn't be able to change what they contain
<zid> that'd be a bummer
<heat> I don't know how ARM does things but modern x86 can do page tables in cache (or is it ROM? *shrug*)
<zid> infact, you have to, given there's no real way on most cpus to access physical memory directly, besides diabling the mmu
<zid> which might not even be possible
<epony> so, you're just now learning about register-register operations ehm?
<marshmallow> I think what I'm missing is to abstract out the concept of page table
<zid> the two major strats are "map all of physical memory into memory" and "recursive mapping" btu don't let g*ist hear I said the latter
<heat> fun fact: intel x86 processors hang if the CPU internal stuff (like accessed bits in the GDT and page tables) tries to write to ROM
xenos1984 has quit [Ping timeout: 248 seconds]
<heat> zid, you mean 1 legit strat and a wrong strat
<marshmallow> zid: doesn't the cpu issue / operate on physical addresses only?
<heat> no?
<zid> the address bus does
<zid> the *cpu* operates on virtual addressing almost exclusively
<zid> because that's what it talks to the mmu with
<zid> and the mmu does a translation to physical with its 'fancy lookup table'
<zid> mmus can be entirely external and hard-wired in, in which case it's literally impossible to deal in physical addresses
<heat> recursive mapping doesn't work as a real design
<heat> prove me wrong
<marshmallow> zid, sorry but isn't the mmu to talk to the cpu, and not viceversa?
<heat> no
<zid> "mmu, pls give me content of address 7" "okay, data is 4"
<marshmallow> but eventually the cpu accesses physical address, no?
<zid> mmu behind the scenes: Take 7, look up in big dictionary, is physical address 2378200007, ask ram for that, get 4
<marshmallow> uhmm OK
<heat> marshmallow, what's the difference?
<zid> if the mmu is integrated into the cpu, technically yes? but like, conceptualness wise, not really
<heat> the MMU IS the cpu
<marshmallow> I thought they were two different part actually
<Krypta> cant u access \Device\PhysicalMemory on windows
<zid> You can access anything you like, the question is *how*
<pog> you need to be running as SYSTEM to access that iirc
<heat> whether your MMU blackbox takes an address and an operation and has the data and some extra metadata as output or your MMU blackbox takes an address and returns a physical address is meaningless
<pog> or fiddle with the registry to change its permissions
<heat> it's all CPU
<heat> and your MMU blackbox will probably just return you a physical address anyway
<heat> for proper caching stuff to take place
<zid> eww physical memory caching
<zid> heat ur gross
<heat> wuv u
<kaichiuchi> i hate you
<kaichiuchi> do you know why I hate you
<heat> the hate is strong
<heat> why
<kaichiuchi> because you didn't get me a threadripper for christmas
<heat> buy me 2 threadrippers and I'll get you 1
<Ermine> Don't get overheated
<zid> threadripper sucks
<zid> who the fuck wants a webserver cpu
<Ermine> At least it goes brrr
<heat> I can still get Ermine a threadripper for christmas
<heat> suck it catholics and protestants
<zid> W-1390P pls
<heat> orthodox best!111!!!!!111111111111
<zid> If you get me a W-1390p I will convert
<Ermine> Yaaaaay!!!!!!11!!
<kaichiuchi> i need to go to a gym
<zid> oh is heat into chads?
<kaichiuchi> no
<moon-child> zid: I'll get you a W-1390p if you get me a W-2295
<zid> 2295 also very gud
<kaichiuchi> it's me being almost 30 and I haven't done any serious exercise whatsoever since high school
<kaichiuchi> it's catching up
<heat> i'm a chad
<zid> heat looks like one of those men with another man climbing out of their torso
<zid> which makes no sense unless you've seen one before
<heat> I have social media and follow all kinds of sports and practice sports and go to the gym
<heat> chaddus maximus
<kaichiuchi> please tell me you're joking
<heat> i'm not
<moon-child> W-2295 has 2.25x as many threads, which means it's 2.25x guder
* Ermine starts playing 'Can You Feel My Heart'
<moon-child> lol
<heat> zid, hahahaha
<kaichiuchi> a part of me is too afraid to go the gym though
<heat> kaichiuchi, why
<kaichiuchi> i'm not obese or anything, but I fear I'll look ridiculous
<heat> who tf cares
<zid> gym here is full of women trying not to 'accidentally' get a 12 pack
<kaichiuchi> i'm a programmer, not arnold schwarzenegger
<moon-child> huh?
<kaichiuchi> fun fact: a 6 pack is a sign you are doing something wrong
<zid> They think that if they get too close to a weight, they will suddenly have dedicated several years
<zid> and be genetically lucky
<moon-child> kaichiuchi: what's wrong with it? I had one, when I was fitter
<Ermine> kaichiuchi: You won't change how you're looking like if you don't go to gym
<zid> nothing
<zid> he's just got baggage
<kaichiuchi> if you have a very well defined 6 pack, it means you're not eating properly
<heat> no.
<moon-child> huh I have one now ... have been exercising a bit more lately
<moon-child> to be clear, it only appears when I tense my abs
<zid> high body fat literally kills you
<kaichiuchi> I'm not saying it's better to be fat
<kaichiuchi> .
<zid> best thing to keep lab rats alive is starving them
xenos1984 has joined #osdev
<kaichiuchi> i'm saying that _too_ little fat is a bad thing
<zid> never shown
<heat> having a little fat isn't unhealthy but it's also not necessarily healthy
<zid> the more you eat the more cancer you get
<zid> because your stomach lining etc replaces itself more, true fact
<kaichiuchi> the problem is if you don't have enough fat, you're at higher risk for injuries and various hormone issues
<heat> if you have less muscles you're also at higher risk for injuries
<Ermine> If you lack fat you can just eat more
<kaichiuchi> i understand that I sound like a crazy person right now
<zid> if I ever die from being punched cus I had 4% body fat and not 8% I will bow down to your wisdom
<zid> redo my life over with more bodyfat
<heat> the fittest athletes in the world have 10% body fat
<heat> you don't need 10% body fat for a 6-pack though
<zid> think you've highballed a little there
<heat> i have not
<kaichiuchi> no
<friedy> eibcccunctjuudtvddefelffinkvjnnninictkkcrenu
<kaichiuchi> 10-15% is around there
<kaichiuchi> friedy: nice yubikey
<zid> depends what kinda athlete, anyway
<zid> darts players are more like 50%
<heat> "Wittich et al. (2001) [11] indicated that fat content in the body of football players varies from 6.1% to 19.5%,"
<moon-child> ditto bowlers
<heat> the only sport.
<zid> gymnasts slightly less
<kaichiuchi> just saying that one should do what's healthy, and not to attain a certain look
<heat> sure
<zid> (not what you said, but I agree with this)
<kaichiuchi> but yeah, gyms scare me
<kaichiuchi> everyone says they shouldn't
<zid> everywhere scares me
<Ermine> Don't be scared
<zid> I am socially anxious
<zid> gym no different to library
<Ermine> Be masculine
<kaichiuchi> is that why you stay on IRC talking to us imaginary friends
<zid> yes
<kaichiuchi> same.
<heat> we're all imaginary
<zid> this is multiplayer notepad
<zid> but I am the only player
<zid> you are all npcs
<kaichiuchi> i've met a few people from IRC in real life
<kaichiuchi> that was awesome
<Ermine> everything is a product of your mind
<kaichiuchi> also, I actually can't go to a gym until I get cleared by my doctor technically
<zid> is that because you have boneitis
<kaichiuchi> no
<zid> I can't go to the gym, I have a bone in my leg
<zid> it's huge too, like 2 feet long almost
<zid> wouldn't wanna risk it
<kaichiuchi> heat: it's soccer, isn't it
<heat> kaichiuchi, what is
<kaichiuchi> what sport you follow
<heat> yeah *football*, also tennis, also basketball sometimes
<zid> follow is a little weak, I'd call him more of a stalker
<zid> heat: Which player has the sexiest legs rn?
<heat> hmmm
<kaichiuchi> you know
<heat> hard question
<kaichiuchi> if it wasn't absolute hell on earth
<kaichiuchi> I would love to work at a game studio
<heat> I think ronaldo has some huge fucking legs but he's also a bit of a egomaniac
<zid> wow gay, I'd have said rachel daly or lucy bronze or something
<heat> so big legs, yes, but the personality kind of ruins the sexiness IMO
<heat> lol
<zid> I learned something new about heat today
<heat> i don't like thick legs on women because then i'll look like a twink
<zid> I already look like a twink, I don't mind if she can crush me
<zid> that's fine, so is looking like we might actually rub together and start a fire
<kaichiuchi> what the fuck
<kaichiuchi> is this really osdev
<zid> yes
<zid> I'm planning tomboyOS
<zid> this is market research
<heat> ronaldOS
<heat> hehehe siuuuuuuuuuuuuu
<zid> yea we can cut a special heat release full of male footballer's legs
<heat> are you the type of guy to follow female footballers and comment "you're so beautiful darling, i've sent u a msg"
<Ermine> messiOS when
<zid> no way would I send a message to anybody
<zid> More like "I made you an entire house out of my own fingernails, please notice me without me saying anything"
<jimbzy> Wow.
<pog> dang that's a lot of fingernails
<jimbzy> Sounds like some Howard Hughes-level stuff.
<zid> lay down in a puddle in case she wants to cross the road over me
<heat> idk, what's the scale?
<jimbzy> Just...show me all the blueprints.
<heat> is it a doll house, small apartment, mansion?
<pog> a modest family home
<zid> oh this guy doesn't seem too bad, I had to wikipedia him
<zid> I thought it was going to be a giant pervert's wikipedia page but it's an industry magnate
<jimbzy> Who?
<zid> the only named person
<jimbzy> Howard Hughes?
<heat> me
<zid> in the past 20 minutes
<heat> ronaldo?
<jimbzy> I came in mid-conversation, zid, and my bouncer is not great at logging :p
<zid> you're the one who said his name >_<
<jimbzy> I thought everyone knew who Howard Hughes was :p
<heat> no clue
<zid> no clue
<heat> ah yes the planes guy, I remotely know him from Phineas & Ferb(?)
<jimbzy> Wow. He was a huge perv.
<zid> jimbzy: do you know who isambard kingdom brunel is?
<heat> do you know who lucy bronze is?
<jimbzy> Sounds familiar
<jimbzy> No
<zid> americans love rich people, probably has a sticker album like heat's
<heat> me neither
<zid> but instead of footballers it's oil barons
justmatt has joined #osdev
<heat> football sticker albums were like half my childhood
<zid> I had 8 copies of peter shmichael
<zid> bastard
<zid> I needed a shiny david ginola
<heat> I distinctly being like 5 years old and learning how to use microsoft word to type "UEFA Champions League 2007/2008" straight from my sticker album
<zid> heat do you have a shiny ginola
<heat> schmeichel btw
<heat> i'm afraid not
<zid> we're both missing him then? smh
<heat> do you have a ronaldinho?
<heat> I need him to complete AC milan
<zid> he wasn't famous yet
<zid> ac milan was 2008-2011
<zid> I'm talking 2001 or something
<heat> 2001 ginola was an old ass ginola
<heat> you sure?
<zid> yea he played for aston mar^W
<zid> saton villa
<bslsk05> ​www.the-racketeer.co.uk: Merlin s Premier League 99 Album and 208 Stickers
<zid> That's.. surprisingly cheap
<zid> tottenham in 99 apparently
<heat> oh look Michael "Tremendous by the way" Owen
<zid> All my fooball knowledge ends in 1999 btw
<heat> what was your team
<zid> chelsea I guess? I liked the colour
<zid> aston villa also good colours
<zid> plus the cool friend I had liked chelsea
<heat> give me your shiny ruud gullit
<zid> no way
<zid> It's my dreadlock mullet
<zid> you can't have it
<jimbzy> I don't really get into football aside from the World Cup. I used to watch Premiership Rugby, but they quit showing it regularly here. :(
<jimbzy> 7s, too.
<heat> zid, i'll give you my ryan giggs so you can complete your collection of "exemplary footballs players that will never do anything wrong, ever"
<zid> Ryan giggs is lame
<zid> Who's that dreadlock keeper who did the scorpion kick save
<zid> I want him
<heat> higuita
<zid> see, I knew you'd know
<heat> jimbzy, you should give it a watch, it's fun
<jimbzy> I'd have to find an online source because they don't show much on the tele here.
<heat> personally I find it infuriating to look at US sports with all the ad breaks and slow pace
<zid> same
<kaichiuchi> god
<heat> where, US?
<jimbzy> Midwest.
<kaichiuchi> some gcc builtins are so fucking useful that I can't believe they haven't made it into the standard
terrorjack has quit [Ping timeout: 265 seconds]
<heat> I know they show a lot of Premier League in the US, I don't know if the location matters though
<jimbzy> It comes and it goes. Sometimes it seems like they'll show matches and other times you don't find much.
<heat> kaichiuchi, which ones?
<zid> kaichiuchi: You have been banned from r/C_Standards_Committee
<kaichiuchi> case ranges come to mind
<jimbzy> Maybe it depends on what the local sportsball teams are doing?
<heat> that's not a builtin
<kaichiuchi> *extensions
<kaichiuchi> sorry
<heat> case ranges are probably non-trivial to support so they're not standardized
<kaichiuchi> probably
<jimbzy> I usually follow Leicester City when I can follow along.
<zid> You know what is a builtin? cpuid.
<zid> There's a bunch of them
<zid> __cpuid_leaf_func_pls(34)
<heat> jimbzy, yeah probably. for instance, I think they don't market football a lot in atlanta because (AFAIK) the atlanta united thing is pretty big there
<heat> s/football/european football/
<zid> I don't even know who is in the prem atm
<jimbzy> We just got a SC in St. Louis
terrorjack has joined #osdev
<zid> wait what, brighton & hove albion!?
<zid> bournmouth!? brentford!?
<heat> see, it's surprising and fun
<zid> It's surprising, sure
<heat> which is why they should switch to a franchise system
<heat> what if someone gets a stroke from all the excitement?
<zid> The first Premier League match to be played outside England was Swansea City's home match at the Liberty Stadium against Wigan Athletic on 20 August 2011
<zid> That's kinda interesting
<jimbzy> My summers are dedicated to baseball, aka The Most Boring Sport In the World.
<zid> baseball is vaguely interesting
<zid> baseball simulator 1000 is a good game, and there was a good anime
<jimbzy> I enjoy listening to a baseball game on the AM radio.
<heat> I don't get baseball
<jimbzy> Rounders?
<heat> american football looks more fun but there's also a lot of stoppage. I heard that a good bit of the game is just coaches coaching with the clock stopped
<zid> https://www.youtube.com/watch?v=l-a_Rl6hJys This is all you need to know about baseball
<bslsk05> ​'Super Baseball Simulator 1.000 Tournament #9 (reverse tourney!)' by TheSuperSNES (03:53:00)
<jimbzy> Yeah, American football is hit and miss.
<heat> basketball is infuriating to me because 1) the game is fun 2) intense bursts of excitement get stopped by <break> or <timeout> or <foul> or ...
<zid> That's why baseball simulator 1000 is the best
<jimbzy> It used to be worse, heat.
<jimbzy> The fouls have gotten worse because the whole game is based on driving straight to the basket, but they used to call traveling and shit all the time.
<kaichiuchi> you know, I swear, I never know when to use constexpr
<zid> when it's a const expr would be my guess?
<kaichiuchi> of course, in shit that can be done at compile-time
<jimbzy> I'd rather watch someone get the bucket and the bruise than the game get stopped because someone outside shuffled their feet while pivoting.
<kaichiuchi> yeah but I can apply the keyword to literally almost anything I'm doing
<kaichiuchi> even if it's not a "constant expression"
<zid> won't that not compile
<kaichiuchi> no
<kaichiuchi> it compiles.
<zid> won't that fuck up at runtime
<kaichiuchi> no
<kaichiuchi> it works
<zid> don't believe
<heat> jimbzy, and its based on cheap fouling now because they call stupid things all the time
<heat> (except actual dangerous fouls)
<jimbzy> It's a power game now.
<kaichiuchi> zid: for example, doing something like `constexpr Reset() { reg.bc = 0xDEAD; reg.de = 0xF00D; ... }` actually does work
<heat> jumpshot? kick your legs out so it looks like the defender is sweeping your legs and boom, foul
<kaichiuchi> er, constexpr void*
<jimbzy> You still have some sharpshooters, like Curry, but it's mostly about driving through traffic.
<kaichiuchi> some people on google say "make everything constexpr"
<kaichiuchi> some people on google say "this is stupid"
<kaichiuchi> what is truth
<zid> That sounds like C++
<zid> some people say mandatory, some people say evil
<heat> jimbzy, naw, it's based on 3s and (secondarily) driving to the basket
<heat> even centers need to shoot now
<jimbzy> I don't see it, but then again I don't follow it like i used to. I wasn't impressed with the last few games I watched.
<kaichiuchi> scott meyers says "use constexpr whenever possible"
<kaichiuchi> thanks, that's a big help
<kaichiuchi> the compiler accepting it doesn't mean that it's ideal
<jimbzy> heat, Do you think D has become obsolete?
<kaichiuchi> no D has done everything modern C++ has done 20 years ago
<jimbzy> XD
<heat> jimbzy, I think a good D player is more valuable now because it's stupidly easier to score
<HeTo> kaichiuchi: you're modifying a global variable in a constexpr function and the compiler accepts it? that doesn't sound right
<kaichiuchi> what no
<kaichiuchi> no no no
<jimbzy> Yeah, but with all the fouls how can anyone actually defend?
<heat> being very careful, smart, good position, and flopping
<heat> you can't just handcheck your opponent away
<jimbzy> Ah, the good old days.
<bslsk05> ​godbolt.org: Compiler Explorer
<kaichiuchi> there's no way in hell CPU::Reset is ever going to produce a compile time expression
<kaichiuchi> I guess constexpr is more or less "yeah, try to evaluate at compile-time, and if you can't, it's ok, just do it a runtime"
<kaichiuchi> at*
<heat> I don't see why not
dude12312414 has joined #osdev
<jimbzy> heat, I haven't watched bball regularly since the late 90's, so you'll have to forgive my ignorance ;)
<kaichiuchi> hm maybe it could actually
<HeTo> kaichiuchi: why not? I could do constinit auto cpu = CPU{}; for example, and say if this was a statically allocated variable, it could be allocated in the data segment and would be initialized at compile time
<jimbzy> I think I'm gonna kick back and read my ARRL General Class license manual. I'm not doing too well on these practice questions. :(
<kaichiuchi> HeTo: ah
<kaichiuchi> okay
<HeTo> kaichiuchi: also one piin
<zid> I like how heto actually responds
<zid> if you accidentally ping him instead of heat
<zid> or otherwise
<HeTo> kaichiuchi: also one point is that you could run your unit tests at compile time and thus make sure there is no undefined behaviour of particular kind
<kaichiuchi> right
<kaichiuchi> hm.. i never thought about that
<HeTo> although I haven't seen a testing framework yet that would support that
<kaichiuchi> currently I just use gtest
<jimbzy> zid, Just jumped right in, didn't they?
<heat> jimbzy, ofc, no problem :) I think that you can't really be a "defensive player" anymore but if you can't defend for shit you need to be great at offense (and still defend a bit).
<zid> I actually love the idea of constexpr a la C, but it's a little awkward wrt "this only works on good compilers"
<heat> if you drop 30 points and someone drops 30 points on you, box plus/minus of 0, you had 0 impact on the game
<zid> It'd be better if there was a way to somehow deal with that
<bslsk05> ​'“Constexpr Everything” - The Standard Library, Microkernel, Apps, and Unit Tests - Rian Quinn' by CppCon (00:59:54)
<zid> There's a fun macro for determining if things are constexpr that people use for C
<jimbzy> Yeah.
<HeTo> awhole microkernel, they claim almost all of it is constexpr and has been unit tested at compile time
<zid> (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
<jimbzy> I used to love watching Hakeem ply his trade.
<zid> it abuses the mandatory detection whether (void *)x is a null pointer or not
<zid> if x is an expression which is 0, it's a null pointer constant
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
terrorjack has quit [Ping timeout: 264 seconds]
terrorjack has joined #osdev
[itchyjunk] has joined #osdev
<kaichiuchi> HeTo: i like this talk
joe9 has joined #osdev
dude12312414 has quit [Remote host closed the connection]
dude12312414 has joined #osdev
justmatt has quit [Ping timeout: 252 seconds]
justmatt has joined #osdev
justmatt has quit [Client Quit]
wikan has joined #osdev
epony has quit [Quit: QUIT]
Burgundy has joined #osdev
<heat> chatgpt sucks
<heat> >how to write to a btree
<heat> [...]For example, if you are using the ext4 file system on Linux, you can use the btrfs utility to manipulate B-trees. To write to a B-tree, you can use the btrfs subvolume snapshot command to create a snapshot of the B-tree, modify the snapshot, and then use the btrfs subvolume delete command to delete the original B-tree and replace it with the modified snapshot.
<heat> i dont get the hype, this is just nonsense
<Krypta> you just need to give it enough context. ask it "how to insert an element into a btree"
<Krypta> "in C++"
<clever> heat: i also dont really get the hype, but i wrote some code to analyze the save-game files for something, and then somebody else shoved my code into chat-gpt
<clever> it gave a surprisingly accurate description of what the code did
<clever> but i can only see it answering general coding questions, for things that already have examples online
<clever> it cant help you RE closed-source hardware, for ex
<moon-child> heat: lmfao
<clever> and if the answer is already online, you should know how to find and read that
<Krypta> The people are also discussing the concept of a microkernel, a small core of code that provides the basic functions of an operating system and serves as the foundation for the rest of the operating system. They are discussing how much of a microkernel can be "constexpr" and how it can be tested.
<Krypta> Finally, the people seem to be discussing the use of YouTube videos as a resource for programming and how they can benefit from them. They also share a link to a specific YouTube video.
<heat> Krypta, >how to insert an element into a btree in C++
<heat> To insert an element into a binary tree in C++, you can follow these steps:
<Krypta> they seem to be split testing it with many slightly different instances. for some people it works very good, for other ones it's rather stupid
wikan has quit [Quit: Leaving]
<Krypta> for me there was also a period of a few hours where it always appended "I hope this answer helped you!" to every answer which it didn't do before and after
<heat> this is very dangerous
<heat> >show me an ext4 filesystem inode's layout <-- shows me linux's (GPLv2 licensed) ext4_inode struct
<heat> verbatim
joe9 has quit [Quit: leaving]
wootehfoot has joined #osdev
<kaichiuchi> heat: i'm cold
<kaichiuchi> can you do something
<kaichiuchi> idea: everyone compile LLVM and I'll sit in the middle of the PCs
<papaya> we had rolling blackouts here over the weekend b/c of the cold, it sucked
sonny has joined #osdev
<sonny> Is a hypervisor specific to an OS?
<j`ey> no
<moon-child> could be
<moon-child> most likely will have to do os-specific stuff, if it wants to use hardware acceleration
<sonny> ok, thanks
<geist> ugh internet has been off and on all day
<moon-child> (talking about the host, to be clear. Guest almost always isn't, though there may be passthrough interfaces which the guest can support, which in the limit is 'paravirtualisation')
<geist> finally somewhat stable, but ipv6 routing seems to be broken somewhere upstream, so in that kinda half-life where half of the internet seems to get stuck
<moon-child> that's what you get for using ipv6
<kaichiuchi> so does that mean you truly are a ghost
<pog> hi
<geist> well, in general it's perfectly fine, but indeed having a dual stack means yuo can end up in a sort of weird limbo where half of the things dont work right
<geist> though i guess thats strictly better than not working at all
<geist> anyway like forever ago someone was asking about SP_EL0 and SP_EL1
<geist> did they get answered?
<geist> marshmallow
<zid> we decided to just shoot them and bury the body I think, but my memory is a little hazy
<sonny> When you virtualize apps that use graphics, you also emulate the hw is uses. Is it possible to make the guest think that the host screen is the guest screen?
<geist> sure
<geist> i forget what the full proper name is for that but you can also via hardware assist and/or clever hypervisor work arrange for guests to be directly accessing real hardware
<heat> virtio-gpu
<heat> erm no
<heat> pci passthrough
<geist> something like the host framebuffer is fairly straightforward, but mapping something like an ethernet card or whatnot, right
<heat> apparently these days you can passthrough linux's drm subsystem through virtio-gpu
<zid> good news, book came out
<sonny> nice
<pog> mazel tov
<heat> "why doesnt my mic work"
<heat> because it muted itself wtffffff
justmatt has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<geist> cool, v6 is back now
<pog> heat
<pog> heat heat
<heat> pog
<pog> bazinga
<zid> heat's mic knows what's up
bgs has quit [Remote host closed the connection]
<sham1> This is some poggers discussion fr fr
<sham1> Great for a quick ~~vine~~ tiktok
<zid> ~~ is so 2020 sham
<zid> real kids use ^W
epony has joined #osdev
<sham1> Not in Markdown the don't, because that's a superscript
<zid> This is IRC
<zid> I'm saying we unix beards use readline syntax, not markdown
<heat> zid, have you used your LTO'd gcc?
<zid> I have
<zid> I built gcc with it :D
<heat> is it fast?
<zid> I have no idea!
<pog> was it funroll-loops fast
<heat> I built an LTO'd one and it tanked my build
<zid> btw gcc must know that gcc source is trash
<zid> it builds itself -O2
justmatt has quit [Quit: No Ping reply in 180 seconds.]
justmatt has joined #osdev
Matt|home has quit [Ping timeout: 255 seconds]
<pog> ope
<bslsk05> ​github.com: linux-pam/pam_client.h at master · linux-pam/linux-pam · GitHub
<zid> gentoo'd
dude12312414 has joined #osdev
justmatt_ has joined #osdev
justmatt is now known as justmatt__
dude12312414 has quit [Client Quit]
justmatt_ is now known as justmatt
justmatt__ is now known as justmatt_
justmatt_ has quit []