klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
heat_ has quit [Remote host closed the connection]
heat_ has joined #osdev
<gorgonical> I got 18650 cells for my devterm so I can now osdev in the sauna
<zid> That's a lot of cells.
<gorgonical> my forth has 63881 cells right now which is even more
<zid> My brainfuck interp has like 4 billion
<gorgonical> don't be a show off now
<klange> my brain has, like, three
qookie has quit [Server closed connection]
qookie has joined #osdev
[itchyjunk] has quit [Ping timeout: 260 seconds]
[itchyjunk] has joined #osdev
goliath has quit [Quit: SIGSEGV]
<zid> 0: v=0d e=0000 i=0 cpl=3 IP=0023:db870f07fe804053 pc=db870f07fe804053 SP=001b:0000000000200008 env->regs[R_EAX]=00000000000000a0
<zid> I'm not 100% sure zelda is doing the right thing
<Mutabah> is that code being used as the RIP value?
<zid> It's definitely something, SP is overlapping .text too
<gog> hi
* zid builds gdb, gets garbage from stub, remembers to rebuild gdb with xml
<zid> every time
<mcrod> hi gog
<gog> hi mcrod may i gog you
<mcrod> yes
* gog gogs mcrod
* mcrod gogs
<zid> I feex.
<zid> vbe.c was missing the hack mmap to let zelda write to it
<zid> and task.c was missing the fix to make the elf start from the right location
<zid> I'd just forgotten the diff vs master I needed
<klange> psh, you need a windowing system
<zid> It says it isn't a hacky mmap though klange, it's totally a windowing system.
<zid> The windowing system is "The entire screen" and "every single process gets to share the same window"
<klange> how will you implement cool animations with that
<zid> is the attract demo of link's awakening not a cool animation!?
<zid> It has no sync but it just so happens that running qemu with tcg, on a software framebuffer, is approximately 60fps, compared to 1800fps
<klange> okay scratch that you need timing functions
<gorgonical`> gog: do Icelanders sauna?
<zid> It's supposed to sync against vsync, but you can't get vsync in qemu
<zid> I'd need to sync it against audio, but it doesn't emulate audio
<gog> not so much as go to the pool
<gog> there are usually saunas
<klange> you can't get vsync in most things that just offer a linear framebuffer
<zid> Okay here's my best idea for a sync primitive
<gorgonical`> I heard recently the swimming pool is like the community hangout
<gog> basically
<zid> I go to sleep after every 'frame', and send it 60 icmp packets a second to wake it up.
<zid> How about that
<gog> most of the people i know from outside of work i know from the gym/pool :P
<zid> It supports icmp!
<zid> I am watching a pirated bbc 4 documentary about decoding linear B
<klange> meanwhile, a background noise of timer interrupts and network card interrupts and audio buffer rollover interrupts blares away continuously
<zid> E
<bl4ckb0ne> why E
<gog> why not E?
<bl4ckb0ne> why not G
<zid> EGG?!
<gog> i prefer E
<bl4ckb0ne> i like eggs
<zid> F U N E X?
<zid> 9, I 8 X
<gorgonical`> I wish I had a sauna buddy. My partner does not like them
<bl4ckb0ne> same
gog has quit [Ping timeout: 265 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
[itchyjunk] has quit [Remote host closed the connection]
Arthuria has joined #osdev
heat_ has quit [Remote host closed the connection]
heat_ has joined #osdev
Arthuria has quit [Ping timeout: 240 seconds]
heat__ has joined #osdev
heat_ has quit [Read error: Connection reset by peer]
osmten has joined #osdev
nyah has joined #osdev
xenos1984 has quit [Quit: Leaving.]
xenos1984 has joined #osdev
slidercrank has joined #osdev
heat__ has quit [Remote host closed the connection]
heat__ has joined #osdev
gxt__ has quit [Ping timeout: 240 seconds]
gxt__ has joined #osdev
dh` has quit [Ping timeout: 240 seconds]
gorgonical has quit [Ping timeout: 240 seconds]
leon_ has joined #osdev
leon has quit [Read error: Connection reset by peer]
leon_ has quit [Ping timeout: 245 seconds]
leon has joined #osdev
osmten has quit [Quit: Client closed]
osmten has joined #osdev
gmacd has joined #osdev
gmacd has quit [Ping timeout: 246 seconds]
osmten has quit [Quit: Client closed]
sinvet__ has quit [Remote host closed the connection]
gmacd has joined #osdev
zxrom__ has joined #osdev
zxrom_ has quit [Ping timeout: 240 seconds]
gmacd has quit [Ping timeout: 250 seconds]
zxrom__ is now known as zxrom
SGautam has joined #osdev
heat has joined #osdev
heat__ has quit [Ping timeout: 246 seconds]
danilogondolfo has joined #osdev
GeDaMo has joined #osdev
Bitweasil has quit [Server closed connection]
Bitweasil has joined #osdev
osmten has joined #osdev
Terlisimo has quit [Quit: Connection reset by beer]
slidercrank has quit [Quit: Why not ask me about Sevastopol's safety protocols?]
gog has joined #osdev
osmten has quit [Quit: Client closed]
puck has quit [Excess Flood]
puck has joined #osdev
Terlisimo has joined #osdev
slidercrank has joined #osdev
elastic_dog has quit [Ping timeout: 240 seconds]
osmten has joined #osdev
elastic_dog has joined #osdev
bgs has joined #osdev
crankslider has joined #osdev
slidercrank has quit [Read error: Connection reset by peer]
crankslider is now known as slidercrank
<mcrod> hi
q3lont has joined #osdev
<sham1> hi
<kazinsal> hi
q3lont has quit [Ping timeout: 245 seconds]
goliath has joined #osdev
SGautam has quit [Quit: Connection closed for inactivity]
ZipCPU has joined #osdev
q3lont has joined #osdev
nanovad has quit [Ping timeout: 240 seconds]
nanovad has joined #osdev
<heat> hi
<Ermine> hi
q3lont has quit [Quit: Leaving]
slidercrank has quit [Quit: Why not ask me about Sevastopol's safety protocols?]
<gog> hi
<heat> i just got my eeprom programmer
<heat> now it's not really useful so im going to need to do some hackery to put it to good use
<gog> some jiggery pokery?
<gog> also i am pain
<Ermine> Hi pain I'm Ermine
<heat> why are you the concept of pain
<gog> trainer
<gog> he tried to kill me
<gog> he nearly succeeded
<gog> i'm filing charges for attempted murder
<Ermine> Oh my
<heat> tienes de ser fit gog
<heat> no hay dolor, solo fitness
<heat> man how do you say do you even lift bruh in spanish
<gog> puedas lift, put(o|a)?
<heat> putx
<gog> jejejejjee
<heat> anyway that asks "do you lift"
<heat> where I want the *even*, the even is very important
<gog> siquiera?
<gog> idk
<gog> maybe aunque?
<gog> omg these fucking api docs
<heat> spanish api docs are HARD
<gog> no
<gog> the example customer they have
<gog> it's rick sanches
<gog> shanchez
<heat> omg
<gog> cmon morty, we're uhh *burp* we're going to iceland now
<heat> is that a MOTHERFUCKING JO- I MEAN RICK AND MORTY REFERENCE
<heat> cmon morty, *burp* we're going to request an API key now
<gog> hahahah
<gog> jejejejejeje
<heat> jajajajajaja
<gog> jijijijiji
dzwdz has quit [Ping timeout: 240 seconds]
Left_Turn has joined #osdev
<gog> heat
<zid> gog
<mjg> fucking heat, gtfo of my city
<gog> zid
<mjg> felony temperature reading all day
<zid> heat: I told you what to do with it
<mcrod> hi
<zid> my weather station is down :(
<mcrod> i am starting to lose my patience
<Ermine> gog: may I pet you
<gog> mcrod: what's the matter
<gog> Ermine: yes
<mcrod> "in hexadecimal, what would come after 0x0F"
<mcrod> "uh.... 0x0G"
* Ermine pets gog
<gog> lmfao
* gog prr
<zid> that's better than 0x20
<gog> it's not
<mcrod> no it isn't
<zid> which is what the guy we spent 4 hours trying to teach to count
<zid> said
<mcrod> 0x20 is at least valid
<zid> 0xG at least follows a pattern
<zid> pattern matching > random assortment of numbers with no rhyme or reason
<gog> and 0x20 shows the understanding that F is the highest digit
<mjg> mcrod: who are you asking tho
<mjg> does that person hold a cs degree by any chance
<mcrod> intern
<mcrod> an intern who I am trying desperately to teach
<mjg> don't
<mjg> i already tried that
<zid> teach him rubik's cube instead
<gog> if i go back to school it's gonna be for ee
<mjg> they don't get squat, you bail
<mjg> safer for everyone
<mjg> if i go back to schell it's gonna be for OH
<gog> OHhHHHHH
<mjg> OHHH
<gog> or maybe i'll get an MBA
<gog> become CEO
<sham1> > mba
<mjg> duuuude
<mjg> that's one OOOOOFFFF moment
<gog> i was joking
<mjg> i don't know mate
<mjg> you are kind of sus
<Ermine> We are having teaching practice next year
<gog> what about me is sus
<mjg> heat says you understand genz?
<gog> not really
<gog> i just know memes
* mjg is gonna keep gog on a watchlist for now
<gog> :|
<mjg> you grooming a genz or something
<Ermine> Nobody taught us how to teach though
<gog> no, and that's not funny
<sham1> I wouldn't call gog sus
<mjg> Ermine: who are you 'us' in this context?
<mjg> s/you//
<Ermine> mjg: students of my faculty
<mjg> oooofff
<mjg> you may want to binge tiktok over the weekend
<mjg> get some language prep at least
<Ermine> So no guarantees I wouldn't throw anybody out of the window
<mjg> just make sure you teach on the 1st floor
<mjg> (ground floor?)
<sham1> I'd like to point out that genz is at the stage where most would be in university and such. The new youngens are gen alpha
<zid> Why did my Y perm leave me with a T perm
<mjg> if teaching anything cs you are already losing tho
<mjg> before people would steal projects from previous students
<mjg> nowt hey get chatgpt to write them i hear
<Ermine> I'm at the last grade, so ~100% of students are genz on my university starting from the next term
<zid> I scratched myself while outside, if I did of tetanus, remember me
<zid> die*
<gog> just go to the clinic and wait approx 10 years to get a DPT booster
<zid> dpt = diptheria?
<zid> oh, that's what the d is, the t is tetanus
<zid> the p is polio
<mjg> gog: in pl you easily wait 8 months for things like gastrocopy
<heat> the d stands for dumbass
<zid> when they make a clone of your stomach?
<mjg> on the other hand you can get one privately 3 days later
<heat> those vaccines make you dumb
<mjg> zid: ye it is pretty neat
<mjg> zid: innit
<heat> innit
<zid> we're currently up to.. 13.8 week wait
<zid> cus torie
<zid> s
<gog> mjg: it's about like that here in .is rn
<zid> cut the staff, cut the funding, say you'll fix it by selling it to america
<gog> unless they really think you have cancer or smth then you go to the front of the line
<mjg> gog: solid. i thought it's mostly poland and other 3rd world countries + the us who have really bad medical
<zid> that isn't bad?
<zid> That's just how it should work
<zid> urgent care is urgent
<zid> non-urgent is non-urgent
<gog> the US has great medical if you can pay
<mjg> sell one kidney to treat the other one
<mjg> no thanks
<gog> iceland has OK medical for the most part
<gog> but the wait times for any kind of specialist is very long, even for acute care
<heat> meanwhile in most of the world: literally die
<mjg> ER is super bad in pl, i had a friend who passed away after they told him to wait
<gog> :<
<mjg> had an undiagnosed heart condition
<gog> last time i went i waited about 6 hours. i think part of that was making me wait because i hit my head pretty hard and they wanted to see if i got loopy
<mjg> that's probably fair
<mjg> they still could have told you the timeframe tho :p
<gog> that said, the intern who closed up my head wound did not flush it very well because there's a piece of stone or glass or smth under the scar lol
<zid> It's just how a rationed system works, people will over-use the service until the waiting times become "too long to bother"
dzwdz has joined #osdev
<zid> and it naturally self regulates
<mjg> natural selection by weeding out those who can't wait
<mjg> gg
<zid> 6 hours is apparently the queue length people will put up with to get a free bandage on a scrape
<mjg> gog: wut
<zid> if it were less, the queue wouldn't be as long as it is
<zid> gog: That's your 5g implant, you weren't supposed to notice
<mjg> you mean that elon's invention?
<mjg> neurolink was it?
<mjg> maybe you need to slide a sim card into it to access the internet
<zid> gog: Do you want a pet salticus scenicus?
heat has quit [Remote host closed the connection]
heat has joined #osdev
<gog> yes
<gog> i like spiders, i have a knit plushie spider on my desk
<zid> is it legal to send you one, I imagine it's a better creature than anything in iceland, might eat everybody
<zid> "mooom, zid's being mean again!" "Did he call you a name?" "No, he insulted our native species and called them weak :("
<gog> i don't think you can send me one, but they might already exist here idk
<mcrod> my girlfriend is facing a $6,700 bill
<mcrod> due to something that affects <=2% of women
<zid> dick too big?
<mcrod> if you want stress, try american health care.
<mcrod> zid: more like, "this was an accident and what happened is blindingly rare"
<FireFly> I thought the point of insurance was to smoothen the expenses for those blindingly rare incidents out
<FireFly> so that it's less terrifying to like, just exist
<zid> It's been a typo all along, americans have ensurance.
<zid> It ensures they can't afford to live
<mcrod> i have health insurance, and I went to the doctor
<mcrod> they didn't cover anything
<mcrod> $160 outright
gorgonical has joined #osdev
<gorgonical> gog: when I skewered my foot on a branch and urgent care sewed my foot shut they left a piece in there that eventually grew into a cyst the size of a chickpea that made walking nearly impossible
<zid> neat
<gog> owie
lanodan has quit [Ping timeout: 258 seconds]
dude12312414 has joined #osdev
<heat> ouchie
<sham1> Yikes
goliath has quit [Quit: SIGSEGV]
goliath has joined #osdev
xenos1984 has quit [Quit: Leaving.]
goliath has quit [Quit: SIGSEGV]
osmten has quit [Quit: Client closed]
lanodan has joined #osdev
lanodan has quit [Client Quit]
lanodan has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
puck has quit [Excess Flood]
puck has joined #osdev
<heat> all of paul mckenney's articles and stuff have quick quizzes and this is seriously great
<heat> it's really a great way to learn
<zid> hint for dating heat, give him a quiz
<zid> heats love quizzes
<heat> quick quiz what's my favourite colour
<gorgonical> perfect for that tiktok attention span
<gog> red
<heat> quick quiz 2: why do you need a memory barrier before rcu_read_lock
<heat> gog, actually on point
<heat> god fucking damn it
<zid> so that the lock is locked
<zid> or not locked
<zid> and not "whatever it was last time my cpu checked"
<heat> false, there's no barrier in read_lock
<heat> trick question
<zid> that's why you need one
<heat> only for CPUs that really need it like the Alpha
<zid> there's none *in* it
<zid> so you have to add one if you want one
<zid> weak memory models are people too heat
<zid> alahp bset cpu
<heat> rcu_read_lock is so cool that it does literally nothing on CONFIG_PREEMPT=n, and on =y it just disables preemption, super cheap
<zid> heat what would you say if I said I've never read any linux kernel source
<heat> you have kissed girls
<zid> not reall
<zid> I'm not really into kissing
<zid> turns out they have nipples, WAY cooler
<heat> then i'd say you're missing out on great linux kernel source OR great kissing of women
<gorgonical> so do you, zid
<zid> I can't suck those
<heat> sounds like you haven't tried
<gorgonical> you must simply learn contortionism
<zid> more like... put on 50kg
<gorgonical> that could also work
<zid> not also
<zid> only
<zid> how do you think sternums and chins work
<gorgonical> if you have your neck extended that would work also
<heat> evolve
<heat> turn yourself into a superior being
<zid> gorgonical already has apparently
<gorgonical> a giraffe-man
<heat> create a new species
<zid> no chin and a prehensile neck
<gorgonical> you think giraffes can suck their own nipples?
<zid> no
<zid> they have a neck
<gorgonical> but it's like really long
<zid> infact they have a rather BIG neck, you may have noticed it
<heat> <heat_> #osdev stay on topic challenge [IMPOSSIBLE] [GONE WILD]
<gorgonical> I remember once upon a time when geist would scold me for being off-topic. We broke his spirit
<zid> he just hasn't been around in ages
<heat> he was here yesterday
<heat> we broke him
<zid> been here rather than been around
<bnchs> talking about the linux kernel
<bnchs> to giraffes sucking their own nipples
<bnchs> osdev moment
<gog> real osdev hours who up thinking about giraffe nipples
<bnchs> i'm up thinking about kissing girls
<gog> same
<gog> alas i'm a programmer
<gog> forever_alone.jpg
<zid> You're married gog
<bl4ckb0ne> kiss your computer
* gog gives computer lidpats
<zid> I should marry heat
<zid> It seems easier than getting a woman to marry me
<zid> we could talk about locks
<heat> but u never talk about locks
<nortti> are you trying to get an EU spousal visa?
<heat> nor flamegraphs
<zid> well you didn't marry me yet
<zid> heat how do I do opengl in linux
<heat> zid does not need a visa
<zid> I do
Maja has joined #osdev
<heat> he's british, he's not an immigrant, he's an <italic> expat </italic>
<zid> expat
<zid> expat life
<Maja> when you need to parse some XML real bad
<gorgonical> is there any distinction between expat and immigrant other than richer and more white? or is there secretly hidden in it a notion that loads of expats eventually return to their home country?
<gorgonical> just idle thought
<heat> i dont think so
<zid> expat = rich british person, immigrant = dirty brown person
<zid> that's literally it
<heat> no
<heat> don't forget eastern europeans
<zid> those are dirty brown people
<gorgonical> i agree that's definitely the majority of the sentiment
<sakasama> Immigrants are the ones that need to be managed.
<zid> I don't make the rules i just enforce them.
<gorgonical> hmm sakasama that's a good point
<heat> digital nomads are the new expats
<zid> heat, get a nice online job that pays a few hundred dollars a month, and we'll move to thailand together
<bl4ckb0ne> are you refering to the xml lib?
<bnchs> gog: i hug my computer
<bnchs> and imagine it's someone
<sakasama> Wrap her in silicone.
<bl4ckb0ne> i can hug you bnchs
<gorgonical> and if you wrap it correctly possibilities open up
<bnchs> and tear up
xenos1984 has joined #osdev
<bnchs> sorry :P
gorgonical has quit [Remote host closed the connection]
<bnchs> i haven't had a hug in years
<bnchs> maybe a decade
<geist> I'm here
<bnchs> hi geist
<geist> Honestly yeah I'm a bit tired of trying to keep things in topic
<vin> Hi, I have question on virtual memory -- I believe rss /proc/pid/smaps indicates the size of memory accssed by an application. My program mmaps a 150gb file and does repeated calls to the first 1gb of memory randomly. I record the smaps every 120s and what I expected is the rss to remain constant after a few seconds because the same 1gb is being accessed. But I see it growing by a large number --
<geist> So I just step in if it gets really racist or something
<vin> other than the 8B read-modify-write the program does nothing else and I have no other data allocated on the heap. Is my understanding of rss wrong?
<heat> hi geist what's up?
<heat> vin, so if you're accessing the same region the rss must remain relatively constant
<heat> so something's up
<geist> Not much
<heat> hmm, i wonder now, does a cmpxchg have funky semantics wrt page faulting?
<heat> or does it act like it was going to write anyway, and prefaults it writeable even if it wasn't going to write
<vin> yes! heat here is my simple GUPS benchmark where I allocate 150gb and set the hot set size as 1 gb with 100% access skew (-S 1.0) https://paste.sh/l2UvR72h#hlO0gVq7C-WhXB_pbZ9cBwVh I see nothing with how I am finding the address location to perform read-modified-write
<heat> your location is pseudo-random it seems?
<heat> loc = fast_lfsr_rand64(rng) & (~0x7); // align to uint64_t
<heat> then loc = pow2_opt ? (loc & size_mask) : (loc % size);
<vin> yes heat
<vin> but I do loc % hotset_size to only acesss in the first 1gb area
<heat> hotskew_rand_thresh = (uint32_t) (1.0 * UINT32_MAX * hotset_skew); this calc seems super funky
<zid> I just found out that a TV person I liked from the 90s is now a raving loonie :(
<GeDaMo> That doesn't narrow it down much :/
<zid> chris barrie
<zid> Like, you can understand someone like noel edmonds being a giant prick, I figured chris barrie was safe
<GeDaMo> Red Dwarf?
<zid> aye, him
<GeDaMo> What did he do?
<zid> loud antivax idiot
<GeDaMo> Oh, that's sad
<gog> that usually comes with other Opinions
<zid> not sure how you go from presenting engineering documentaries and hanging out with a mainly black cast in a very popular show
<zid> to being an antivax moron
<gog> well as they say
<gog> it's cold outside
<gog> with no kind of atmosphere
<zid> I need to worry when meeting linus about "DANGER EJECTION"? oh no
<zid> he really is a chad
<heat> the world isn't ready for fighter-jet-equipped linus
<bslsk05> ​www.fzu.cz: Operating Systems as if they were airlines
<gog> aw there was one about BeOS that was on a different list iirc
<heat> this is very early 2000s
gog has quit [Quit: Konversation terminated!]
<heat> geist, is the baud rate emulated in qemu serial?
slidercrank has joined #osdev
danilogondolfo has quit [Remote host closed the connection]
<zid> heat how do I
<zid> run the things ssh-agent spits out
<zid> `ssh_agent` ?
<heat> maybe? i don't remember
qubasa has joined #osdev
<zid> eval `ssh-agent`
Maja has quit [Ping timeout: 250 seconds]
<zid> yea that worked, thanks google, better than heat
<heat> thank you gorgle
<zid> can wrap in if -z ssh_auth_sock
<zid> there's also ssh-agent bash? this is hard
gareppa has joined #osdev
MuonNeutrino has quit [Remote host closed the connection]
gareppa has quit [Quit: Leaving]
<heat> oh cool arm64 linux now leverages the mmu contiguous bit
<heat> solid wins it seems
<heat> well, there's a patch set for it I mean
<zid> what's a contigugous bit?
<zid> next pte is next to this one physically also, to skip some lookups and stuff is my best guess
<heat> yep, something like that
<heat> helps on the TLB
<zid> so if a read straddles a page, you can do pte lookup of the base addr, and check contig bit to delay having to check another pte
<zid> or whatever
<heat> AIUI 4 contiguous ptes can get bundled into one TLB entry for free
<zid> can still shove it into the tlb after
<zid> oh and it does ranges in the tlb? handy
<heat> yeah i believe most CPUs do not have the fixed-size thing Intel does
<zid> can you mess it up and get into like a 1 + 4 + 1 situation instead of a 6+2 because it uses tag bits, or is it doing a proper range algo?
<heat> i dunno
<zid> smh
<heat> all i know is that fixed-size TLB entries is mostly gone from AMD and ARM designs as far as im told
<zid> AMD AMD
<heat> i.e you can't get silly problems with large pages where if you have too many your perf can get degradated because you don't have enough 2MB tlb entries
<heat> ... and because of that, many people avoid large pages, so intel is not going to increase the number of large tlb entries, so you cant use them very well, etc
<heat> oh ok you have some funny restrictions
gog has joined #osdev
<heat> for 4KB pages it works for 16 entries and you need those 16 entries to be 16 * entry_size aligned in virtual and physical addresses
<zid> okay so 1+16+1 is true then
<zid> if I map 0xF000 to 0x21000 or whatever
gorgonical has joined #osdev
gabi-250 has quit [Remote host closed the connection]
gabi-250 has joined #osdev
<heat> zid, i don't think that's a legal contiguous mapping
<zid> You'd set it on the middle 16
<zid> and have 2 ptes without it
<zid> (middle 16-1?)
torresjrjr_ is now known as torresjrjr
duckworld has quit [*.net *.split]
slidercrank has quit [Ping timeout: 250 seconds]
duckworld has joined #osdev
zxrom has quit [Quit: Leaving]
zxrom has joined #osdev
<bl4ckb0ne> gz
<bl4ckb0ne> why x11 tho
<zid> Turns out esc is 9, not 27, who knew
<snowcra5h> zid: hell yeah very cool.
<zid> Because.. you have to support X11 if you want it to work on linux?
<bl4ckb0ne> but wayland 👉👈
<zid> I've never had a wayland before
<zid> don't intend to start now
<snowcra5h> don't bother.
<zid> and have no way of making it happen
<zid> even if I were to want to
<puck> step one: install sway step two: run sway (it runs under X too! :p)
<snowcra5h> lol
<gog> nice
<snowcra5h> sway is the way
* gog sways
<snowcra5h> zid: you got your os on git or anything ?
<bl4ckb0ne> i can be your first wayland zid
<bl4ckb0ne> grab my hand
<zid> snowcra5h: yea but it's tiny and doesnt' do any OS stuff
<zid> bl4ckb0ne: see previous comment, could not if I wanted to
<bl4ckb0ne> :(
<Ermine> bl4ckb0ne: if not talking about serious work, X11 is easier to program against, since it gives you primitives to draw text, some figures, etc
<zid> And then I ruin it by using opengl anyway
<zid> so now I have to render my own text again
<bl4ckb0ne> Ermine: cairo or pixmab are pretty steaightforward
<bl4ckb0ne> you can port wlroots to any os pretty easily
<Ermine> Still you need to use additional libraries, while really basic stuff is already in libx11
heat has quit [Remote host closed the connection]
<bl4ckb0ne> like what
heat has joined #osdev
<zid> heatato.
<bl4ckb0ne> you just need posix and a framebuffer
<Ermine> XDrawString, XFillArc, XDrawLine, keyboard input handling (in wayland you need xkbcommon)
<Ermine> But again, I'm talking about toys
<zid> X11 significantly easier than winapi to do the same as I just did, at least
<Ermine> For Real Thing, those are inadequate
<zid> I am very familiar with winapi though comparitively
<zid> It's not like winapi ever stopped having GDI
<zid> and nobody complains that it has it
<zid> dwm.exe still implements basic line drawing, oh no
<Ermine> On the first glance I found libX11 and winapi quite similar
<zid> yea I mean, ultimately, they're both doing the same job
<zid> so if the api WERE radically different you'd be surprised
<zid> they're always both going to be "Do some init work, make a window, pump events"
<Ermine> btw, there's a difference in event handling: on windows you do GetMessage, TranslateMessage and DispatchMessage and you need separate function to handle events. In X11, you do XNextEvent and get XEvent structure, which you can use as you like
<Ermine> And also I don't like WNDCLASS stuff in winapi
<Ermine> I have only a little of experience with winapi though
<Ermine> Afaik in Wayland you can just poll a fd, which is best option imo
<bl4ckb0ne> x11 doesnt depend on xkbcommon?
<zid> "there's a different in event handling:" -> describes the exact same system
<Ermine> no?
<zid> You call a wait for events function, then you handle it
<zid> I'm not sure how X implements IPC though, which is bundled into the 'normal' message queue in windows though
<zid> dbus? :P
<Ermine> DispatchMessage calls handling function, XNextEvent doesn't
<zid> you don't have to dispatchmessage
<zid> that's only if you want to send it to a certain window's wndproc
<Ermine> zid: X11 protocol over Unix domain socket and libX11 (or libxcb) does actual socket stuff and parses protocol messages
<zid> (and translatemessage just.. turns certain WM_s into WM_CHAR I think, dunno why it's so standard other than "so that you don't forget to")
<zid> yea I know X11 is socket based, what of it?
<Ermine> zid: all ms tutorials do DispatchMessage, but thank you
<Ermine> bl4ckb0ne: you can use libx11 without xkbcommon
<zid> yea it's a very natural workflow to dispatch it
<zid> but it isn't at all required
<bl4ckb0ne> not even libinput?
<zid> I am linked against X11 and GL, what else would I wanna link against?
<Ermine> bl4ckb0ne: yeah. libX11 is enough for 90s state-of-the-art I guess
<zid> like, why would I personally need to care about libinput etc, surely that's for things who wanna do stuff outside of windowing
<bl4ckb0ne> libwayland-client
goliath has joined #osdev
<zid> see: directinput, xinput, etc
<Ermine> bl4ckb0ne: one professor from my faculty wrote a basic c++ library around libX11. Its goal is to demonstrate inheritance and other c++ stuff
<bl4ckb0ne> yikes
<bl4ckb0ne> all you need is K&R Ermine
<zid> K&R2*
<Ermine> I wanted to rewrite it to wayland, but I was lazy to learn libcairo, freetype and stuff
<zid> I should write a freetype thingy at some point
<zid> render a bunch of fonts to a texture, process kerning information, etc
<Ermine> At this point I would prefer ssf2
<zid> solo-self found two
<zid> for when regular single player arpgs are not enough
<Ermine> :D
<Ermine> btw zid, if DispatchMessage is not mandatory, can I avoid writing wndproc at all?
<zid> In.. theory? But you'd have a very unresponsive application :P
<Ermine> Why
<zid> well, you could always unpack the MSG and call DefWndProc manually
<zid> presumably
<zid> I don't *think* anything explodes if you do that
<zid> DefWindowProc*
<Ermine> I want GetMessage(&msg), then switch(event_type(&msg)) and process appropriately, is it possible?
<bl4ckb0ne> cairo is dead simple
<bl4ckb0ne> git gud Ermine
<zid> should be fine, barring any weirdness where something bypasses the message queue and tries to call your wndproc directly to inject messages
<Ermine> bl4ckb0ne: re git: wdym?
<bl4ckb0ne> man git-gud
<Ermine> no such page
gareppa has joined #osdev
<bl4ckb0ne> im afraid i cant do much more
gareppa has quit [Remote host closed the connection]
<bslsk05> ​www.urbandictionary.com: Urban Dictionary: GiT GuD
<zid> git -> get, gud -> good
<zid> GET GOOD NOOB LOL GG NO RE
<Ermine> Lol
<Ermine> Much slang
<bl4ckb0ne> you'll earn my dadful respect when I see a wayland client
<Ermine> I think I have a client from wayland-book somewhere
<Ermine> Lemme see
<Ermine> Yeah, it even works and shows chess-like stuff
<Ermine> bl4ckb0ne: I think I would make my 2d primitives library with blackjack and hookers instead of using cairo
<zid> time to pull my wglskeleton and add a mainx.c
<bl4ckb0ne> 1 word
<bl4ckb0ne> pixman
<Ermine> not enough blackjack and hookers
<Ermine> I have concerns about their perfs
<bl4ckb0ne> well im not your dad
<zid> pixmap is a superhero?
<bl4ckb0ne> pixman is simple, lightweight amd blazing fast
<bl4ckb0ne> i even wrote wlroots' software renderer with it
<Ermine> These are used by gdk which make swaybg slow enough to concern Kenny
<Ermine> Well ok if they are not the reason then ok
<Ermine> Well I googled pixman and the first link is about vulnerability in pixman
<bl4ckb0ne> ignore those
<bl4ckb0ne> those are naysayers
<bslsk05> ​gitlab.freedesktop.org: render/pixman/renderer.c · master · wlroots / wlroots · GitLab
<Ermine> Well I trust you
* Ermine marks it in a todo list
tomaw has quit [Quit: Quitting]
* bl4ckb0ne pats Ermine
<bl4ckb0ne> now if I can fix helios uefi boot maybe ill bring wayland there
heat_ has joined #osdev
tomaw_ has joined #osdev
tomaw_ is now known as tomaw
heat has quit [Ping timeout: 246 seconds]
<Ermine> wouldn't you need drm for this?
<bl4ckb0ne> idealy yeah
<bl4ckb0ne> but
<Ermine> framebuffer is enough?
<bl4ckb0ne> wlroots has a very nice allocator interface that can be plugged in a framebuffer driver easily
<Ermine> noice
<Ermine> I guess it holds for linux too? I have an ancient laptop and I believe its gpu isn't supported by mesa
<bl4ckb0ne> also I have my eyes on simpledrm
<bl4ckb0ne> yeah you can run the software renderer there
heat has joined #osdev
<Ermine> cool
heat_ has quit [Ping timeout: 246 seconds]
<bl4ckb0ne> anyway, ping me on #wlroots or #sway-devel if you need help regarding that
<Ermine> Well it needs repair anyway, so that question was rather theoretical
<zid> what's a wlroot
<zid> well, gentoo told me
<bslsk05> ​gitlab.freedesktop.org: wlroots / wlroots · GitLab
<zid> Pluggable, composable, unopinionated modules for building a Wayland compoistor
<zid> I don't know what building a wayland compositor means though so it's a fairly unhelpful answer
<bl4ckb0ne> its the server part of wayland
<zid> so.. it's to help porting wayland?
<Ermine> Wayland compositor basically has duties of both X server and X window manager. So writing Wayland compositor from scratch is harder than writing X WM. Wlroots helps a lot
<zid> so.. it's to help porting wayland?
<Ermine> Porting it would help, but first you need to port kernel stuff used by wayland if you're talking about porting to a new os
<zid> so what's it for then, if not porting?
<bl4ckb0ne> yes, if you can run wlroots you can run.sway or any wlroots based compositor and run clients
<zid> so it's for porting?
<bl4ckb0ne> it handles the graphics and io
<bl4ckb0ne> porting what
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
<zid> wayland support
<puck> zid: it's a compositor framework
<bl4ckb0ne> yes
<zid> like jemalloc exists so you can port malloc to your shit
<zid> in practice
<bl4ckb0ne> kinda
<puck> zid: it's roughly what X is to X+Window manager
<zid> it has a 'known' backend that you can write up, with some configuration available for exactly how you did it
<zid> puck: then why is it 'pluggable and for building a compositor', why is it not just 'a compositor'
<puck> zid: the term compositor here is used for the thing that takes the window buffers and composits them on screen. like. it's an overgrown collection of helpers you can use to build your own wayland compositor "from scratch"
<zid> (specifically, a wayland api'd one, rather than xcb one)
<puck> zid: there's no "wayland api" for window management, fwiw
<zid> Okay so it's for porting
<puck> zid: there's also no one "wayland server" - the compositor is responsible for receiving the connections from the clients and processing them. it can do whatever it wants with them, e.g. it doesn't have to tell some "higher entity" where the windows should be on-screen
<zid> I don't understand anything you just said
<zid> what wayland server?
<puck> zid: well, your implication is that there's *something* to be ported that actually handles the wayland messages
<zid> I mean, kinda? I know wayland is funky and likes to do everything in the lcient, sort of like how windows just injects kernel32.dll into every process
<zid> and they do everything 'above' the syscall level
<puck> that's also not true, tbh
<zid> but a 'kernel32.dll kit' would be for porting winapi to a new platform
<bl4ckb0ne> wayland has defined protocols between a client and a server
<bl4ckb0ne> wlroots helps you build the server part
<zid> I was just informed there wasn't one
<zid> you two fight it out and get back to me :p
<clever> i each each wayland compositor is another implementation of a "wayland server"
<puck> zid: i meant "window management" in the style that an X window manager talks to the X server
<clever> and there are different compositors for opengl, drm, and more
<zid> puck: okay? I never mentioned window management
<zid> I just didn't understand *why* you mentioned it
<zid> not that you need to mention it again, with a slightly different definition
<puck> tbh i'm still trying to figure out why you are going with "porting" as term for implementing an api
<zid> I mean, pick a new word then if you want
<puck> "implement" :p
<zid> But the *reason* you implement various APIs is to port them
<zid> so a thing that helps you implement an API, is to help you port things
<puck> is firefox a browser port?
<zid> firefox is an implementation of firefox
<puck> like, does it contain a javascript port
<zid> If someone gave me a 'firefox making kit'
<zid> I'd use it to port firefox to something else
<zid> a flint and tinder is not a fire
<zid> it's a firemaking kit
<zid> It's for creating new instances of fire in new locations
<puck> it's a fire support library
<puck> :p
<zid> Not sure fire has support libraries
<zid> my metaphor is hurting
<bl4ckb0ne> you're hurting my head
<puck> like, wlroots is a wayland compositor making kit. a wayland compositor uses the wayland protocol to talk to wayland clients
<puck> and an unqualified "wayland" i'd say describes the protocol, not the client or the compositor
<zid> Okay, and why would I want one of those
<zid> for 'adding' wayland support for something?
<zid> s/t for/t to/
<puck> basically yeah. it's for if you don't want to bother writing your own code to handle shm/dmabuf, and interacting with the drm subsystem
<zid> so then I am going with it's for porting either things to wayland, or wayland to things
<zid> you just disagree with the word port
<bl4ckb0ne> yes
<puck> maybe. most people don't write a compositor and then add wayland support to it later
<bl4ckb0ne> theres no port, its just another way of throwing pixels at your user
<zid> I mean, not for me there isn't
<zid> it'd just be extra code in the middle, for all my irl setups
<zid> rather than imaginary ones
zxrom has quit [Ping timeout: 245 seconds]
zxrom has joined #osdev
<Ermine> a/quit
<bl4ckb0ne> bye Ermine
<Ermine> lol
<Ermine> I'm here
<bl4ckb0ne> no
<Ermine> Who's Ermine then?
* bl4ckb0ne shrugs
gabi-250 has quit [Ping timeout: 240 seconds]
<heat> MADV_DONTNEED
bgs has quit [Remote host closed the connection]
<bl4ckb0ne> :(
gabi-250 has joined #osdev
slidercrank has joined #osdev
<gorgonical> I have spent a good portion of this afternoon carving away at plastic so my planck keyboard fits onto my clockwork pi devterm
<gorgonical> It now has a sufficiently janky, cobbled-together cyberdeck look
tomaw has quit [Quit: Quitting]
tomaw has joined #osdev
<bl4ckb0ne> can you run doom on it
<junon> What should the flags be for page table frames themselves?
<junon> I have NX|W|P right now but for some reason that's causing issues. Do they need to be executable?
<gorgonical> bl4ckb0ne: yes
<heat> junon, It Depends
<heat> in general permissions get applied "top-down"
<gorgonical> there's an inheritance to it
<junon> It seems so, removing NX made things work again, bizarre. Is that because TLB needs it?
<heat> i.e if the cpu is traversing the page tables and see NX when you're executing, it thinks the mapping is NX and faults
<heat> same for any other permission bit
<heat> like, you're not actually "mapping page tables"
<heat> setting a top-level PTE read-only will not affect the CPU's ability to write to that page table
<heat> it will only make all the underlying mappings forcibly read-only
<junon> Ahaaaaaa okay. So by setting NX at the top, I effectively set NX for all complete mappings (those pointed to by L1 entries) NX?
<junon> In this case I'm mapping in executable code, so that makes sense.
<heat> yes
<junon> Gotcha, I think I knew that already but haven't really run into it until right now. Thanks heat and gorgonical :) appreciate it!
<heat> if it sees a missing perm when doing the traversal it just aborts the walk
<gorgonical> yeah the inheritance property is also not universal across architectures, but it is prominent on x86 and can cause subtle misbehavior if you aren't cautious
<heat> so in theory I guess you can and maybe should have U set on upper levels for userspace mappings, and unset for kernel mappings
<heat> to avoid being able to defeat ASLR by measuring page faults or something
<junon> Where can I find information about the U flag?
<gorgonical> Why is the device tree file that QEMU supplies so bad?
<gorgonical> What the hell
<gorgonical> sdm vol 3 supplies all knowledge you can ever need
<heat> junon, user mapping, accessible to ring 3
<heat> and in some cases not accessible to ring 0 (see SMAP and SMIP)
<zid> PT_USER | PT_PRESENT | PT_WRITE for life
<junon> gotcha okay
<junon> thank you!
<heat> np
<gorgonical> The DTB acquired from qemu using dump-dtb doesn't specify a GICC MMIO range
<gorgonical> Or at least mine doesn't
<heat> what?
<heat> pastebin it?
<gorgonical> yep
<bslsk05> ​pastebin.com: /dts-v1/;/ {interrupt-parent = <0x8003>;model = "linux,dummy-virt"; - Pastebin.com
<gorgonical> I modified the chosen section a little
<gorgonical> But otherwise this is what qemu spits out for -M virt,gic-version=3,secure=on,virtualization=false -cpu cortex-a57 etc etc
<heat> "GICC, GICH and GICV are optional."
<gorgonical> unless the underlying cpu supports them
<gorgonical> Which gic3 and a57 definitely do
<heat> i'm not familiar with the GICv3 but i assume there's a way to get the GICC's address without that
<gorgonical> I should expect so, but apparently you are allowed to put these devices nearly anywhere you like. There's no regular interval or anything it seems
<heat> oh maybe it expects you to use the sys instructions?
<heat> and does not support MMIO whatsoever
<gorgonical> You would think so, but my kernel actually *complains* that I have the sysreg interface enabled
<gorgonical> I get a kernel warning for it
<gorgonical> Apparently gicv3 doesn't always support the system reg interface and some firmware lies about whethe it supports it. So Linux defensively warns you if you're using gic3 and the register interface seems enabled
<heat> what?
<heat> this seems to say the opposite
<heat> +pr_warn("CPU interface incapable of MMIO access\n");
<gorgonical> Oh did I send the wrong one? Hold on
<gorgonical> yes I did
<bslsk05> ​patchwork.kernel.org: [4/5] irqchip/gic: Warn if GICv3 system registers are enabled - Patchwork
<heat> i'm pretty sure that's the gicv2 driver
<gorgonical> I like the vaguely complainy phrasing of "not really compliant"
<heat> like you can't have the gicv3 system reg interface enabled if you're pretending you're an oldie gicv2 that does not know such fancy access types
<heat> hence the warning
<gorgonical> I don't think I'm setting any bits that would signal compatibility mode, but I wouldn't even know which bit does that
<gorgonical> oh it's just if affinity routing is on
<gorgonical> Okay so unless your GICv3 implementation supports legacy you *must* use the ICC_ registers. Then why does the Linux kernel driver try to use the MMIO accesses?
<heat> i dont know, errata maybe?
<heat> the GIC spec has a note about that
<gorgonical> Unless maybe I'm misconstruing something
<heat> Memory-mapped interfaces for legacy operation.
<heat> virtual interrupts only, meaning that the GICV_* registers are the only memory-mapped CPU interface
<heat> Note
<heat> Support for legacy operation is optional. Implementations are allowed to support legacy operation for
<heat> registers that are provided. In these implementations, GICC_* registers and GICH_* registers are not
<gorgonical> That's usually what's happening
<heat> provided. GICC_* and GICH_* registers are only required to support legacy operation by physical
<heat> interrupts.
<heat> "— System register interfaces for the operation of GICv3 and GICv4."
[itchyjunk] has joined #osdev
<gorgonical> you know it almost seems like linux is using the wrong driver
<gorgonical> that would be because it is and I am dumb
<heat> lol what?
<gorgonical> I'm passing the wrong fucking dtb lol
<gorgonical> I gotta learn to take the blinders off man
<heat> hahaha
<gorgonical> it IS using the gic2 driver because I told it to
<gorgonical> yep. That was the problem
<zid> This is strange.
<zid> My opengl headers don't seem to have any of the shader function declarations?
<zid> links fine, but glAttachShader etc are missing decs
<zid> is mesa shit and I need to install the binary nvidia driver? O_o That seems unlikely
vdamewood has joined #osdev
<zid> okay my headers are not from mesa, they're from 'libglvnd' apparently
<zid> ah, think I figured it out
Left_Turn has quit [Read error: Connection reset by peer]
<zid> (glext.h has them, but they're behind a guard, exactly how I implemented that on windows)
<zid> declare the guard and you get decs, include without and you get extern function pointers
<vin> heat: yes "hotskew_rand_thresh = (uint32_t) (1.0 * UINT32_MAX * hotset_skew);" was the issue, I had changed hotskew_rand_thresh to uint64_t. But intertingly when I do "hotskew_rand_thresh = (uint64_t) (1.0 * UINT64_MAX * hotset_skew);" I get a illegal instruction (core dumped) which is SIGILL (haven't seen this before)
<zid> because.. a u64 doesn't fit into a double
<zid> 2^53 is the max
<vin> ahah, any suggestions? When I use larger than 4gb I suspect the uint32_t version doesn't work
lechner has quit [Ping timeout: 260 seconds]
lechner has joined #osdev
Brain___ has quit [Ping timeout: 258 seconds]