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
josuedhg has quit [Quit: Client closed]
jistr has quit [Quit: quit]
jistr has joined #osdev
<heat> vin, correct
X-Scale has joined #osdev
Arthuria has joined #osdev
<heat> and even then it could be uncomitted pretty damn quickly, through swap or MADV_DONTNEED
gog has quit [Ping timeout: 264 seconds]
navi has quit [Quit: WeeChat 4.2.3]
navi has joined #osdev
Matt|home has quit [Read error: Connection reset by peer]
X-Scale has quit [Quit: Client closed]
memset has quit [Remote host closed the connection]
memset has joined #osdev
navi has quit [Quit: WeeChat 4.2.3]
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
Matt|home has joined #osdev
<Matt|home> theoretical question - how difficult would it be to make a system either totally glitch/bug/issue-free outside of acts of god (e.g. a capacitor blows up), ooooorrrr have so much/enough support that any glitch would be almost instantly fixable at least within five or ten minutes
<Matt|home> we talkin feasible or no chance in hell jack
<gorgonical> that's just formal methods
<heat> very
<gorgonical> seL4 is a relevant instance of this
<heat> hardware failure is not an act of god
<Matt|home> i ask because i recently switched back to windows to get the hell out of the mess of technical issues i ran into just getting stuff to work out of the box
<Matt|home> and despite the massive improvement im still running into very weird seemingly unsolvable issues :p
<heat> oh, general purpose OS? impossible
<Matt|home> yeah i mean theoretically could you make some large scale user friendly system like linux or windows but with glitch free support
<heat> no
<Matt|home> fudge
lain` has quit [Ping timeout: 252 seconds]
<Matt|home> just too much software?
<gorgonical> yeah absolutely impossible
<heat> too many moving, complex parts
<gorgonical> proving correctness is basically inversely related to software complexity, but probably exponentially
X-Scale has joined #osdev
<Matt|home> ah well. my fantasy OS will strive for achievements in excellence and perfection. it'll be the first 100% bug free system on earth
<Matt|home> and it'll be as popular as windows :D
<Matt|home> i won't.. really get anything out of it but i feel it's my civic duty to make it anyway
<Matt|home> actually i kind of have an idea about that. i feel like it's really really really simple?
<gorgonical> I mean additionally to do it with any kind of performance requires async, which fouls up the works hugely
<Matt|home> basically the idea is be as verbose as possible whenever you run into an error, and make sure you _fully_ document any kind of error or problem the computer can possibly run into and fully explain how each and every error is caught and what the various numbers etc mean
<gorgonical> adding race conditions, memory coherence, etc. really extremely complicates formal methods
lain` has joined #osdev
<heat> SMP
<Matt|home> e.g. i see on the terminal "error: 404" and i just open the book, and it says "error 404: somebody shot the server with a 12 gauge, please approach with caution"
<Matt|home> something like that
<heat> windows already kind of has that
<Matt|home> yeah but it's obfuscated AF
<gorgonical> only to you
<gorgonical> ever ask a windows kernel dev?
<Matt|home> like i spent over a day tryna figure out
<Matt|home> lol
<heat> like, it's not like linux or windows software lack logs
<Matt|home> gorgonical - may i please beg your help? <3 if you're willing?
<Matt|home> or wait, are you a kernel dev?/
<heat> you just don't have the expertise to grok them
<Matt|home> ?
<gorgonical> I am not a windows kernel dev. I'm just saying it seems complex to you but that could be because you are unfamiliar
<Matt|home> aw
<Matt|home> maybe, but i spent quite a while trying to fix two complex issues yesterday and i couldn't for the life of me
<gorgonical> I am sure there are copious such manuals internal to microsoft you don't have access to
<Matt|home> figure out what was wrong
<Matt|home> right.. what im saying is my system will be made publicly available that kinda info
<Matt|home> it'll almost be open source :D
<gorgonical> and what heat said is also very true. It was probably 6 months of daily poring over the x86 SDM before anything really made sense when I was starting out
<Matt|home> that should be true for operating system development, but certainly not for basic everyday computer usage
<heat> in no way shape or form is debugging software problems basic everyday computer usage
<Matt|home> hm. apologies if im wrong
<Matt|home> but do you both feel relatively strongly about this/feel im ignorant about the subject?
<gorgonical> I don't like to speculate
<Matt|home> mkay. well i won't argue, i'll just respectfully disagree if that's the case <3 but i could very well be wrong
<heat> i'll give you an example: my relationship with linux desktop. i have approximately no interest in looking at logs and fixing weird bugs
<Matt|home> then let me ask this: in general what OS/computer set up are you most comfortable with, for work/home use? e.g. prefer mobile computing, mac for graphics, etc
<Matt|home> i'll never understand why, but my wife and sister are obsessed with mobile stuff. they genuinely think it's like the future of computers
Arthuria has quit [Ping timeout: 268 seconds]
<Matt|home> and i absolutely hate mobile screens :p
<Matt|home> but man.. ios is the absolute worst. i won't rant anymore, but seriously screw ios's UI :p
* geist yawns
<geist> hows everyone this evening?
* Matt|home snuggles geist <3
<heat> hi geist
<geist> howdy
<heat> i was asking around #riscv and apparently linux is wrong :(
<geist> yay, about what?
<heat> the non-leaf PTE changes thing
<geist> ah yeah
<heat> so The Proper Change would probably be to change spurious faults to shootdown the whole TLB
<heat> which is depressing tbqh
gorgonical has left #osdev [Killed buffer]
gorgonical has joined #osdev
<geist> yeah though that's still only for the local cpu
<geist> oh wait, drop everything, dave on youtube is telling us about how he wrote the windows start menu
<geist> that's in addition to the task manager. damn!
<heat> indeed. fwiw there's an extension that allows you to skip invalidation on !Present -> Present, which probably helps a bunch
<heat> lol
<kof673> matt|home, one man's bug is another man's right to format my own drive :D
<gorgonical> hey heat what do you have to set as the user string to get the description plus your name?
<heat> hm?
<gorgonical> when you whois you, you see an x/y/z format, then afterwards your realname/gecos
<Matt|home> kof673 - good news, you won't have bugs with my system
<heat> you mean the @sortix/contributor/heat bit?
<gorgonical> yes
<heat> its a mask
<heat> or cloak or whatever
<bslsk05> ​libera.chat: Cloaks | Libera Chat
<gorgonical> oooh
<gorgonical> I see
<heat> my nightly CI fails every day at 3am and every day at 3am i get an email about it and i haven't fixed it yet
<heat> i lack agency in my life
<gorgonical> Sometimes I feel like a really good business would be to offer a service where people register impulsively when they have that surge of responsibility, but falter in the moment. The business solves this problem by arranging to punish you for doing something wrong. Like maybe they throw a bucket of paint on you when you're on a walk
<gorgonical> So then when doing the thing you're afraid to not do it because of what your past self arranged for you in the case of failure
<heat> YES
<heat> i need some good old threats to get things going
<kof673> you'll never write that line of code you #$@$$@#$@#$@ </happy gilmore red lobster guy>
gorgonical has quit [Ping timeout: 264 seconds]
<Matt|home> in my operating system it's gonna be really easy. you have an option to register, if you do you get full support, if you don't you're on your own, but i'll include the manuals and stuff
<Matt|home> i guess i could just require an email address and that'll be the end of it
vdamewood has joined #osdev
Matt|home has quit [Quit: Client closed]
Matt|home has joined #osdev
smeso has quit [Quit: smeso]
frkazoid333 has quit [Ping timeout: 256 seconds]
smeso has joined #osdev
agent314 has joined #osdev
kline has quit [*.net *.split]
kline has joined #osdev
tomaw has quit [*.net *.split]
tomaw has joined #osdev
vdamewood has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
aws has joined #osdev
kristinam has quit [Server closed connection]
kristinam has joined #osdev
vdamewood has joined #osdev
heat has quit [Ping timeout: 264 seconds]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
netbsduser has joined #osdev
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
goliath has joined #osdev
valerius_ has quit [Server closed connection]
valerius_ has joined #osdev
housemate has quit [Read error: Connection reset by peer]
housemate has joined #osdev
housemate has quit [Remote host closed the connection]
netbsduser has quit [Ping timeout: 244 seconds]
stolen has joined #osdev
housemate has joined #osdev
scaleww has joined #osdev
housemate has quit [Read error: Connection reset by peer]
housemate has joined #osdev
housemate has quit [Read error: Connection reset by peer]
housemate has joined #osdev
housemate has quit [Remote host closed the connection]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Remote host closed the connection]
housemate has joined #osdev
housemate has quit [Remote host closed the connection]
foudfou has quit [Remote host closed the connection]
foudfou has joined #osdev
cow321 has quit [Ping timeout: 268 seconds]
cow321 has joined #osdev
hwpplayer1 has joined #osdev
hwpplayer1 has quit [Remote host closed the connection]
housemate has joined #osdev
xelxebar has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
housemate has quit [Quit: "I saw it in a TikTok video and thought that it was the smartest answer ever" ~AnonOps Radio [LOL]]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
xelxebar has joined #osdev
housemate has quit [Max SendQ exceeded]
housemate has joined #osdev
housemate has quit [Max SendQ exceeded]
xelxebar has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
xelxebar has joined #osdev
xelxebar has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
xelxebar has joined #osdev
housemate has joined #osdev
Gooberpatrol66 has quit [Ping timeout: 246 seconds]
housemate has quit [Ping timeout: 248 seconds]
Left_Turn has joined #osdev
theyneversleep has joined #osdev
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 252 seconds]
Celelibi has quit [Server closed connection]
stolen has quit [Quit: Connection closed for inactivity]
DoubleJ has quit [Server closed connection]
DoubleJ has joined #osdev
Celelibi has joined #osdev
GeDaMo has joined #osdev
vdamewood has quit [Quit: Life beckons]
agent3141 has joined #osdev
agent314 has quit [Ping timeout: 245 seconds]
agent3141 is now known as agent314
navi has joined #osdev
bauen1 has quit [Ping timeout: 246 seconds]
mcfrdy has quit [Server closed connection]
mcfrdy has joined #osdev
gildasio has quit [Remote host closed the connection]
gildasio has joined #osdev
foudfou has quit [Remote host closed the connection]
foudfou has joined #osdev
dza has quit [Server closed connection]
dza has joined #osdev
<nikolar> KERNAL
<zid> nintendo ds kernal when, nikolapdp
<zid> You can implement unix on the arm9 and I'll write a shitty arm7 program to talk to it
<nikolar> How shitty are we talking about
<zid> at least three shitty
<nikolar> That's very shitty
<zid> if you like I could even write it in heat C++
<zid> int main(void){ int a = sizeof('a'); if(a != 1) printf("This is C++ dummy\n"); return 0; }
<nikolar> You're missing a lambda and a class there for heat c
<nikolar> But heat c++ works
<Matt|home> alo o\
<nikolar> Ello
<Mondenkind> zid: you mean == 1
<Mondenkind> 'a' is char in c++, int in c
<zid> nikolapdp: should have named 'a' class
guideX has joined #osdev
<zid> but then it wouldn't compile with a C compiler but print the nasty message
<zid> I want it to berate you for compiling it as C, when it's obviously C++
<zid> (super mega obviously)
<nikolar> Lel
Mutabah has quit [Server closed connection]
Mutabah has joined #osdev
<guideX> when thinking about how my os runs a program, I'm a little confused on how to begin. right now all the programs run from the code of the os, https://pastebin.com/raw/6mRj1utJ heres the calculator program.. I run it like this, _apps[i].AppObject = new Calculator(); etc
<mjg> can you elaborate what is your overall goal here
<zid> load it into memory, jump to it with a privledge level reducing jump
<mjg> if you are trying to learn how to write a real operating system you are starting all wrong
<guideX> mjg, well I've written large portions of the os already https://gitlab.com/guideX/guidexos
<bslsk05> ​gitlab.com: guideX / guidexos · GitLab
<guideX> but the how programs run is like, a little different
<guideX> I haven't gotten that far yet, it just runs whatever programs are prewritten with the os, but I have no program from the outside concept yet
<zid> You don't have any programs
<zid> you have.. kernel modules
<zid> at best
<guideX> yeah
<zid> completely different concept, what I said is the concept for programs
scaleww has quit [Quit: Leaving]
<vin> The heap is really a stack isn't it (when used with sbrk)!? I can't return freed memory back to OS unless it is at the top of the heap. I could allocate a million 512B and free all the first 99K allocations and yet I can't now return this freed memory back because of the last 1K allocations
<vin> sbrk seems like a pretty bad way to allocate memory even for small objects
X-Scale has quit [Ping timeout: 256 seconds]
bauen1 has joined #osdev
ily2 has joined #osdev
<guideX> zid, that helps my understanding when I go reading about the differences, but also this is like solaris docs https://docs.oracle.com/cd/E19253-01/817-5789/emjjr/index.html
<bslsk05> ​docs.oracle.com <no title>
<zid> They're using a very specific solaris meaning of kernel module there
<mjg> vin: sbrk is the legacy interface
edr has joined #osdev
<mjg> vin: you should mmap
<guideX> I guess it would be helpful <in pseudo code-talk> in simpler terms what my os is doing really really when loading a program from my file system, I'm a little unsure if I'm like, doing something myself with some script, or like something more magical
<mjg> which is what jemalloc is doing
<zid> seems like they're sort of microkernelly inerternally? a module looks to be an irq handler effectively
<zid> I could explain what.. a normal OS does?
<vin> mjg: libc malloc still uses sbrk for all allocations smaller than 128K!! https://www.gnu.org/software/libc/manual/html_node/Malloc-Tunable-Parameters.html#Malloc-Tunable-Parameters
<bslsk05> ​www.gnu.org: Malloc Tunable Parameters (The GNU C Library)
<guideX> zid, well, I am using .net, I suppose msil may be part of the picture
<guideX> but I'm not sure what that really really means
<mjg> vin: that's lame af
<guideX> as I understand it, I must go from (exe or dll) to msil or vice versa
<guideX> but what happens after that
<zid> that's all beyond the scope of an OS, if you want to run .NET userprograms you just need to have the programs load the .NET runtime and run under that
<zid> same as if you wanted to run python scripts
<guideX> zid, so .net (all of .net7 corelib) is inside my os
<guideX> without an external dependency
<guideX> so I can do everything .net7 can do inside my os, and that is the way everything works
<zid> that just means your OS can be written in .NET
<zid> if you want proper user programs, you need one per process, in userspace too
<zid> If you just want to add threads to your kernel, add threads to your kernel
<zid> Which is an option, given .NET is a managed language
<zid> in *theory* that makes it safe, and you don't need any of the process isolation and security features of your cpu
m5zs7k has quit [Ping timeout: 252 seconds]
<zid> so you can ignore the kernel/user space distinction
<guideX> zid, ah so I have some options there
ily2 has quit [Quit: Leaving]
<zid> You always have options, but just remember what you're writing isn't an archetypal OS
<nikolar> *in theory*
<zid> It's.. a weird .NET environment for running scripts, running in kernel mode
navi has quit [Quit: WeeChat 4.2.3]
X-Scale has joined #osdev
<guideX> I was thinking of an approach like that, I would have like idk, zip files containing some c# script, which the os executes in a managed way
<guideX> it seems very simple way to do it, I already have a file system and stuff so idk if that'd be a good way
<zid> Basically I think you were conflating eval() with processes
<guideX> currently this is how I control "apps" inside my os https://gitlab.com/guideX/guidexos/-/blob/main/guideXOS/OS/App.cs?ref_type=heads
<bslsk05> ​gitlab.com: guideXOS/OS/App.cs · main · guideX / guidexos · GitLab
<guideX> I guess I just change this to look for apps externally, and then, put c# script somewhere inside the app executable, and something to describe the front end like xml, and I'm done
<guideX> I'm not sure if that's a good approach or not, I haven't developed an os like this before, I developed a simple cli os with math functions
<zid> I really think you need to stop saying OS
<guideX> is this not an os?
<zid> I'd say it's a self-hosted .net environment
<zid> You can claim it's an os, and there'll be all sorts of ways you'd be right, but it just isn't what people are going to think if you say 'OS'
<guideX> I guess at this moment, it's extremely limited for sure, but the goal is it to be an os
<guideX> like right now, it doesn't successfully fullfill much purpose, outside of a clock and calculator, with a gui
<guideX> but also, I only started working on it on like saturday at 4am
<guideX> also it has the potential to do more things to be useful I guess
heat has joined #osdev
nickster has quit [Server closed connection]
<vin> mjg: I wish there was an option to force glibc malloc to only use mmap and not sbrk
<heat> why
nickster has joined #osdev
<heat> brk is a perfectly cromulent system call
<mjg> munmap(heat, ...);
<vin> heat: I don't think so becuase it forces you to think of memory in one way (as a stack)
<heat> and?
<heat> it's still perfectly ok and probably faster than mmap
<heat> only issue might be heap reclaim, but on linux you can use MADV_DONTNEED and get the same effect
<vin> which is bad: imagine allocating 5M 1024B records and then you freed the first 4.9M records and kept the remaining 10K the freed area is not returned back to OS
<heat> MADV_DONTNEED
<vin> yea, well glibc malloc does not provide such a feature. Moreover, it now onus on you to keep track of the pages that you want to madvise on
<vin> even though you have indicating you don't need that much memory anymore with free()
<heat> mon
<bslsk05> ​elixir.bootlin.com: malloc.c - malloc/malloc.c - Glibc source code (glibc-2.39.9000) - Bootlin
<bslsk05> ​elixir.bootlin.com: arena.c - malloc/arena.c - Glibc source code (glibc-2.39.9000) - Bootlin
<vin> mtrim only trim the leading edge of the heap. That is if 128KB (default) is freed at the top of the heap then it will be released back to OS.
<vin> Doesn't handle the case I described above
<heat> maybe glibc malloc is complete wank, what do i know
<heat> i would 100% expect all such simple cases to be handled
<vin> me too! which is why it is a surprising result from my benchmarks
<vin> I mean there is no easy way to handle the case if one uses sbrk. You will be forced the move the allocations around (which you can't). So the only real answer is to use mmap
<heat> ... or madvise MADV_DONTNEED
<heat> whatever it is you want to do with mmap, you can do with brk
<heat> you can even *technically* munmap brk chunks, at your own risk
<nikolar> Define at your own risk
bauen1 has quit [Ping timeout: 248 seconds]
<nikolar> Does Linux specify what happens
m3a has quit [Ping timeout: 260 seconds]
<heat> AFAIK, nope
m5zs7k has joined #osdev
bauen1 has joined #osdev
<vin> yes, I can imagine malloc doing this easily. If you find a contigous region allocated using sbrk then MADV_DONTNEED that part. Doing this will create address space fragmentation but that is not a real problem with 64/48 bits
<vin> surprisingly they don't need do it!
<nikolar> You can mmap it later if you really want
<vin> that's right! but make sure not calling brk on this mapped region when it time to shrink
<azonenberg> Is it possible to have multiple SECTIONS directives in a gnu ld script?
<azonenberg> looks like it is
<zid> I thought that was weird at first, but I guess that's just how chaining them already works
<zid> so maybe not
<heat> you're probably invoking nasal demons there, beware
bauen1 has quit [Ping timeout: 244 seconds]
<azonenberg> zid: so my standard stm32 linker scripts have one file that contains all the SECTIONS directives for putting .text and .rodata and such in flash, bss and such in ram, as well as all of the APB/AHB peripherals at the right addresses
bauen1 has joined #osdev
<azonenberg> then i have a second file with MEMORY directives that includes the first one, which i can rearrange to have e.g. one file for a 32 kB bootloader at the start of flash and another for an application using all but the first 32 kB of flash, etc
<azonenberg> But now i have an FPGA connected to the stm32 via the external parallel memory interface
<azonenberg> and i want to be able to define SFRs in the linker script that live on APB within the FPGA, and have the MCU just see that as another APB bus segment
<azonenberg> without copy pasting the original linker script and duplicating stuff
<azonenberg> I think i know how to do it now
rustyy has quit [Ping timeout: 246 seconds]
memset has quit [Ping timeout: 260 seconds]
memset has joined #osdev
antranigv has quit [Ping timeout: 252 seconds]
chiselfuse has quit [Ping timeout: 260 seconds]
chiselfuse has joined #osdev
MrCryo has joined #osdev
goliath has quit [Quit: SIGSEGV]
X-Scale49 has joined #osdev
X-Scale has quit [Ping timeout: 256 seconds]
memset has quit [Remote host closed the connection]
chiselfuse has quit [Remote host closed the connection]
gildasio has quit [Write error: Connection reset by peer]
gildasio has joined #osdev
chiselfuse has joined #osdev
memset has joined #osdev
josuedhg has joined #osdev
deriamis_ has quit [Server closed connection]
deriamis has joined #osdev
X-Scale49 has quit [Ping timeout: 256 seconds]
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
rustyy has joined #osdev
zetef has joined #osdev
zetef has quit [Client Quit]
memset has quit [Ping timeout: 260 seconds]
moire has quit [Server closed connection]
moire has joined #osdev
memset has joined #osdev
heat has joined #osdev
heat_ has quit [Read error: Connection reset by peer]
rustyy has quit [Quit: leaving]
rustyy has joined #osdev
gsekulski has joined #osdev
agent314 has quit [Quit: The Lounge - https://thelounge.chat]
agent314 has joined #osdev
gsekulski has left #osdev [#osdev]
bauen1 has quit [Ping timeout: 272 seconds]
rustyy has quit [Quit: leaving]
rustyy has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
memset has quit [Remote host closed the connection]
memset has joined #osdev
Bitweasil has quit [Server closed connection]
Bitweasil has joined #osdev
Apollyon has joined #osdev
memset has quit [Remote host closed the connection]
memset has joined #osdev
cow321_ has joined #osdev
cow321 has quit [Ping timeout: 272 seconds]
cow321_ is now known as cow321
xenos1984 has quit [Ping timeout: 258 seconds]
xenos1984 has joined #osdev
bauen1 has joined #osdev
memset has quit [Remote host closed the connection]
memset has joined #osdev
cow321 has quit [Remote host closed the connection]
cow321 has joined #osdev
xenos1984 has quit [Ping timeout: 272 seconds]
gog has joined #osdev
kof673 has quit [Ping timeout: 256 seconds]
josuedhg has quit [Quit: Client closed]
foudfou has quit [Remote host closed the connection]
foudfou has joined #osdev
xenos1984 has joined #osdev
navi has joined #osdev
Turn_Left has quit [Ping timeout: 244 seconds]
navi has quit [Quit: WeeChat 4.2.3]
ecs has quit [Server closed connection]
ecs has joined #osdev
SGautam has joined #osdev
netbsduser has joined #osdev
Apollyon has quit [Remote host closed the connection]
frkazoid333 has joined #osdev
tbvdm has quit [Server closed connection]
tbvdm has joined #osdev
xvmt has quit [Ping timeout: 246 seconds]
agent314 has quit [Quit: WeeChat 4.1.1]
xvmt has joined #osdev
theyneversleep has quit [Remote host closed the connection]
<heat_> >SUSE asks openSUSE to consider name change
<heat_> lmfao
heat_ is now known as heat
Gooberpatrol66 has joined #osdev
antranigv has joined #osdev
<mjg> ? :D
<heat> i kinda want to rewrite my whole dcache
<heat> i shouldn't, but i want to. it's a refcounting and locking mess
<Ermine> heat asks heat_ to consider name change
<Ermine> but true, they should call themselves openSUSe
<heat> openSUS
<netbsduser> heat: i have been thinking of giving my namecache similar treatment, it isn't particularly complete yet anyway but now that i have RCU i can take liberties
<netbsduser> rcu has really changed everything for me
<netbsduser> i no longer like complex locking hierarchies with sophisticated strategies to permit inversions
<heat> the problem is that path walking still needs the refcounting + locking fallback :/
MrCryo has quit [Remote host closed the connection]
Ermine has quit [Remote host closed the connection]
Ermine has joined #osdev
<mjg> the key to sensible namecache is not having entries tied to vnodes
<mjg> which is where most unixen are losing out
vin has quit [Server closed connection]
vin has joined #osdev
<netbsduser> mjg: when you say tied to vnodes, how do you mean? as in the namecache is per vnode and hanged off each vnode?
<mjg> i mean it entries go away if the vnode is recycled
<netbsduser> oh, i quite agree, i think the dragonfly/linux approach is much the superior
<mjg> right
<mjg> this also facilitates cheap nullfs
<heat> it's still a big mess with awful lock inversions
<mjg> aka --bind
<heat> and REFCOUNTS EVERYWHERE AHHHHH
<heat> and if you don't use refcounts, you use random sequence counters
<netbsduser> what sold me on it was the extremely cheap nullfs + the avoidance of the monstrous regiment of vnode locking that is found in the other BSDs
<mjg> layering filesystems just does not work
<netbsduser> the BSDs turned the lock vnode op into something which the VFS code consumes to lock vnodes around e.g. namespace manipulation, i don't like it
<mjg> it constantly runs into bullshit
<mjg> making nullfs work required tons of hackery
<mjg> and it resulted in regrettable behavior
<netbsduser> while dragonfly (and i assume linux) handle namespace locking at the namecache/dentry layer
<netbsduser> the traditional nullfs is an abomination
<netbsduser> looking at it just killed any remaining tendency in me to stick with the traditional unix approach to the VFS and namecache
memset has quit [Remote host closed the connection]
<mjg> unix sucks
k0valski18891621 has quit [Server closed connection]
<mjg> is what it is
memset has joined #osdev
<heat> found dave cutler
<netbsduser> i love unix and its great tradition but i avoid a certain kind of cultism which you sometimes find around venerable technologies
<heat> is that why you ported systemd to the BSDs?
<netbsduser> the kind of cult where even limitations or compromises recognised as such by the creators are taken instead as great qualities
<netbsduser> i am thinking here of the amigaos community and their disdain for memory protection
<heat> the amigaos community would love the UEFI community
<heat> "memory protection is a debugging feature" and similar quoten
<mjg> :D
<mjg> dafuq
<netbsduser> systemd to the bsds was 1) out of curiosity to see whether i could do it, 2) so that i could have a basis to hack-and-slash systemd until it resembled something i like, and 3) for trolling, as a shitpost
<netbsduser> i think if someone wants to stoop to trolling and shitposting they should invest effort in doing it properly
<heat> in my next trick i'm porting systemd to artix
<netbsduser> i cannot overstate how funny it was for me to watch the comments roll in as i contracted friends to post systemd on openbsd to the tech forums
<netbsduser> it was less funny to get a threatening email comparing me to, and i quote, "jezebel, that false prophet who undone god's nation in a day"
<heat> hahahaha nah that sounds way funnier
<heat> did theo send that? :v
<mjg> well
<mjg> here is a story for you
<mjg> a freebsd friend of mine was attending a bsd conference
<mjg> was in a bus
<heat> grave mistake, run
<mjg> some guy in an openbsd t-shirt spotted him and said he would say hi, but he does not do that with freebsd people
<mjg> :d
<netbsduser> i think what bothered me by far the most was i created a reddit account to discuss things with the redditors and someone used this feature to report a poster as suicidal. it really bothered me that someone would do that
<mjg> > reddit
<netbsduser> lmao
<mjg> > discuss
<mjg> are you sure you are not the troll here mate
<netbsduser> that might have been the openbsd user's only chance to met another bsd person
<netbsduser> mjg: i was the trolled without a doubt
<netbsduser> i got drawn in to trying to clear up some bizarre claims that were being made about the historical relationship between BSD, the GNU project, and linux
<mjg> the openbsders show up to hackathons tho
<mjg> i got a guy claiming freebsd stole spinlock code from linux
<mjg> which was so absurdly false i don't even know where to begin
<heat> YOU WISH
<mjg> but the nagain, this was the person's only "point" against bsd
<mjg> hey did you know linux was trailing behind openbsd for like 10+ years on something
<mjg> and they STOLE it from there?
TkTech has quit [Server closed connection]
<netbsduser> i have soured on discussing operating systems outside of OS communities, and then only the technical parts of OS communities
<mjg> in the late 90s someone posted a paper with a bunch of fixen, including 2 level bitmaps for fd handling (as opposed to array walks)
<mjg> few years later openbsd implemented it
TkTech has joined #osdev
<netbsduser> it's just a bunch of empty claims and pop facts
<mjg> linux had one-levle bitmap until 2015 or so
<mjg> they have two
<mjg> so raising to the standard set by the aforemenntioned guy
<mjg> i claim linux stole shit from openbsd
<mjg> and late teoo
<mjg> 1/10 shite os
<mjg> just use the original!
night has quit [Server closed connection]
night has joined #osdev
Gordinator has joined #osdev
wereii has quit [Server closed connection]
carrar has quit [Server closed connection]
wereii has joined #osdev
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
dude12312414 has joined #osdev
dude12312414 has quit [Remote host closed the connection]
SGautam has quit [Quit: Connection closed for inactivity]
navi has joined #osdev
\Test_User has quit [Ping timeout: 258 seconds]
<Ermine> Somewhy cpu temperature doesn't want to go under 30 C no matter what I do
<nortti> why do you want it to go under 30°C?
<Ermine> so fans could shut up
<heat> adjust the fan curve?
<heat> 30C isn't too far off summer time room temperature
<Ermine> it's night here now, so temperature is around 20
<Ermine> wouldn't cpu go even hotter if I adjust the curve?
<heat> i mean if you're giving it an impossible target it's futile to leave the fans on
memset has quit [Remote host closed the connection]
pieguy128 has quit [Server closed connection]
memset has joined #osdev
pieguy128 has joined #osdev
<sortie> 30 C? I forgot how to count that low
<sortie> Ermine: It's absolutely safe for the CPU to operate at much higher temperatures so you can turn off the fan and let it find a higher stable equabilllium
<acidx> you can also try liquid nitrogen
<nikolar> Lel
<Ermine> kek
<Ermine> sortie, heat: thank you for advice
Turn_Left has joined #osdev
netbsduser has quit [Ping timeout: 252 seconds]
<heat> thou ist welcome
air has quit [Server closed connection]
air has joined #osdev
navi has quit [Ping timeout: 272 seconds]
randm has quit [Remote host closed the connection]
randm has joined #osdev
xenos1984 has quit [Read error: Connection reset by peer]
graphitemaster has quit [Server closed connection]
graphitemaster has joined #osdev
op has joined #osdev
MiningMarsh has quit [Ping timeout: 264 seconds]
fkrauthan has quit [Server closed connection]
woky has quit [Server closed connection]
woky has joined #osdev
memset has quit [Remote host closed the connection]
memset has joined #osdev
netbsduser has joined #osdev
fkrauthan has joined #osdev
xenos1984 has joined #osdev
\Test_User has joined #osdev
<sortie> Here's something most of you are not thinking about: Networked upgrades from version X of your operating system to the brand new version Y.
<sortie> I've had a prototype of this for many years now that has been incrementally improving and I'm working on finishing it up these days :)
<nikolar> Networked upgrades?
<sortie> You know, apt-get upgrade, but on your OS
<sortie> The reason why this is extra difficult has everything to do with forwards and backward compatibility. Version X has to be able to understand the remote data for version Y and be able to install it.
<sortie> That means that version Y is now constrained and locked in. It cannot change in any way that version X doesn't understand. If you want new packaging system features, you need to roll out the support and wait for version X to have it before you can use it in version Y.
<sortie> E.g. let's say you're like me and you cooked up some custom binary package format and you decide you don't like it, well, you can't change.
<sortie> Or other pieces of meta data like renaming packages, deleting packages, splitting packages, runtime dependencies of packages, if any of that data isn't understood by version X, the upgrade doesn't work.
<sortie> Plus in a custom OS, you might even incompatibly change the ABI, the bootloader, or the boot protocol, or any essential thing.
<sortie> Right? So that's the real reason why I have not merged this networked upgrade prototype officially yet. Because one I do, then I get a version X (the initial official commit with it) that must be able to upgrade to version Y (the upcoming 1.1 release, any decade now)
<heat> i'll call you when i get rpm and dnf working
MiningMarsh has joined #osdev
Gordinator has quit [Remote host closed the connection]
<sortie> And in Sortix 1.2, I may want to make major changes to the binary package format, the kernel, the bootloader, the ABI, all sorts of things. And Sortix 1.1 has to be forward compatible with those changes.
colona has quit [Server closed connection]
<sortie> The essential part of this work has been to reduce and simplify, again and again, the complex relationship between version X and Y. Try to keep the inter-release relation as simple, well defined, and powerful as possible.
colona has joined #osdev
martylake has quit [Server closed connection]
martylake has joined #osdev
navi has joined #osdev
<sortie> For instance, since version X doesn't have the package utilities for version Y, I can't use those to extract the binary packages I installed. But a simpler way is to just change my binary package format so I can extract them with tar(1) directly. Now the upgrade tool just invokes tar instead of my custom programs. Much simpler, forward compatible.
<Ermine> heat: zypper is a bit faster than dnf
<heat> still uses rpm right?
<nikolar> heat pacman is even faster
<heat> pacman is not data safe
<sortie> Likewise if I wanted to change the bootloader or the bootloader protocol or the GRUB configuration, I defined a method where version X can run a script inside the downloaded version Y image and ask for the appropriate GRUB bootloader configuration, and then the upgrader puts that inside /boot/grub/grub.conf, so the next boot uses the new grub config to boot the new kernel
netbsduser has quit [Ping timeout: 244 seconds]
<Ermine> heat: yes, both are rpm frontends I guess
navi has quit [Client Quit]
<nikolar> heat your os isn't data safe
<heat> my os is as data safe as the underlying filesystem
<sortie> If I wanted to change the ABI, it is already versioned with major/minor versionsa, and the operating system upgrader understands this, and never runs the wrong new ABI on an old kernel, but instead schedules the operatng system upgrade on the next reboot
<Ermine> A/B upgrades ftw
<sortie> Essentially over the past year, I've been doing lots of refactorings relating to this, the relationship between Version X and Y, so it can be simple, well defined, and powerful; letting me change things I need to, by planning ahead.
<sortie> The good news is that I'm nearing the finish line on this work. I'm starting to like what I've built and hopefully in the near future I'll be able to merge networked upgrades. Then you can run "tix-upgrade" or some such to automatically upgrade to the next release, whether a stable one, or a nightly
<heat> pretty cool but uh
<heat> rpm go brrrrrrrr
<heat> (not apt, we have values over at onyx incorporated)
<sortie> Even if you use rpm, how do you handle ABI changes? Or other big fundamental differences? Maybe you don't?
<heat> ABI changes? kernel ABI is stable, user packages better use that soname
<Ermine> does rmp use linux-specific facilities?
<heat> no
<sortie> Personally this is the part of osdev where it gets really fun and interesting. Planning ahead for the future, right now, so I can provide a fully supported experience for my users.
<heat> ermine i'm fighting with linux audio again
<heat> fuck this fucking shit
<Ermine> ugh
<sortie> You know how I'm thinking? 80 years from now, I want people to be able to boot Sortix 1.1, and then upgrade it all the way to Sortix 80.0
<sortie> Easily, too, I hope.
<Ermine> my condolences
<sortie> tix-upgrade --you-have-been-asleep-for-99999 # and it just figures it out and keeps looping and rebooting till the future is now
<sortie> Because HTTPS will be long dead by then
<sortie> No chance in hell that TLS continues to be compatible
<Ermine> sortie: actually it would be magnificent work if you manage to carry it out without breaking any of the user workflows
<sortie> In the distant future, people will have to fall back to HTTP because it will continue to work forever (I'll keep running it on my host for that reason, to be compatible with Sortix 1.1 in the distant future) and then rely on the secondary layer of release signing (which hopefully ages better)
netbsduser has joined #osdev
kof673 has joined #osdev
<Ermine> FTP FTP FTP FTP FTP
ptrc has quit [Remote host closed the connection]
SophiaNya has quit [Remote host closed the connection]
<sortie> FTP will also live forever for that reason
<sortie> FTP kinda sucks tho
SophiaNya has joined #osdev
ptrc has joined #osdev
<sortie> You will also have to put Sortix 1.1 behind some IPv4<->IPv6 tunnel in the distant future
<Ermine> that's unlikely
<sortie> IPv4 will die out some day
<nikolar> Very questionable
<sortie> It's a numbers game. At one point, we'll have more than 4 billion hosts that people want to access.
<sortie> I grant you that it's going to a while.
<kof673> it will be up to ISPs...people can start their own "Internets" now but choose not to
<sortie> TLS has several interesting deaths, from the expiration of the root certificates, to the underlying cryptography being fundamentally broken
<Ermine> I'll die earlier even in the best case scenario
<sortie> I want people thousands of years from now to enjoy Sortix :)
netbsduser has quit [Ping timeout: 272 seconds]
Turn_Left has quit [Read error: Connection reset by peer]
op has quit [Remote host closed the connection]
carrar has joined #osdev
karenthedorf has quit [Remote host closed the connection]
MiningMarsh has quit [Quit: ZNC 1.8.2 - https://znc.in]
MiningMarsh has joined #osdev