Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Monday, 16 January 2023

10:37:00 <gog> moin
10:37:00 * moon-child pets gog
10:38:00 * gog prr
10:38:00 <gog> moon-child: play factorio with me, kerio and deepy later
10:39:00 <moon-child> ehhh
10:39:00 <moon-child> I've been off of factorio for 2 years now, I don't wanna relapse
10:39:00 <gog> 3:
10:40:00 <QuietlyConfident> moon-child: do it coward
10:41:00 <zid> I'm playing rn
10:41:00 <zid> kerio as in edoardo spadolini?
10:42:00 <QuietlyConfident> who else
10:42:00 <QuietlyConfident> the one and only, obviously
10:42:00 <QuietlyConfident> also how do you know kerio :O :monocle:
10:43:00 <zid> kerio's a little weenie
10:43:00 <zid> tell him that for me
10:43:00 <moon-child> QuietlyConfident: i bet he just ran whois
10:43:00 <moon-child> and doesn't actually know who kerio is
10:43:00 <moon-child> what a loser
10:43:00 <zid> and his password is blackbear
10:44:00 <heat> bazungo
10:44:00 <zid> QuietlyConfident: My nethack password was just known cus idgaf, kerio was the only one who logged into it to change my fruit name
10:45:00 <zid> so I hacked the channel bot, dumped the user database, decrypted his password, and changed his too.
10:45:00 <moon-child> what
10:46:00 <zid> You heard me.
10:46:00 <QuietlyConfident> zid: which server tho
10:46:00 <QuietlyConfident> NAO or ascrun?
10:46:00 <zid> nao ofc
10:46:00 <QuietlyConfident> lmao
10:46:00 <zid> fuck is ascrun
10:46:00 <QuietlyConfident> ascrun was kerio's server
10:46:00 <QuietlyConfident> it's retiredn ow
10:46:00 <zid> yea there's 0% chance I'd have played on that, weenieville
10:46:00 <QuietlyConfident> lmao
10:47:00 <QuietlyConfident> zid: im one of the top best nethack players in the world ever btw, have ascended in under 2 h
10:47:00 <moon-child> or
10:47:00 <zid> I had the #3 spot on hsn at one point
10:47:00 <moon-child> or
10:47:00 <zid> me zadir and art
10:47:00 <moon-child> my one claim to fame is that I was almost the first person to ascend 3.6.2
10:47:00 <moon-child> but then I died
10:47:00 <zid> then berry decided he wanted the top 100 all to himself :P
10:47:00 <zid> I have 100% ascension rate in ais' nethack four
10:47:00 <QuietlyConfident> that bastard
10:47:00 <zid> cus I played it once during junethack
10:47:00 <zid> hardfought pls, moon-child
10:48:00 <lockna> Does anyone have some good sesources about how to implement a devfs?
10:48:00 <zid> *goes to check on his rice*
10:48:00 <QuietlyConfident> zid: I also have the #2 bonesless non-TAS turncount speedrun record for nh 3.6.x and the #1 turncount overall for nh 3.7.0
10:49:00 <zid> yep, still rice
10:49:00 <zid> I never liked 3.6
10:49:00 <zid> I just liked abusing the speed system to get through the painfully awkward early game, then doing the trivial lategame
10:50:00 <zid> "let's make the early game randomer" k bye
10:50:00 <QuietlyConfident> coward
10:50:00 <heat> lockna, what do you not
10:50:00 <heat> s/not/need/
10:50:00 <lockna> pardon?
10:50:00 <heat> what do you need?
10:51:00 <zid> how does the 'node' system work that linux has? (had?)
10:51:00 <heat> how to implement a devfs mostly depends on your kernel's design and if its a UNIX
10:51:00 <zid> but the dynamic stuff seems simple enough
10:51:00 <zid> driver registers a filename in the vfs
10:52:00 <lockna> Yeah, well I thought about a pdf or something about how linux/bsd/solaris/sunos implemented there devfs?
10:52:00 <zid> then implements read and write and open and close
10:52:00 <lockna> Yeah, well I thought about a pdf or something about how linux/bsd/solaris/sunos implemented there devfs
10:52:00 <heat> at the end of the day a typical UNIX devfs is just something with a bunch of device files in there
10:52:00 <heat> traditionally you do it statically but people moved towards dynamic for a good while
10:52:00 <heat> i.e linux's devtmpfs is just tmpfs with a bunch of pre-populated device files
10:54:00 <lockna> Hmm, okay. In oriented my vfs design on how BSD did it but I don't really seem to understand how bsd manages devices (like relations between virtual node, device struct, device operations, vnode operations)
10:56:00 <heat> ok
10:57:00 <heat> i guess the struct device is just the generic thing they look up when opening a device file
10:57:00 <heat> (right? I have no idea about BSD)
10:57:00 <zid> (heat is a freebsd nerd, he's holding out on you)
10:57:00 <heat> i am Mateusz Guzik
10:57:00 <heat> you can reach me for questions or hot dates
10:59:00 <heat> (or why not both 😳😳)
11:00:00 <zid> driver.c: v = vfs_make_dev_fiel("video0"); = driver_read; v.write = drier_write;
11:00:00 <zid> I am a geniuar
11:01:00 <lockna> I'm not sure about that either, how they look up a device. When they create a new devfs node, they have a function called devfs_link which gets the device struct as argumment and creates a new node in the devfs. But as far as I can tell from the struct defintions, the vector for device operations is different from file operations (which is somewhat very logical) but how does is a vnode able to hold a device if its a device node? The device has a reference
11:01:00 <lockna> to the vnode, but not the other way around
11:01:00 <lockna> So how does the vnode on read know to call read on device, when the read is different from the read in vnode_operations_vector
11:03:00 <heat> lockna, since i don't know how your thing works, here's my impl:
11:03:00 <bslsk05> ​ Onyx/dev.cpp at master · heatd/Onyx · GitHub
11:04:00 <lockna> heat, thank you
11:05:00 <heat> inode_special_init does lookup on struct inode creation
11:05:00 <bslsk05> ​ Onyx/inode.cpp at cfca8d895c0c5df3472ad9df419032e7ccea7939 · heatd/Onyx · GitHub
11:06:00 <heat> individual filesystems then call it
11:06:00 <heat>
11:06:00 <bslsk05> ​ Onyx/tmpfs.cpp at fc5adba69590d42eb3d199779ea314b9367f2a85 · heatd/Onyx · GitHub
11:07:00 <heat> lockna, np
11:09:00 <zid> My rice was nice.
11:13:00 <QuietlyConfident> nice rice :3
11:14:00 <zid> basmati, good wash, salt, 1 drop of sesame oil, boil (and then steam), let it rest a bit to dry out
11:14:00 <zid> dump to plate, add chilli, bon preservati
11:14:00 <zid> tif*
11:20:00 <gog> nice
11:33:00 <epony> measure you blood glucose level now and dump to the floor for 20
11:45:00 * QuietlyConfident drops and does... 10
11:45:00 <QuietlyConfident> i cant do 20 in one :<
12:05:00 <zid> did you tell kerio he's a weenie
12:14:00 <QuietlyConfident> yep
12:14:00 <zid> good good
12:14:00 <QuietlyConfident> but of course, this was already a well-known fact :^)
12:22:00 <zid> yea it was more, "let him know that I know that he's a weenie"
12:42:00 <QuietlyConfident> makes sense
12:54:00 <zid> gog: played space explo?
13:59:00 <gog> zid: no
14:06:00 <zid> k be someone no fun to talk to then, see if I mind
14:12:00 <QuietlyConfident> damn zid, that's some cold shit right there
14:14:00 <zid> Yes it was wasn't it
14:14:00 <zid> I don't think you should shame her that hard though
14:15:00 <QuietlyConfident> gog: smh
14:19:00 * gog hangs her head
14:21:00 <QuietlyConfident> its okay, we know you will work to better yourself
14:22:00 <kaichiuchi> gog: donuts and coffee this morning or some other breakfast
14:22:00 <kaichiuchi> decide
14:22:00 <kaichiuchi> now
14:23:00 <zid> I has lubricant.
14:28:00 <gog> kaichiuchi: bagel
14:28:00 <kaichiuchi> the bagels suck here.
14:29:00 <gog> dang
14:29:00 <gog> donut and coffee then
14:29:00 <kaichiuchi> wonderful
16:06:00 <ghostbuster> what is meant by the term "machine word size"? is it the width of the memory bus? or the size of the smallest instruction?
16:07:00 <GeDaMo> Usually the size of the registers
16:09:00 <sham1> Yeah, there's no one definition
16:10:00 <ghostbuster> thanks
16:11:00 <ghostbuster> i came across it in this article on c struct packing
16:11:00 <bslsk05> ​
16:11:00 <dminuoso> to be fair, the expression "machine word size" and "word" is extremely ambiguous
16:12:00 <GeDaMo> «The domain "" has expired.»
16:12:00 <dminuoso> for instance, by the definition "size of the registers" makes little sense on modern AMD64 processors
16:12:00 <ghostbuster> "[char] are a special case; they’re equally expensive from anywhere they live inside a single machine word. That’s why they don’t have a preferred alignment"
16:12:00 <dminuoso> Modern AMD64 processors have 512bit AVX2 registers. Is the machine word size 512 bit now?
16:14:00 <zid> noo catb was good
16:16:00 <kaichiuchi> you're fucking kidding me
16:16:00 <kaichiuchi> that's unfortunate
16:16:00 <heat> dminuoso, yes it does make sense. it's the size of the GPRs
16:16:00 <kaichiuchi> esr may have been a lunatic gun nut but his technical writings were good
16:16:00 <heat> not that "machine word size" is anything remotely close to defined in the C standard
16:16:00 <dminuoso> heat: See I have my issue with "general purpose register" too
16:16:00 <zid> I prefer architectures where the gprs and the memory is the same size
16:17:00 <zid> so that I can scalar my pointers
16:17:00 <zid> and pointer my scalars
16:17:00 <zid> 6502 can suck a poo
16:17:00 <dminuoso> The whole notion of "machine word size" is an antiquated time when CPUs were extremely simple and mundane
16:17:00 <dminuoso> In reality, what is often way more interesting than this "GPR" notion, is cache width.
16:17:00 <dminuoso> *cache line width
16:18:00 <dminuoso> perhaps not necessarily in the scope of this channel for a bunch of reasons, but when we look at CS discussions in general
16:19:00 <heat> <ghostbuster> "[char] are a special case; they’re equally expensive from anywhere they live inside a single machine word. That’s why they don’t have a preferred alignment"
16:19:00 <heat> huh???
16:20:00 <heat> ??????
16:20:00 <heat> ????????????
16:20:00 <zid> just nonsense
16:20:00 <zid> I zoned straight through it
16:22:00 <ghostbuster> lol
16:23:00 <ghostbuster> i just want to know how structs are packed on x86 and ARM
16:23:00 <zid> if they're packed, they're packed
16:23:00 <ghostbuster> glad to know i'm not the only one not intimately familiar with the meaning of that sentence
16:23:00 <zid> you're welcome
16:23:00 <ghostbuster> sorry by packed i meant aligned
16:24:00 <zid> ABI determines that, it's just informed by the cpu
16:24:00 <zid> x86 flip flops on whether float are 4 or 8 or 16
16:25:00 <heat> Usually(tm) they're all naturally aligned to the size
16:25:00 <heat> so load16bits (addr), %reg does a naturally aligned load, yadda yadda
16:26:00 <heat> also chars probably need to be intrinsically 1-byte aligned, else they couldn't be much useful
16:26:00 <zid> pfft
16:26:00 <heat> in C-standard-speak "byte" is defined as sizeof(char)
16:26:00 <zid> sizeof(uint32_t) = 2
16:27:00 <zid> best architectures, DSPs
16:27:00 <heat> yeah, that works
16:27:00 <heat> sizeof(char) == 1, CHAR_BITS = 16
16:27:00 <zid> BIT
16:27:00 <heat> whatever
16:27:00 <heat> BIT_BITS = 16
16:27:00 <heat> better zid?
16:27:00 <zid> yep
16:43:00 <dminuoso> ghostbuster: That being said, alignment can be impacted by: a) ABI, b) architectural requirements (e.g. some CPU instructions requires data to be aligned)
19:39:00 <mjg> so i got an e-mail from bonwick asking if anyone seen DOORS
19:39:00 <mjg> i told him everyone has DOORS
19:40:00 <mjg> at first he was happy, but then it turned out he mean the solaris subsystem
19:40:00 <mjg> hated to break his heart
19:40:00 <mjg> the upper case might have give it away, but did not
20:52:00 <geist> honestly never really looked at the doors stuff. as with all things there's probably a good idea in the core of it
20:52:00 <geist> but probably design by committeed to death or something
21:06:00 <mats2> happy holidays
21:12:00 <geist> mats2: i'd appreciate it if you didn't link stuff like that
21:12:00 <geist> and i'm being very nice
21:39:00 <jimbzy> Sup?
21:59:00 <mats2> geist: you're the nicest guy we know
22:00:00 <QuietlyConfident> damn, that's unfortunate
22:00:00 <QuietlyConfident> i hope one day you meet nicer guys
22:05:00 <mats2> rude
22:13:00 <jimbzy> I'm 99% sure it is impossible to order everything for a project in a single order...
22:40:00 <geist> Word
22:40:00 <geist> And when you do you should always order 2
22:41:00 <jimbzy> I did for a lot of the components.
22:42:00 <jimbzy> Varicap double diodes in a TO-92 package, and other stuff that's not exactly 'easy' to order.
22:42:00 <geist> Reminds me, i need to order more of the MISTr parts. I have the DE-10 nano board, which i expected to take forever because it was on preorder, but then ended up shipping a day later
22:44:00 <jimbzy> That a FPGA board?
22:44:00 <jimbzy> Sounds familiar, but I can't put my finger on it.
23:25:00 <geist> Yeah, it’s one of the terasic fpga boards, but this one in particular is the core to the MISTer project
23:26:00 <geist> which is basically an uber emulator of everything
23:26:00 <geist> you get a de10 and then there are a few auxiliary boards to connect to game controllers and whatnot and add some extra SDRAM
23:27:00 <geist> I think the gist is it runs linux on the hard arm cores in the fpga, and then based on what thing you ask it to emulate it loads another bit file onto the fpga side and runs it
23:27:00 <geist> Pretty slick
23:27:00 <sortie> ← Wrote another man page tonight
23:27:00 <bslsk05> ​ dhclient.conf(5)
23:27:00 <geist> Oh man!
23:27:00 <sortie> Sometimes osdev is just documentation work :)
23:28:00 <sortie> Protip for all the wannabes out there, if you can't code, you can just make up a fictional operating system and write a vast, complicated, accurate, internally consistent collection of manual pages for it and then just fool everyone into thinking it's a real proprietary system
23:28:00 <sortie> That's what aix secretly is btw
23:29:00 <sortie> osdev is all about the unix fan fiction
23:29:00 <geist> Heh
23:29:00 <geist> You an even add some sort of source repository, but you have to make sure it’s so hard to build it that no one can actually reproduce it, and thus never prove that it does or doesn’t exist
23:29:00 <geist> :achievement unlocked:
23:29:00 <sortie> geist, I do very much enjoy writing very good manual pages for the depths of my OS that will barely be read by anyone
23:30:00 <sortie> It's a strange exercise :)
23:30:00 <geist> Yeah i wish i had that same knack. I love a good man page but i am so bad at getting the momentum to write them
23:30:00 <geist> Even though every time I end up having to it’s generally no big deal
23:30:00 <geist> And almost kinda fun
23:30:00 <sortie> It's nice having the body of them, having them interlink, having a html repository of them
23:31:00 <geist> Totes McGovern
23:31:00 <geist> Mcgotes… damnit auto fix
23:31:00 <sortie> Motivates me to keep building on them, and anticipating what actual users of my OS might actually want to know if they were to use it
23:31:00 <sortie> Surely if it's as hard to build as Android or G3 then surely it's a real big project
23:32:00 <geist> tesstr okay, good. i just figured out how to disable auto correct for when typing on the physical keyboard attached to the ipad
23:32:00 <sortie> Obviously the source code must be checked out using a custom tool
23:32:00 <geist> yah a prebuilt tool that doesnt run on your computer
23:33:00 <geist> you can get a cloud image to build it, but it costs $10/hr
23:33:00 <sortie> And obviously 100 G of prebuilts (that doesn't run on your computer) must be downloaded (to /tmp)
23:33:00 <geist> obviously
23:33:00 <jimbzy> Yeah, I was checking out. Very noice.
23:33:00 <geist> you need to go full self hosted, sortie. like only builds on sortix
23:33:00 <geist> then the cycle will be complete
23:34:00 <sortie> And obviously you must accept 7 license agreements before you can even get the toolchain
23:34:00 <sortie> (which may or may not be the right version and may or may not contain what you need)
23:34:00 <sortie> Obviously you should've downloaded the IDE solution instead
23:35:00 <sortie> geist, this has already happened?
23:35:00 <geist> yeah but youcan still cross build, right?
23:35:00 <sortie> I do support cross builds, but does run on a sortix that was built on sortix, automatically, every night
23:35:00 <geist> you need to complete the cycle where youcan only realistically build sortix N on sortix N-1
23:36:00 <geist> when i worked at apple back in the mid 2000s that was effectively the situation with OSX
23:36:00 <geist> pretty sloppily done, but worked. they’d image the build machine with the previous build, then build the next one, repeat
23:36:00 <sortie> geist, yeah that's technically the rule. Sortix X+1 builds only on Sortix X, or can potentially be cross-compiled (at least from a good supported Linux)
23:37:00 <sortie> It's gotten a good bit complicated though because Sortix 1.0 is _not_ fully self-hosting, so you gotta do a complicated mixed mode bootstrap to incrementally become the latest 1.1dev
23:37:00 <sortie>
23:37:00 <bslsk05> ​ Bootstrapping Sortix 1.1 on Sortix 1.0
23:38:00 <sortie> Once 1.1 is released, I drop all the backwards compat for 1.0, and start the compat cycle anew :)
23:38:00 <geist> yeah that’s of course the problem/boon of it, you can end up with totally non hermetic builds, but then it’s probablysimpler
23:39:00 <geist> since there’s little things youpropbably dont have to worry about, it just has to build and work
23:39:00 <sortie> ← I have a nice well defined backwards/forwards compatibility policy that lets me drop compat after one release cycle
23:39:00 <bslsk05> ​ following-development(7)
23:40:00 <geist> yeah makes sense. with a posix system it’s also fairly straightforward. i think where a lto of the OSX problems could arise is all the gui layers
23:40:00 <sortie> It lets me have requirements like version X must be able to build X+1, and X+1 should be able to build X (so git bisect works)
23:40:00 <geist> something adds feature X in version N and then N+5 some part of the build needs it to already be present in the SDK installed on the machine, etc
23:41:00 <geist> yah you’d need that for bisect
23:41:00 <sortie> Yeah I have a well defined 'build tool' concept that are programs from X+1 that must be built on X to build X+1
23:41:00 <sortie> (so those programs must also be backwards compatible)
23:42:00 <geist> we have somewhat of that problem on fuchsia, but not because it’snot hermetic (the build is hella hermetic, almost to a fault) but that we also roll prebuilts very frequently, sopart of the build is downloading all the appropriate tools
23:42:00 <geist> so bisect is a pain because you have to rewind all the toolchains, etc to sync up
23:42:00 <sortie> Mmmm
23:42:00 <sortie> At least gclient sync takes care of that for us
23:42:00 <geist> yep, but it’s of course a large portion of the reason a fuchsia sync pulls down GB of data basically daily
23:43:00 <geist> since tons of tools roll all the time and then the build system foreces basically a full rebuild because any of the tools change, everything downstream of it does too
23:43:00 <sortie> Life at the big G
23:43:00 <geist> word.
23:43:00 <geist> cpu is cheap, memory is cheap, disk is cheap
23:44:00 <sortie> But yeah it's fun defining all of these policies for my hobby project :)
23:44:00 <sortie> Moving a bit more slowly but doing it right, my way
23:45:00 <geist> yeah totally
23:45:00 <geist> listening to you talk about this stuff always gets my hobby os juices flowing too
23:45:00 <sortie> :)
23:46:00 <sortie> Haha yeah I feel that more osdev stuff happens when I just am online on IRC talking about it, it's shared motivation
23:46:00 <geist> yah totally
23:46:00 <geist> though sometimes i have to turn it off and heads down, but that’s been kinda rare lately
23:46:00 <geist> haven’t been as hobby productive the last month
23:47:00 <sortie> Yeah I have also been making Sortix pretty tertiary in my life
23:47:00 <geist> wsas all motivated to learn rust about a month ago and i think that consumed all my hobby cpu cycles
23:47:00 <sortie> Although right now I feel 1.1 within reach, I FINALLY FINISHED NETWORKING, so I wanna do that in 2023
23:47:00 <geist> woot, did you get that merged back into mainline?
23:47:00 <geist> iirc it was some dev branch
23:48:00 <sortie> Yeah networking is all merged as of a few das ago, except dhclient(8) which I'm still finishing up
23:48:00 <sortie> So right now if you boot up a nightly, networking will work if you manually ifconfig
23:48:00 <geist> noice. and i mentioend before it hink but you’re not working on v6?
23:48:00 <kaichiuchi> you know
23:49:00 <kaichiuchi> it's kinda hard to believe there isn't a CMake policy for enforcing out of source builds
23:49:00 <sortie> IPv6? Yeah not yet, out of scope for now
23:49:00 <sortie> After dhclient, I gotta merge my ssh port and then this thing hits 88 mph
23:49:00 <geist> yah i’ve actually been almost more interested in v6 over v4. for embedded stuff i think v6 has some neat advantages, most notably zero conf
23:49:00 <geist> but then i also have full v6 at my house, so it’s actually usable
23:50:00 <geist> or at least routable v6. everyone has ipv6 even if they dont know it, it’s just probably all link local
23:50:00 <geist> but even that works fairly well, since it’s zero conf if you dont do anything about it
23:50:00 <sortie> Yeah alas no ipv6 routing in my home
23:50:00 <sortie> I do have ipv6 on my server though so can totally use it on but I just gotta write an IPv6 stack
23:51:00 <sortie> But ipv4 is good enough for now
23:51:00 <geist> totes
23:51:00 <sortie> The rule is to merge, not delay with more features
23:51:00 <geist> okay i’m freezing here, need to go. (sitting outside a coffee shop in like 5C weather)
23:51:00 <sortie> Once the tail of networking is merged, I'm very far towards 1.1
23:51:00 <sortie> Yeah it's late here too cya