Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· 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


http://bespin.org/~qz/search/?view=1&c=osdev&y=18&m=7&d=6

Friday, 6 July 2018

00:00:00 --- log: started osdev/18.07.06
00:00:26 <klange> so virtualbox now actually starts my efi image on boot...
00:00:26 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
00:00:34 <klange> qemu can /mount/ it but executing it does nothing
00:00:42 <klange> (it should Print(L"Hello, wrold!") and then loop)
00:01:05 <klange> so now we figure out of VirtualBox is happy to load broken EFI binaries as well
00:01:09 --- join: nwm (~nwm@d50-92-166-19.bchsia.telus.net) joined #osdev
00:01:41 --- quit: CrystalMath (Quit: Support Free Software - https://www.fsf.org/)
00:02:03 <klange> closer, yet still not there https://i.imgur.com/t2JsKT3.png
00:02:05 --- quit: xenos1984 (Quit: Leaving.)
00:02:12 <klange> (I used mtools to make the fat32 partition)
00:02:42 <doug16k> what sections do you have in there? ovmf hates debug info sections
00:03:01 <doug16k> make sure you don't have any sections with weird load addresses
00:04:08 <doug16k> I use objcopy and a series of --remove-section options to clear them out to get ovmf to load it
00:04:18 <klange> I... do the opposite and use -j
00:07:24 <klange> it would help if this printed literally anything in the way of error messages
00:07:44 --- join: zeus1 (~zeus@81.199.19.241) joined #osdev
00:07:59 <doug16k> yes. I struggled with that nonsense at first
00:10:34 --- join: NaNkeen (~nankeen@61.6.61.42) joined #osdev
00:10:35 --- quit: [Versus] (Quit: There are paranoid crossroads and shipwreck alleys.)
00:12:04 <doug16k> klange, instead of print, do this at your entry point: mov $0x604,%edx mov $0x2000,%eax out %ax,%dx
00:12:12 <doug16k> that will poweroff the vm gracefully
00:12:25 <doug16k> then you'll know if it even makes it into your code at all
00:12:26 --- join: [MisbehavingOS] (~while@unaffiliated/awaxx/x-0928682) joined #osdev
00:13:01 --- quit: nwm (Ping timeout: 260 seconds)
00:13:43 --- join: nwm (~nwm@d50-92-164-229.bchsia.telus.net) joined #osdev
00:14:02 <doug16k> qemu will exit
00:14:33 <klange> it's not getting to my code
00:19:45 <klange> ...
00:19:49 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
00:21:17 --- quit: stoopkid (Quit: Connection closed for inactivity)
00:21:32 <klange> ovmf demands an x86-64 image despite it running in 32-bit
00:21:37 <klange> meanwhile virtualbox wants a 32-bit image
00:21:45 --- join: Barrett (~barrett@unaffiliated/barrett) joined #osdev
00:21:58 <doug16k> yeah I didn't even try to do 32 bit EFI because I didn't want to mess with position independent code BS on 32 bit
00:22:55 <doug16k> x86_64 PIC just works without dinking around with ebx and all that crap
00:23:30 <doug16k> I really didn't care how windows does 32-bit PIC either :)
00:23:58 <doug16k> presumably just lots of relocations, but not sure
00:26:46 <doug16k> my build has bootia32.efi build but I commented it out
00:31:14 --- quit: bemeurer (Quit: WeeChat 2.1)
00:33:15 <klange> ovmf from debian package now throwing KVM exception, but OVMF from build server successfully prints hello world and then loops
00:33:18 <klange> progress~
00:33:45 --- join: k4m1 (~k4m1@82-181-0-34.bb.dnainternet.fi) joined #osdev
00:33:54 <klange> Now I need to adapt my ISO9660 driver to work against the EFI block device API, figure out how to discover the write thing to read, and get this bad boy actually loading my kernel
00:36:09 --- quit: graphene (Remote host closed the connection)
00:37:02 --- join: m3nt4L (~asvos@2a02:587:a016:7c00:3285:a9ff:fe8f:665d) joined #osdev
00:37:54 --- join: graphene (~graphene@46.101.134.251) joined #osdev
00:41:42 --- quit: ^Inuyasha^ (Ping timeout: 265 seconds)
00:41:54 --- join: kimundi (~Kimundi@i577A904B.versanet.de) joined #osdev
00:41:56 --- quit: xenos1984 (Ping timeout: 240 seconds)
00:43:08 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
00:44:56 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
00:58:15 --- quit: ^Inuyasha^ (Ping timeout: 256 seconds)
01:01:19 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
01:04:19 --- join: vinleod (~vdamewood@unaffiliated/vdamewood) joined #osdev
01:04:21 <NightBlade> klange> i read that it might help to disable kvm
01:05:56 <NightBlade> * On Linux, newer version of QEMU may enable KVM feature, and this might
01:05:56 <NightBlade> cause OVMF to fail to boot. The QEMU '-no-kvm' may allow OVMF to boot.
01:06:22 <NightBlade> i'm assuming thats not the case because it boots, just won't pass execution correct?
01:06:52 <klange> It is seemingly a bug in whatever version debian has packaged
01:06:59 <klange> It works in the newer OVMF builds.
01:07:05 <NightBlade> debian bug 2.0 loool
01:07:15 <NightBlade> hey, maybe it's a feature ;)
01:07:26 <klange> It is undoubtedly 1) a bug in OVMF, and 2) not a feature
01:07:34 <klange> OVMF is full of bugs
01:07:57 <NightBlade> cant you just do an apt-get update ovmf then?
01:08:07 <klange> no, the debian package is outdated
01:08:11 <NightBlade> :/
01:08:45 <NightBlade> thats like the problem i'm having trying to get libgcc in armv5 for my ipad
01:09:02 <NightBlade> except i can't find any repo at all now for some reason
01:09:31 <NightBlade> i got it somehow because i have it on my iPhone
01:09:36 --- quit: klysm (Read error: Connection reset by peer)
01:09:37 --- join: kuldeep (~kuldeep@unaffiliated/kuldeepdhaka) joined #osdev
01:09:42 <NightBlade> i think i might have built it myself
01:10:08 --- quit: ^Inuyasha^ (Ping timeout: 245 seconds)
01:10:09 <NightBlade> but would cydia actually register it if i did that?
01:11:06 <klange> cydia is just a frontend for apt
01:11:13 <NightBlade> thats what i figured
01:12:11 <NightBlade> i'd just scp it over from my phone, but the phone is armv7
01:12:34 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
01:12:46 <NightBlade> I wish i could remember how the hell i got it before
01:12:56 <NightBlade> i made sure i had the entire repo list
01:15:19 <NightBlade> how do you make colored text output in linux?
01:15:22 --- quit: NaNkeen (Ping timeout: 256 seconds)
01:15:37 <klange> https://en.wikipedia.org/wiki/ANSI_escape_code
01:15:38 <bslsk05> ​en.wikipedia.org: ANSI escape code - Wikipedia
01:15:43 <NightBlade> thankyou!
01:15:51 <klange> also fun to implement yourself in your own terminal emulator
01:15:53 <NightBlade> klange ftw again
01:16:17 <klange> actually one of the first things I ever did in my OS, before even implementing functioning multitasking
01:16:19 <NightBlade> i knew it had to be something like that
01:16:34 <NightBlade> did you do it with int 10?
01:16:47 <NightBlade> i was just reading up on that a few mins ago
01:16:55 <klange> int 10h is a bios function
01:16:59 <NightBlade> yeah
01:17:00 <klange> it is not available in protected mode
01:17:07 --- quit: graphene (Remote host closed the connection)
01:17:19 <klange> and no,
01:17:29 <NightBlade> huh? my bootsector uses AH=0x0E and INT 10 to print a string
01:17:38 <klange> bootsectors are not in protected mode
01:17:41 --- quit: hmmmm (Remote host closed the connection)
01:17:45 <NightBlade> hmm i see
01:18:01 <NightBlade> oh my mistake
01:18:06 <NightBlade> duh i knew that
01:18:30 <klange> I believe my first ansi escape parser was implemented in a framebuffer terminal, so I was doing all text myself through a bitmap font
01:18:34 --- join: graphene (~graphene@46.101.134.251) joined #osdev
01:18:38 <klange> one moment, I should have old screenshots
01:18:42 <NightBlade> cool
01:19:09 <NightBlade> "taking care of biz in a fixed-width font" B-)
01:19:18 <klange> https://i.imgur.com/B7xiZ.png
01:19:31 <klange> and later this https://i.imgur.com/t8ah4.png
01:19:52 <NightBlade> wow noice, i'm jelly
01:20:01 <klange> and now, much later, this https://i.imgur.com/Ce4lGPP.png
01:20:03 <NightBlade> I want to get there someday soon
01:20:26 --- quit: Barrett (Ping timeout: 240 seconds)
01:20:37 <NightBlade> love the graphic right in the console btw
01:20:42 <NightBlade> A++
01:20:46 <klange> those are block characters
01:20:55 <NightBlade> ah i see, thats how you did that
01:20:56 <NightBlade> clever
01:20:57 <klange> that works in Linux as well
01:21:01 <NightBlade> mmm hmm
01:21:34 <klange> eg in this screenshot of a vte terminal with a serial console https://i.imgur.com/PL4GfZt.png
01:21:36 --- quit: Vulcan (Remote host closed the connection)
01:21:54 --- join: NaNkeen (~nankeen@61.6.61.42) joined #osdev
01:22:04 <NightBlade> yeah, i looked at that one earlier
01:22:12 <NightBlade> I was quite impressed
01:22:49 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
01:23:18 --- quit: JusticeEX (Ping timeout: 256 seconds)
01:23:57 <NightBlade> if the uptime in that screenshot is 6 seconds it must boot FAST!
01:26:14 --- join: Barrett (~barrett@unaffiliated/barrett) joined #osdev
01:27:22 --- join: GRD (~GRD@180.250.7.179) joined #osdev
01:28:49 --- quit: kimundi (Ping timeout: 240 seconds)
01:30:43 --- join: hph^ (~hph@ip72-195-187-57.mc.at.cox.net) joined #osdev
01:31:56 --- quit: Goplat (Remote host closed the connection)
01:32:03 <klange> kernel startup to running UI is nearly instantaneous under kvm
01:32:49 <klange> ~5 seconds under TCG, loading apps and rescaling the wallpaper actually takes some visible time
01:34:11 --- join: SopaXorzTaker (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
01:35:05 --- quit: NaNkeen (Ping timeout: 256 seconds)
01:36:28 <klange> There's a lot that goes into the quick boot time. This is running with a ramfs loaded by the bootloader, there's no weird background services to start up, not a lot of background driver tasks, the init system isn't based on a bunch of shell scripts...
01:36:54 --- quit: Amaan (Quit: Connection closed for inactivity)
01:36:55 --- join: guilain (~guilain@117.94.184.224) joined #osdev
01:37:11 <NightBlade> thats cool
01:37:21 <klange> On virtualbox, the time from when you hit enter on the boot menu to when you see the desktop wallpaper is less than a second. At that point, network may still be initializing in the background.
01:37:44 <klange> actually I see the network icon as uninitialized, but DHCP happens pretty fast and it changes a few frames later
01:38:32 <doug16k> klange, what did you change to get it to run your efi executable? you got it going right?
01:38:33 --- quit: GRD (Read error: Connection reset by peer)
01:39:15 <klange> doug16k: to get it working under OVMF, I built the final binary as PE+ instead of PE, put it in EFI\BOOT\BOOTX64.EFI on a FAT32 image, and told xorriso to use that FAT32 image as... whatever -e means.
01:39:52 <klange> https://git.toaruos.org/klange/toaru-nih/src/master/Makefile#L193
01:39:54 <bslsk05> ​git.toaruos.org: klange/toaru-nih: A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace. - ToaruOS Git
01:39:54 <doug16k> nice. yeah I couldn't get PE to work either, PE+ works
01:40:17 <doug16k> I'll try out building ia32 as PE+, maybe that will solve my ia32 problem too
01:40:20 <klange> The PE works in VirtualBox as a 32-bit VM while the PE+ doesn't - it also wants to load BOOTIA32.EFI.
01:40:25 <klange> So having both worked out nicely.
01:40:45 <klange> I haven't tested switching VBox to 64, probably would load BOOTX64.EFI just fine.
01:40:57 <doug16k> so your BOOTX64.efi is 64 bit code then?
01:41:04 <klange> It's 32-bit code.
01:41:23 <doug16k> that might be problematic though. not all x86 opcodes exist in long mode
01:41:25 <klange> It's the same code, from the same build, just objcopy'd into a different format.
01:41:30 <klange> It's not running in long mode.
01:42:00 <doug16k> efi enters your entry point in long mode in bootx64.efi though, right? do you switch to protected mode?
01:42:44 <klange> it's definitely not doing that in ovmf.
01:42:48 <klange> or it literally would not work
01:42:51 <klange> because this is a 32-bit vm
01:43:11 <doug16k> ah but long mode does work in i386 with -enable-kvm
01:43:17 <klange> what
01:43:22 <klange> that doesn't make sense
01:43:25 <doug16k> seriously. found that out yesterday
01:43:44 <doug16k> KVM is handling it
01:43:51 <klange> it can't possibly be doing that
01:43:57 <doug16k> why?
01:44:26 <doug16k> kvm is doing all of the execution of code with enable-kvm
01:44:34 <klange> what's switching to long mode?
01:44:41 <klange> ovmf blindly?
01:44:42 <doug16k> ovmf
01:44:44 <klange> it would need to check
01:44:55 <doug16k> it can do cpuid and see if long mode exists
01:45:05 <klange> but that says no in -i386?
01:45:34 --- quit: vinleod (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
01:45:55 <doug16k> I debug my bootloader with -i386 because it makes gdb behave correctly. normally in TCG. so right before I enter long mode in my bootloader, I check for 64 bit support...
01:46:17 <doug16k> yesterday I happened to be doing the same in KVM. it went right past the 64 bit check and ran the kernel. I was shocked
01:46:32 <klange> so this is all completely broken
01:46:35 <klange> gfdi
01:46:41 * klange reverts the whole mess
01:46:48 <doug16k> klange, you can prove me wrong though
01:46:57 <klange> that would explain why it's trying to load bootx64 in the first place
01:47:01 <doug16k> use an opcode that is redefined as a REX prefix and step through it
01:47:19 <doug16k> if it does the increment or whatever, it's not long mode
01:47:47 <doug16k> most x86 code will work in long mode - it's just a bunch of non-rex-prefixed 32 bit instructions
01:48:08 <doug16k> it will fail when gcc tries to use an instruction that is redefined as a rex prefix in long mode though
01:48:13 <klange> wait but ovmf supports ia32
01:48:17 <klange> so how do I force it to do that
01:48:35 <klange> ... do I need a different bin than th- oh fuck me the debian package even says it's x64 in the description
01:49:26 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
01:49:33 <doug16k> easier test: load ds with a null selector and access memory. i386 will die, CPL 0 long mode won't care
01:50:33 <klange> i found an ia32 ovmf and killed my 64 bit binaries and it works
01:50:44 <doug16k> cool
01:50:50 --- quit: graphene (Read error: Connection reset by peer)
01:50:50 <klange> so yeah, it's 64-bit ovmf trying to load a 64-bit image, and I guess the old version was less happy to jump into 32bit code
01:51:01 <doug16k> so 64 bit ovmf doesn't like your 32 bit binary?
01:51:15 <klange> yes
01:51:41 <NightBlade> somehow that doesn't seem so strange now
01:51:42 <klange> let's see if vbox in 64-bit mode is okay with it (it didn't like the x64, but possibly for the reasons you described)
01:52:25 --- join: graphene (~graphene@46.101.134.251) joined #osdev
01:52:46 <klange> vbox doesn't want to load it, same way ovmf was doing nothing
01:52:55 <klange> so I guess I need to actually build a 64-bit version
01:53:05 <klange> and it will need to jump back to protected mode
01:53:27 --- quit: guilain (Quit: Leaving)
01:53:36 <doug16k> you'd need to go through a thunk and go back to long mode when calling into EFI though
01:53:46 <klange> why would I call into EFI...
01:53:57 --- quit: Barrett (Quit: I use my brain comu a quindici pistoli.)
01:54:00 <doug16k> how do you exit boot services?
01:54:15 <klange> You can do stuff after calling exit boot services...
01:54:41 <doug16k> a real machine might be doing crazy SMI stuff though
01:54:45 <klange> show menu, load files and memory map, exit boot services, go back to protected mode, jump to kernel
01:55:05 <doug16k> oh, your efi will be 64 bit code? nevermind then
01:55:30 <doug16k> I thought you meant switch to protected mode at the start of bootx64.efi
01:55:42 <klange> nah, just build it 64-bit and 32-bit
01:55:47 <doug16k> nice
01:56:05 <klange> mostly same source, some quick #ifdefs to include the jump back...
01:56:19 --- quit: nwm (Ping timeout: 260 seconds)
01:56:20 <SopaXorzTaker> I'm a dumbass
01:56:25 <klange> Elaborate.
01:56:35 <SopaXorzTaker> Can anyone explain how x86 protection works in a nutshell?
01:56:51 <SopaXorzTaker> like, what prevents an userspace program from claiming kernel privileges
01:57:08 <klys> the segment registers turn into "selectors." your cs will likely = 0x00000008.
01:57:40 <klys> segmentation means your selectors are pointers to the global descriptor table (or the local)
01:57:41 <SopaXorzTaker> Is it basically a set of rules like "Code running in <address mask> can only access <address mask>"
01:57:43 <klange> CS =0008 # can confirm
01:57:53 <doug16k> SopaXorzTaker, in order to get from CPL 3 to CPL 0 the CPL 3 code must use a call gate that only the kernel can provide
01:58:22 <doug16k> attempting to just call a DPL 0 code segment normally will #GP from CPL 3
01:58:25 <SopaXorzTaker> doug16k, the thing is, I don't quite understand how CPL is enforced
01:58:40 <doug16k> CPL is determined entirely by the DPL of cs
01:58:48 <klys> you can use call gates or interrupt gates. cpl is calculated from rpl and dpl.
01:58:51 <doug16k> DPL of the GDT descriptor selected by cs*
02:00:05 <klys> rpl is the low two bits of your selector (rpl3 on cs would = 0x000B.)
02:00:20 <doug16k> SopaXorzTaker, at some point, your kernel transfers control to CPL 3 code, typically by iret with cs in the iret stack frame being the user CPL 3 cs selector...
02:00:37 <SopaXorzTaker> ah
02:00:39 <doug16k> when the user code is running, it is impossible for that code to load cs with a selector that is more privilege...
02:00:56 <SopaXorzTaker> so the kernel specifies the privileges for tjhe
02:00:59 <SopaXorzTaker> the code it jumps to
02:01:00 <doug16k> except if you provide user code a call gate in the GDT or LDT or IDT that enters the kernel
02:01:02 <doug16k> yes
02:01:29 --- join: nwm (~nwm@d50-92-164-229.bchsia.telus.net) joined #osdev
02:01:38 <SopaXorzTaker> https://en.wikipedia.org/wiki/Call_gate_(Intel) - this?
02:01:38 <bslsk05> ​en.wikipedia.org: Call gate (Intel) - Wikipedia
02:01:52 <doug16k> yes that or interrupt gate
02:02:06 <doug16k> call gate and interrupt gate are the same, except interrupt gate clears EFLAGS.IF
02:02:23 <doug16k> they'd typically be in the IDT. you'd put one at interrupt 0x80 for example, for syscall
02:02:43 <doug16k> for system call*
02:02:45 --- quit: xenos1984 (Ping timeout: 255 seconds)
02:02:54 --- join: vdamewood (~vdamewood@unaffiliated/vdamewood) joined #osdev
02:02:57 <doug16k> on x86_64 you wouldn't use that, you'd typically use the syscall instruction
02:03:08 <doug16k> but you could still have an IDT entry with a call gate that enters the kernel
02:03:51 <SopaXorzTaker> BTW - how exactly is virtual memory mapped to physical?
02:04:04 <doug16k> a call or interrupt gate is typically in the IDT. if you did have one in the GDT, user code could use it by far call. in that case, the CPU would ignore the offset in the call and just use the cs
02:04:07 <klys> usually someone will enable paging at kernel initialization
02:04:33 <klys> paging means you have translation (page tables) mapping address space to physical memory.
02:05:46 <klys> when you call into a new process, the TSS will set CR3 to an appropriate value, which has a page directory and page tables for relevant regions of ram.
02:06:07 --- quit: ^Inuyasha^ (Ping timeout: 256 seconds)
02:06:39 <klys> enabling and disabling paging and segmentation both involve setting cr0, which can only be done at cpl0.
02:08:40 <klys> cr3 points to the current page directory, whose entries then point to page tables, whose entries include pointers to physical pages.
02:09:18 --- quit: kasumi-owari (Ping timeout: 240 seconds)
02:10:15 <klys> your common errors like "page fault" "illegal instruction" "segmentation fault" are due to traps/exceptions/faults that are interrupt service routines generated in response to violations of the segmentation and paging of your system.
02:11:23 <SopaXorzTaker> klys, can pages overlap?
02:11:40 <doug16k> not on x86
02:12:24 <klys> this is all explained and diagrammed in-depth in the intel 386 manual, available at http://show.ing.me/i386doc.144.gz (gzip -d i386doc.144.gz; qemu-system-i386 -fda i386doc.144)
02:12:56 <bslsk05> ​show.ing.me <no title>
02:13:00 <klys> pages are typically 4 KiB chuncks of physical RAM.
02:13:02 --- join: kasumi-owari (~kasumi-ow@ftth-213-233-237-007.solcon.nl) joined #osdev
02:13:30 <doug16k> SopaXorzTaker, 32 bit code can have 4MB pages or 4KB pages. 4MB pages must be 4MB aligned in physical memory. 64 bit can have 1GB or 2MB or 4KB pages
02:13:36 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
02:13:51 <doug16k> 64 bit has the same alignment restriction, 1GB/2MB/4KB aligned
02:14:17 <doug16k> in 32 bit, a 4MB pages covers the entire 4MB range that would have been 1024 KB pages, so overlap is impossible
02:14:25 <doug16k> 1024 4KB pages*
02:14:28 <klys> alignment is the premise that the low bits are set to zero, and you therefore have only round numbers.
02:15:18 <klys> /would have been 4096 byte pages/
02:15:33 <klys> yes
02:16:06 --- join: Asu (~sdelang@AMarseille-658-1-30-4.w86-219.abo.wanadoo.fr) joined #osdev
02:17:43 <doug16k> you could have multiple ranges of linear addresses that map to the same pages of physical memory though. depends on what you mean precisely by "overlap"
02:18:09 <doug16k> the end of one page cannot overlap the start of some other
02:18:17 <doug16k> ever
02:19:27 --- join: rawste (~rawste@static-176-182-199-171.ncc.abo.bbox.fr) joined #osdev
02:19:58 --- join: Asu` (~sdelang@241.18.136.77.rev.sfr.net) joined #osdev
02:20:48 --- quit: Asu (Ping timeout: 240 seconds)
02:24:54 <doug16k> klange, when you create the el torito alternate boot, is the payload a partition image or a disk image?
02:25:03 <klange> partition
02:25:44 <doug16k> thanks. I'm having trouble getting OVMF to use it. I see two partitions in the FS0, FS1, ... list, but it can't dir either
02:26:02 <doug16k> er, BLK0: BLK1:
02:26:20 <klange> ah yeah, if you start seeing fs0 and friends that means it parsed a filesystem correctly :)
02:26:25 <klange> that was my problem
02:26:35 <klange> the first one, then the building-for-wrong-target thing...
02:27:13 <klange> I guess I should do my menu stuff first since I do that without loading anything.
02:27:21 <klange> also because most of my menu code already works
02:27:28 <klange> just need to make it print to the right place
02:27:54 <doug16k> I think I know what it might be. I'm cheating and forcing a small FAT partition to be FAT32. it's probably confusing their FS code
02:28:50 <doug16k> have to add FAT12/FAT16 nonsense I guess. I suppose I could quickly prove that by making the payload > 256MB though
02:35:23 <klange> 32MB is enough for fat32
02:36:31 --- quit: manzerbredes (Ping timeout: 260 seconds)
02:38:27 --- quit: mavhq (Read error: Connection reset by peer)
02:39:43 --- join: mavhq (~quassel@cpc77319-basf12-2-0-cust433.12-3.cable.virginm.net) joined #osdev
02:42:31 <klange> oh cool, just a quick modification and my menu system works
02:42:53 <klange> should probably use the EFI keyboard interface, though
02:46:04 <SopaXorzTaker> doug16k, what if the data section of the program is larger than a page?
02:46:35 <doug16k> SopaXorzTaker, use multiple pages
02:47:18 <SopaXorzTaker> doug16k, are multiple sequential pages continuous?
02:47:34 <SopaXorzTaker> like, would the CPU fetch a new opcode from the next page
02:47:37 <doug16k> they are contiguous from the perspective of the program. they can be discontiguous in physical memory
02:47:38 <doug16k> yes
02:48:46 --- quit: ^Inuyasha^ (Ping timeout: 256 seconds)
02:50:50 <doug16k> SopaXorzTaker, let's say you had 3 4KB page table entries. let's say the program load address is 0x400000. the first entry would map 0x400000 to 0x400FFF. the entry might point to physical address 0x12340000. the second entry would map 0x401000 to 0x401FFF, it might be at some completely different physical address, 0x56780000. the third would map 0x402000 to 0x402FFF, it might be at physical address 0x43214000
02:51:00 --- join: klysm (~mdasoh@173-14-238-113-Utah.hfc.comcastbusiness.net) joined #osdev
02:51:46 <doug16k> the program sees it as 0x400000 to 0x402FFF, and can't even tell that they are mapped to 3 completely discontiguous pages in physical memory
02:52:38 <SopaXorzTaker> hmm
02:52:57 <SopaXorzTaker> I wonder if ASLR does that
02:53:19 <SopaXorzTaker> like, since pages are contiguous, shuffling them would be completely transparent
02:53:23 <doug16k> a 32 bit access at 0x401FFE would even get 2 bytes from physical address 0x123401FE-0x123401FF and the other two from 0x56780000-0x56780001
02:54:08 <doug16k> oops, from 0x12340FFE-0x12340FFF
02:55:20 <doug16k> it's totally invisible to the program. looks 100% contiguous from the program's point of view
02:56:04 <doug16k> that's one of the huge benefits: eliminates the issue of physical memory fragmentation. pages can be strewn everywhere. a 4MB allocation could use 1024 pages from 100 little holes of free space
02:57:29 <doug16k> where none of the holes are anywhere near 4MB
03:00:15 --- quit: zeus1 (Ping timeout: 260 seconds)
03:03:07 <doug16k> at 0x400FFE*
03:04:18 <doug16k> SopaXorzTaker, yes, exactly. you can move a huge range to another address by simply changing where you map the pages in the page tables
03:04:44 <doug16k> ASLR is a tad more involved though, you'd also have to perform relocations to update address constants in the code/data
03:04:48 <doug16k> but it's almost trivial
03:05:56 --- join: HZun (~HZun@0x3ec72d49.osd.customer.dk.telia.net) joined #osdev
03:06:23 --- quit: vdamewood (Quit: Textual IRC Client: www.textualapp.com)
03:07:05 <klange> with some quick modifications and keyboard scancode mappings, I got my boot menu to display in EFI: https://i.imgur.com/E2oecbh.png
03:10:52 <doug16k> klange, nice
03:13:28 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
03:20:03 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
03:22:24 --- quit: zhiayang (Quit: ZNC 1.7.0 - https://znc.in)
03:22:29 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
03:22:33 --- quit: alyptik (Quit: https://ptpb.pw/~docrivers.gif)
03:22:48 --- join: alyptik (ayy@cpe-76-173-133-37.hawaii.res.rr.com) joined #osdev
03:24:06 --- join: m_t (~m_t@p5DDA3A4A.dip0.t-ipconnect.de) joined #osdev
03:24:35 --- join: zhiayang (~zhiayang@124.197.97.227) joined #osdev
03:33:02 <doug16k> nice, got EFI ISO boot working
03:33:17 <doug16k> had to go a tad more than 32MB, probably because a bit of space is reserved sectors
03:34:15 <doug16k> just enough to pull it just under 32MB if I make an exactly 32MiB image
03:35:04 <doug16k> so now I either need to let it waste ~25MB, or find an excuse to make the boot partition big :D
03:35:29 <doug16k> or let a FAT16 image get build and add that crap to my bootloader FS code
03:36:11 <doug16k> screw it. lots of zeros it is, lol
03:37:11 <doug16k> now I just need to do PXE in EFI and GPT, and it supports everything!
03:40:10 <doug16k> klange, re the compression stuff from the other day. I made my instrumented trace logger/viewer tool use zlib gzip API to store the trace log. gets > 98% compression typically. huge traces of millions of calls use KBs of space
03:40:17 <doug16k> I didn't expect it to compress that well
03:40:26 <doug16k> even if it is extremely repetitive
03:42:29 <klange> text compresses gooood
03:43:46 <doug16k> it's not text though, it's structs of this -> https://github.com/doug65536/dgos/blob/72a2eef21c46aacecab86a33c6882cf7f7c5cb06/kernel/device/eainstrument.h#L11
03:43:48 <bslsk05> ​github.com: dgos/eainstrument.h at 72a2eef21c46aacecab86a33c6882cf7f7c5cb06 · doug65536/dgos · GitHub
03:45:25 <doug16k> densely packed binary data. repetitive though, a lot of sequences of calls are identical, like every lock acquisition, for example, and loops of calls
03:47:19 <doug16k> I finished that ncurses trace viewer I mentioned where you can search and expand/collapse the call tree, "step over" calls, collapse certain things everywhere, etc
03:48:18 <doug16k> it's helped me rapidly fix a few issues already :)
03:48:38 <doug16k> and pointed out that in a few places I acquire and release mcslocks a ridiculous number of times in a row
03:49:58 --- join: zeus1 (~zeus@81.199.19.241) joined #osdev
03:50:43 <doug16k> klange, oh thanks for that tip about the alternate el-torito efi partition thing. I had no clue that that was necessary
03:51:23 --- quit: ^Inuyasha^ (Ping timeout: 245 seconds)
03:56:17 --- join: ^Inuyasha^ (~quassel@vmi86808.contabo.host) joined #osdev
04:04:16 --- join: Sanctified (~Sanctifie@host-85-30-181-143.sydskane.nu) joined #osdev
04:05:49 --- join: nortega (~nortega@gateway/tor-sasl/deathsbreed) joined #osdev
04:13:51 --- join: alphawarrior (~alphawarr@96.30.69.37) joined #osdev
04:14:31 --- quit: nwm (Ping timeout: 260 seconds)
04:14:57 <alphawarrior> Hello everyone! Does anyone have a barebone os that brings itself to long mode correctly and I could try as a template?
04:16:46 --- join: CheckDavid (uid14990@gateway/web/irccloud.com/x-kiavnyhkixidanqc) joined #osdev
04:17:11 --- join: Tazmain (~Tazmain@unaffiliated/tazmain) joined #osdev
04:17:56 --- quit: salek_ (Ping timeout: 240 seconds)
04:19:23 --- quit: HZun (Quit: Leaving)
04:20:27 --- quit: Tazmain (Client Quit)
04:20:51 --- join: Tazmain (~Tazmain@unaffiliated/tazmain) joined #osdev
04:22:03 <SopaXorzTaker> doug16k, how is relocation done?
04:22:17 <SopaXorzTaker> are the programs compiled with that in mind?
04:22:30 * SopaXorzTaker remembers -fPIC
04:27:51 <klys> the binary contains a relocation table, which points to all places in the code that refer to addresses in libraries. those parts of the code are overwritten with a (usually relative) address.
04:29:06 <klys> pic works with long mode by using special instructions that jump to relative addresses calculated from the eip register and tables said register may point to given that those instructions are available.
04:29:40 <klys> said instructions were never part of 32-bit code.
04:30:12 --- join: crgimenes (~crgimenes@179.208.113.73) joined #osdev
04:43:07 --- quit: pie__ (Ping timeout: 268 seconds)
04:46:45 <Mutabah> alphawarrior: I do - https://github.com/thepowersgang/rust-barebones-kernel/blob/master/Kernel/arch/amd64/start.S
04:46:46 <bslsk05> ​github.com: rust-barebones-kernel/start.S at master · thepowersgang/rust-barebones-kernel · GitHub
04:47:35 <alphawarrior> thank you Mutabah!!
04:56:23 --- join: prokbird (~shams@117.223.48.230) joined #osdev
05:01:51 --- join: elderK (uid205007@pdpc/supporter/active/elderk) joined #osdev
05:03:54 --- join: manzerbredes (~loic@myriads-lg.irisa.fr) joined #osdev
05:06:30 --- quit: k4m1 (Quit: bbl)
05:06:31 --- quit: nortega (Quit: Vivu lante, vivu feliĉe!)
05:17:49 --- quit: Vulcan (Remote host closed the connection)
05:25:24 <Sanctified> I have learned a valuable lesson about not programming assembly (well, especially assembly :p) at 5 AM
05:27:38 <elderK> Oh? :)
05:27:58 <Sanctified> as it turns out, using the root directory cluster variable in place of the FAT size when calculating the data section LBA doesn't quite work out :p
05:28:16 <Sanctified> I guess in my 5 am stupor I somehow mixed them up
05:29:21 --- join: dennis95 (~dennis@mue-88-130-61-024.dsl.tropolys.de) joined #osdev
05:29:48 * variable glares at Sanctified
05:30:22 <Sanctified> hah, you must get a lot of accidental mentions
05:30:51 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
05:31:10 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
05:32:01 <elderK> lol
05:32:08 <elderK> Have you seen MS' fat spec?
05:32:15 <Sanctified> Yeah
05:33:11 <elderK> Iono. I find development to be one of those stressfully fun things :P
05:33:15 <elderK> If that makes any sense :P
05:33:24 --- join: light2yellow (~l2y@185.220.70.147) joined #osdev
05:33:51 <elderK> :) And hey, at least you learned something, right? :D
05:34:40 <Sanctified> Yep :)
05:35:27 <Sanctified> Time to try and get a basic kernel up and running now that my loader properly finds it :D
05:36:20 <elderK> :D
05:36:29 <elderK> Now the real fun starts :D
05:36:46 <Sanctified> Indeed!
05:37:13 <elderK> Me, I've been trying to learn template metaprogramming in C++. Well, in general, trying to really improve my C++ game, as I've really focused on C in the past. So, I've been spending a lot of time at cppreference.com, implementing my own version of the standard type traits, etc.
05:37:17 <elderK> Trying to implenent other things too.
05:37:23 <elderK> When I'm lost, I check Boost's implementation.
05:37:52 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
05:38:11 <elderK> For fun, I checked out what's "included" in a freestanding implementation of C++. I was super surprised to see <exception>, etc.
05:38:19 <elderK> :D As for your kernel,
05:38:23 <elderK> What kind are you hoping to build?
05:38:42 <Sanctified> Monolithic, I think
05:39:04 <elderK> Nice.
05:39:11 <Sjors> <Sanctified> hah, you must get a lot of accidental mentions
05:39:15 <Sjors> Sanctified: not a constant amount per day at least
05:39:21 <elderK> A good place to start when you're new. Not to mention, some monolithic systems can be surprisingly flexible. Say, Plan 9.
05:39:26 --- quit: Tazmain (Read error: Connection reset by peer)
05:40:04 <variable> just going to leave this here: https://www.youtube.com/watch?v=Q2g9d29UIzk
05:40:04 <bslsk05> ​'Solving Pokemon Blue With a Single, Huge Regular Expression' by Coding Tech (00:13:40)
05:40:21 <Sanctified> I figured it might be a good way to start out :)
05:40:29 --- join: Tazmain (~Tazmain@unaffiliated/tazmain) joined #osdev
05:40:39 <Sanctified> Okay, I *need* to check that video out
05:43:34 <variable> Sanctified: :)
05:44:39 <klange> whyyyy is this gpf'ing when I try to jump to my kernel...
05:50:26 --- join: vmlinuz (~vmlinuz@2804:431:f725:5ad7:5770:2f11:7f3c:110d) joined #osdev
05:50:26 --- quit: vmlinuz (Changing host)
05:50:26 --- join: vmlinuz (~vmlinuz@unaffiliated/vmlinuz) joined #osdev
05:53:27 --- quit: Vulcan (Remote host closed the connection)
05:55:21 <Sanctified> okay that is just insanity
05:58:39 <doug16k> klange, what is the #GP error code?
05:58:46 <klange> 0
05:59:12 <doug16k> what type of jump is it? in long mode?
06:00:58 <klange> not in long mode, regular jmp, should be using existing gdt from efi which should be sane
06:01:26 --- quit: alphawarrior (Read error: No route to host)
06:02:33 <doug16k> it probably won't be sane after exiting boot services
06:04:02 <doug16k> in qemu monitor, do info registers, and get the base from GDT= line. then x /1gx 0x_gdt_base_here+0x_cs_here_
06:04:09 <doug16k> see how sane that looks
06:08:32 --- join: SwiftMatt (~Objective@2601:282:4300:3e:210e:d4e9:6154:3e91) joined #osdev
06:11:48 <doug16k> what does print /x $cs.base say? zero? also print /x $cs.limit
06:11:56 <doug16k> I wouldn't assume it's sane for a second :)
06:12:55 <klange> 0, 0xffffffffffffffff
06:13:09 <doug16k> and it's a near jmp ?
06:13:22 <doug16k> jmp register ?
06:13:52 <klange> jmp *register
06:14:13 <doug16k> no parentheses right? that should work
06:18:48 --- join: promach_ (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
06:19:24 <doug16k> can you break into the debugger at that line and `print /x $that_register_name` then `x /1i that_value` and see what the branch target looks like? does it look like the first instruction in the kernel?
06:20:18 <Sanctified> is there a "traditional" place to put the GDT or can I just put it wherever? I was thinking of just putting it at 0x0:0x0
06:20:21 <bcos> If you're getting a GPF (and not a page fault) then I'd assume a non-canonical address is being used
06:20:31 <klange> 32-bit
06:20:35 <klange> no paging
06:20:40 <doug16k> klange, note that ovmf does not enable NX
06:20:43 <bcos> 32-bit UEFI?
06:20:52 <klange> note that this is, again, 32-bit UEFI
06:21:56 <doug16k> I ran into mysterious page faults because of reserved bits set, NX was reserved without enabling NX
06:24:07 <bcos> Is there any paging?
06:24:08 <klange> paging is not enabled in 32-bit efi
06:24:18 --- join: ratschance (~ratschanc@205.175.226.102) joined #osdev
06:24:26 <doug16k> klange, #GP happens precisely when you single-step that jmp? how is that even possible if limit is 4GB
06:24:49 <bcos> doug16k: You can access 4 bytes at address 0xFFFFFFFF and get a GPF from violating the limit..
06:25:18 <bcos> ..relatively unlikely though
06:25:43 <doug16k> Sanctified, wherever
06:25:52 <Sanctified> okay, 0x0:0x0 it is
06:26:20 <doug16k> Sanctified, 0 is not a good idea. you should be making the first page not present to catch null pointers (eventually)
06:27:00 <bcos> "0x0:0x0" implies real mode (would be NULL segment for protected mode)
06:27:10 <doug16k> Sanctified, just declare an array in your code and use that address, wherever it lands
06:27:29 <Sanctified> Good idea, thanks :)
06:29:13 --- quit: zeus1 (Ping timeout: 265 seconds)
06:30:00 <doug16k> klange, are interrupts disabled?
06:30:28 <doug16k> the CPU will blame whatever instruction it happened to be at if an IRQ comes in and the IDT is bad
06:30:48 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
06:31:39 <doug16k> it'd be #GP(0) for IDT limit violation too
06:32:16 <klange> so the fun thing is
06:32:24 <klange> this is still ovmf's idt
06:32:30 <klange> and it's responding to the #GP
06:32:35 --- quit: m3nt4L (Ping timeout: 256 seconds)
06:33:18 <doug16k> its limit is 0x7ff in info registers?
06:33:55 <klange> IDT= 3f7fd010 000007ff
06:34:57 --- join: zeus1 (~zeus@81.199.19.241) joined #osdev
06:36:00 <doug16k> I got a GP on a register-to-register move once. was IDT limit violation and an IRQ :D
06:36:16 <doug16k> at first I was completely baffled, how could a register move #GP?
06:37:58 --- quit: immibis (Ping timeout: 248 seconds)
06:45:06 --- join: m3nt4L (~asvos@2a02:587:a033:dc00:3285:a9ff:fe8f:665d) joined #osdev
06:45:33 --- quit: vmlinuz (Quit: Leaving)
06:45:52 --- join: vmlinuz (~vmlinuz@2804:431:f725:5ad7:5770:2f11:7f3c:110d) joined #osdev
06:45:53 --- quit: vmlinuz (Changing host)
06:45:53 --- join: vmlinuz (~vmlinuz@unaffiliated/vmlinuz) joined #osdev
06:48:35 --- quit: Asu` (Quit: Konversation terminated!)
06:50:40 --- quit: SwiftMatt (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
06:53:06 --- join: kimundi (~Kimundi@i577A9079.versanet.de) joined #osdev
06:57:41 --- quit: rawste (Ping timeout: 245 seconds)
06:58:30 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
06:58:57 --- join: pie__ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
06:59:56 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
07:00:27 --- nick: Belxjander -> Belxjande
07:05:55 --- quit: m3nt4L (Remote host closed the connection)
07:08:52 --- join: CrystalMath (~coderain@reactos/developer/theflash) joined #osdev
07:12:42 --- quit: pie__ (Ping timeout: 240 seconds)
07:14:52 --- join: SwiftMatt (~Objective@2601:282:4300:3e:210e:d4e9:6154:3e91) joined #osdev
07:16:31 <doug16k> klange, I'd start to doubt whether that jmp is really there (anymore). can you break into the debugger there and do: x /1i $eip
07:16:58 * klange explodes
07:17:10 <klange> oh actually I figured it out, sorry for not following up
07:17:14 <doug16k> oh
07:17:18 <doug16k> what was it?
07:17:20 <klange> the address was... very wrong
07:17:54 <klange> actually, a PIC issue :)
07:18:10 <klange> some inline assembly was referencing a symbol that apparently never got relocated
07:18:32 <klange> now I've got other issues
07:18:50 <klange> actually I got most the kernel to boot but it seems the ramdisk is corrupt, I may have overwritten something somewhere
07:19:02 <doug16k> klange, I suggest adding -Wl,--no-dynamic-linker in your link command line, it fixed some nonsense for me
07:19:21 <doug16k> tells ld to just make calls direct and not bother with GOT
07:19:32 <doug16k> "relaxes" them all
07:19:33 <klange> does that make sense for an EFI binary?
07:19:36 <doug16k> yes
07:19:47 <doug16k> it's gcc code right?
07:20:01 <klange> does that make sense for a *32bit efi binary*?
07:20:06 <doug16k> yes
07:20:45 <doug16k> gets rid of some nonsense that gcc does by default just in case you override a symbol with a shared object
07:21:11 <doug16k> makes it just transform possibly-overriden-by-so things into direct calls
07:21:18 <doug16k> calls/symbol references
07:22:04 <doug16k> instead of indirect call through got, it will just call it directly. instead of mov value from got, it will just lea it directly, etc
07:22:10 <doug16k> it's called "relaxation" in ld parlance
07:22:39 <doug16k> if you are omitting sections that it thought were there, it could help
07:23:18 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
07:23:50 <doug16k> I was surprised how much tinkering ld does to instructions when it processes something@GOT etc
07:24:02 <doug16k> can/will change instructions to some other instruction
07:24:28 <doug16k> mov to lea is an example I mentioned
07:24:53 <doug16k> it was generating broken code for me until I added that linker option
07:25:02 <doug16k> subtly broken* -- mostly worked
07:27:07 --- quit: Tazmain (Quit: Leaving)
07:32:56 --- join: epony (~nym@77-85-141-166.ip.btc-net.bg) joined #osdev
07:33:12 --- quit: Belxjande (Quit: AmigaOSv4.1.6+//PowerPC native)
07:33:31 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
07:34:23 --- join: hmmmm (~sdfgsf@pool-72-79-164-115.sctnpa.east.verizon.net) joined #osdev
07:37:37 --- join: Tazmain (~Tazmain@unaffiliated/tazmain) joined #osdev
07:51:34 --- quit: elderK (Quit: Connection closed for inactivity)
07:51:48 <klange> yay it works
07:51:55 --- quit: tadni_ (Remote host closed the connection)
07:52:11 <klange> it uses the my native ide/atapi drivers to read stuff and doesn't actually do memory map stuff, but it boots
07:53:03 --- quit: vmlinuz (Ping timeout: 256 seconds)
07:53:04 --- quit: mrd (Ping timeout: 256 seconds)
07:54:15 --- join: mrd (~md@104.168.62.244) joined #osdev
07:54:16 --- quit: mrd (Changing host)
07:54:16 --- join: mrd (~md@debian/developer/mrd) joined #osdev
07:57:07 --- join: matryoshka (~matryoshk@unaffiliated/matryoshka) joined #osdev
07:58:18 <klange> I also want to make it set video mode in UEFI, think that might be useful.
08:02:22 --- join: Avinash (~Avinash@unaffiliated/avinash) joined #osdev
08:07:51 --- part: prokbird left #osdev
08:09:38 --- join: salek_ (~salek@91-155-9-229.elisa-laajakaista.fi) joined #osdev
08:10:18 --- join: vmlinuz (~vmlinuz@201-92-17-96.dsl.telesp.net.br) joined #osdev
08:10:18 --- quit: vmlinuz (Changing host)
08:10:18 --- join: vmlinuz (~vmlinuz@unaffiliated/vmlinuz) joined #osdev
08:16:55 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
08:17:38 --- quit: crgimenes (Quit: crgimenes)
08:18:32 --- join: crgimenes (~crgimenes@179.208.113.73) joined #osdev
08:23:10 --- join: tadni (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #osdev
08:23:36 --- join: tadni_ (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #osdev
08:25:30 --- join: pie__ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
08:26:53 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
08:27:42 --- join: freakazoid0223 (~mattc@pool-108-52-244-197.phlapa.fios.verizon.net) joined #osdev
08:30:05 --- quit: tadni (Read error: Connection reset by peer)
08:30:06 --- quit: tadni_ (Read error: Connection reset by peer)
08:31:46 --- quit: manzerbredes (Quit: WeeChat 2.1)
08:32:19 --- quit: Vulcan (Remote host closed the connection)
08:32:25 --- quit: cirno_ (Remote host closed the connection)
08:32:57 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
08:33:00 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
08:33:53 --- quit: SwiftMatt (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
08:36:53 --- join: HZun (~HZun@0x3ec72d49.osd.customer.dk.telia.net) joined #osdev
08:37:13 --- quit: marky (Quit: BitchX : a modern client for a old world)
08:37:21 --- join: marky (marky@scene.noffle.net) joined #osdev
08:37:22 --- quit: marky (Changing host)
08:37:22 --- join: marky (marky@unaffiliated/rbx) joined #osdev
08:44:33 --- join: nwm (~nwm@d50-92-166-160.bchsia.telus.net) joined #osdev
08:44:51 --- quit: alyptik (Ping timeout: 268 seconds)
08:45:00 --- join: typikal (ayy@cpe-76-173-133-37.hawaii.res.rr.com) joined #osdev
08:46:05 --- nick: typikal -> alyptik
08:51:11 --- join: abramovich (~abramovic@gateway/tor-sasl/abramovich) joined #osdev
08:51:33 --- quit: Vulcan (Remote host closed the connection)
08:53:24 --- quit: matryoshka (Quit: Leaving)
08:55:41 --- join: Vulcan_ (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
09:01:15 --- join: [Brain] (~brain@brainwave.brainbox.cc) joined #osdev
09:02:14 --- quit: [MisbehavingOS] (Quit: There are paranoid crossroads and shipwreck alleys.)
09:02:25 --- quit: cirno_ (Remote host closed the connection)
09:03:02 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
09:05:50 <doug16k> seriously ncurses? when my trace viewer runs under terminator, getch repeatedly instantly returns -1 when there is no input and my UI degrades into a polling loop, pegging a core
09:07:06 <klange> hm, under efi, virtualbox's guest device irq line is... set to 255 - did efi do that?
09:07:27 <klange> setting it to the 11 I'm used to seeing... made things unhappy, but 10 worked
09:07:35 <klange> hurray for randomly picking irq numbers
09:08:56 <doug16k> does your kernel's pci/irq code support MSI? you can sidestep BS like that entirely and be more efficient and flexible with MSI IRQs
09:08:58 --- join: Asu (~sdelang@241.18.136.77.rev.sfr.net) joined #osdev
09:11:00 --- quit: grouse (Quit: Leaving)
09:11:45 <doug16k> if the device supports MSI, you can set the PCI config to just be whatever interrupt vector you like from 32 to 255
09:12:10 <klange> msi requires lapic initialization
09:12:41 <doug16k> yes
09:13:17 --- quit: drakonis (Remote host closed the connection)
09:15:52 --- quit: abramovich (Quit: abramovich)
09:18:43 --- quit: m_t (Quit: Leaving)
09:19:58 --- join: [Dragon] (~while@unaffiliated/awaxx/x-0928682) joined #osdev
09:20:49 --- quit: Avinash (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:22:43 --- join: manzerbredes (~loic@2a01cb0885e31500cfc30bb534d5bc37.ipv6.abo.wanadoo.fr) joined #osdev
09:27:29 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
09:28:03 --- quit: quc (Ping timeout: 265 seconds)
09:30:55 --- join: rawste (~rawste@static-176-182-199-171.ncc.abo.bbox.fr) joined #osdev
09:32:09 --- join: dbittman_ (~dbittman@2601:647:ca00:1651:b26e:bfff:fe31:5ba2) joined #osdev
09:32:25 --- quit: cirno_ (Remote host closed the connection)
09:33:04 <[Dragon]> Oh god I might know that last one
09:33:09 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
09:33:30 <[Dragon]> cirno_: Is that you?
09:34:57 <[Dragon]> I'm [Awaxx], does it point a filled index?
09:43:14 --- join: Avinash (~Avinash@unaffiliated/avinash) joined #osdev
09:45:07 --- quit: hmmmm (Ping timeout: 264 seconds)
09:46:21 --- join: hmmmm (~sdfgsf@pool-72-79-163-176.sctnpa.east.verizon.net) joined #osdev
09:46:57 --- join: CcxWrk (~ccx@asterix.te2000.cz) joined #osdev
09:49:11 --- quit: cirno_ (Quit: WeeChat 2.1)
09:49:55 --- quit: aalm (Ping timeout: 264 seconds)
09:51:12 --- quit: dbittman_ (Ping timeout: 255 seconds)
09:53:06 --- quit: JusticeEX (Ping timeout: 245 seconds)
09:53:32 <doug16k> had to poll() STDIN_FILENO,POLLIN to prevent the tight polling loop around ncurses getch() when my program is in terminator terminal D:
10:01:10 --- quit: hmmmm (Ping timeout: 248 seconds)
10:01:18 --- quit: promach_ (Ping timeout: 240 seconds)
10:04:08 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
10:09:22 --- quit: Vulcan_ (Remote host closed the connection)
10:09:46 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
10:10:14 --- quit: Vulcan (Remote host closed the connection)
10:11:28 --- quit: HZun (Quit: Leaving)
10:12:26 --- join: hmmmm (~sdfgsf@pool-72-79-164-133.sctnpa.east.verizon.net) joined #osdev
10:18:19 --- join: blackandblue (~batdownh@gateway/tor-sasl/blackandblue) joined #osdev
10:29:57 --- quit: crgimenes (Quit: crgimenes)
10:34:25 --- join: crgimenes (~crgimenes@179.208.113.73) joined #osdev
10:34:55 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
10:37:47 --- quit: rawste (Quit: Sleep....)
10:38:57 --- quit: drakonis (Read error: Connection reset by peer)
10:39:09 --- join: rawste (~rawste@static-176-182-199-171.ncc.abo.bbox.fr) joined #osdev
10:39:20 --- quit: rawste (Client Quit)
10:43:42 --- join: rawste (~rawste@static-176-182-199-171.ncc.abo.bbox.fr) joined #osdev
10:48:48 --- quit: mniip (Ping timeout: 624 seconds)
10:59:09 --- quit: Avinash (Quit: Textual IRC Client: www.textualapp.com)
11:00:03 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
11:00:28 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
11:01:29 --- quit: crgimenes (Quit: crgimenes)
11:01:58 --- join: crgimenes (~crgimenes@179.208.113.73) joined #osdev
11:02:19 --- quit: light2yellow (Quit: light2yellow)
11:02:34 --- join: tadni (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #osdev
11:02:51 --- join: bm371613 (~bartek@89-64-30-31.dynamic.chello.pl) joined #osdev
11:04:15 --- quit: tadni (Max SendQ exceeded)
11:05:10 --- join: tadni (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #osdev
11:06:24 --- quit: CheckDavid (Quit: Connection closed for inactivity)
11:08:05 --- join: CheckDavid (uid14990@gateway/web/irccloud.com/x-wcufvyziwwsltftg) joined #osdev
11:11:59 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
11:13:03 --- quit: crgimenes (Quit: crgimenes)
11:13:19 --- quit: jack_rabbit (Ping timeout: 264 seconds)
11:13:56 --- quit: tadni (Ping timeout: 240 seconds)
11:14:42 --- join: tadni (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #osdev
11:15:49 --- join: tacco| (~tacco@i59F4A3B8.versanet.de) joined #osdev
11:16:51 --- quit: tadni (Remote host closed the connection)
11:17:18 --- join: aalm (~aalm@37-219-19-84.nat.bb.dnainternet.fi) joined #osdev
11:25:18 --- join: mniip (mniip@freenode/staff/mniip) joined #osdev
11:27:26 --- quit: Nach0z (Ping timeout: 265 seconds)
11:30:59 --- quit: zeus1 (Quit: WeeChat 2.1)
11:35:07 --- join: nicht (~nicht@2804:7f1:2080:9420:7b30:7749:da9:70c4) joined #osdev
11:38:46 --- quit: return0e (Read error: Connection reset by peer)
11:39:00 --- join: return0e (~return0e@5-198-102-244.static.kc.net.uk) joined #osdev
11:40:21 --- quit: graphene (Remote host closed the connection)
11:41:53 --- join: graphene (~graphene@46.101.134.251) joined #osdev
11:51:25 --- join: hmmmmm (~sdfgsf@pool-72-79-169-12.sctnpa.east.verizon.net) joined #osdev
11:53:56 --- quit: hmmmm (Ping timeout: 240 seconds)
11:55:44 --- join: stoopkid (uid137696@gateway/web/irccloud.com/x-zjpgomztgcvcaerl) joined #osdev
11:58:39 --- join: SwiftMatt (~Objective@2601:282:4300:3e:210e:d4e9:6154:3e91) joined #osdev
11:59:55 --- join: quc (~quc@87.116.237.128) joined #osdev
12:05:25 --- quit: SopaXorzTaker (Remote host closed the connection)
12:05:37 --- quit: [Brain] (Ping timeout: 265 seconds)
12:09:04 --- quit: navidr (Quit: Connection closed for inactivity)
12:10:38 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
12:15:34 --- quit: Vulcan (Ping timeout: 248 seconds)
12:18:41 --- quit: X-Scale (Ping timeout: 260 seconds)
12:23:08 --- quit: graphene (Remote host closed the connection)
12:23:58 --- join: masoudd (~masoudd@5.116.17.229) joined #osdev
12:24:00 --- quit: masoudd (Max SendQ exceeded)
12:24:27 --- join: masoudd (~masoudd@5.116.17.229) joined #osdev
12:25:06 --- join: graphene (~graphene@46.101.134.251) joined #osdev
12:27:43 --- quit: Humble (Ping timeout: 260 seconds)
12:40:55 --- join: Humble (~hchiramm@2405:204:d40b:1f93:fec0:ae6d:ffad:e610) joined #osdev
12:42:33 --- quit: manzerbredes (Quit: WeeChat 2.1)
12:45:34 --- join: X-Scale (~ARM@83.223.243.233) joined #osdev
12:48:18 --- quit: nwm (Ping timeout: 240 seconds)
12:50:42 <Sanctified> If I intend to go to long mode ASAP, is there any point in setting up non-long GDT entries?
12:53:59 <klys> yes, I think you have to have pmode to get long mode.
12:55:31 --- quit: graphene (Remote host closed the connection)
12:56:33 <Sanctified> right
12:57:25 --- join: graphene (~graphene@46.101.134.251) joined #osdev
12:57:32 <Sanctified> I was just thinking if I could get by without having any 32 bit gdt entries, but I suppose not then
12:57:42 --- join: nwm (~nwm@d66-183-140-241.bchsia.telus.net) joined #osdev
12:57:47 --- join: glauxosdever (~alex@ppp-94-66-236-35.home.otenet.gr) joined #osdev
13:02:43 --- join: AverageJ0e (~joe@ip72-222-140-99.ph.ph.cox.net) joined #osdev
13:10:22 <doug16k> Sanctified, the only difference is a single bit in the code segment descriptor. there's no such thing as a 64 bit data descriptor, so the difference is one descriptor
13:11:22 <Sanctified> right, I've just gone ahead and added a 32 bit code descriptor
13:12:18 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
13:12:26 <doug16k> if you have to go back and forth between real mode and long mode (repeatedly, say, in a bootloader), there is a big difference. you need 16 bit pmode code and data + 32 bit code and data + 64 bit code descriptor
13:13:08 <doug16k> you need the 16 bit ones to load 64KB limits into cs and data segments when going back to real mode, if you want to do it properly that is
13:15:07 <Sanctified> I don't think I will need to go back and forth
13:18:54 --- quit: alyptik (Quit: https://ptpb.pw/~docrivers.gif)
13:19:38 --- join: alyptik (ayy@cpe-76-173-133-37.hawaii.res.rr.com) joined #osdev
13:21:48 --- quit: blackandblue (Remote host closed the connection)
13:21:59 --- join: blackandblue (~batdownh@gateway/tor-sasl/blackandblue) joined #osdev
13:24:29 --- quit: sdfgsd (Remote host closed the connection)
13:32:57 --- quit: blackandblue (Quit: Leaving)
13:36:24 --- quit: CheckDavid (Quit: Connection closed for inactivity)
13:41:32 --- quit: glauxosdever (Quit: leaving)
13:45:22 --- quit: Vulcan (Remote host closed the connection)
13:45:23 --- quit: vmlinuz (Quit: Leaving)
13:46:19 --- join: macdonag2 (~macdonag2@cpc110673-lewi19-2-0-cust478.2-4.cable.virginm.net) joined #osdev
13:47:07 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
13:47:47 --- quit: graphene (Remote host closed the connection)
13:49:48 --- join: graphene (~graphene@46.101.134.251) joined #osdev
13:55:45 --- join: m3nt4L (~asvos@2a02:587:a033:dc00:3285:a9ff:fe8f:665d) joined #osdev
13:55:47 --- join: S_Gautam (uid286066@gateway/web/irccloud.com/x-xoaoagsgqhortkvt) joined #osdev
14:17:51 --- join: zeus1 (~zeus@197.239.5.42) joined #osdev
14:19:25 --- quit: SwiftMatt (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
14:20:10 --- quit: graphene (Remote host closed the connection)
14:21:56 --- join: graphene (~graphene@46.101.134.251) joined #osdev
14:24:16 --- quit: dennis95 (Quit: Leaving)
14:27:46 --- quit: spare (Quit: leaving)
14:31:07 --- quit: xenos1984 (Quit: Leaving.)
14:36:28 --- quit: Sanctified (Quit: Later, nerds)
14:44:07 --- quit: macdonag2 (Quit: macdonag2)
14:47:26 --- quit: zeus1 (Ping timeout: 240 seconds)
14:49:30 --- quit: drakonis (Remote host closed the connection)
14:50:00 --- quit: Asu (Remote host closed the connection)
14:54:18 --- join: arora (~ashok@92.96.229.64) joined #osdev
15:10:14 --- quit: epony (Quit: QUIT)
15:11:53 --- quit: arora (Quit: 'night!)
15:14:13 --- quit: stoopkid (Quit: Connection closed for inactivity)
15:15:44 --- quit: kimundi (Ping timeout: 256 seconds)
15:16:37 --- join: sortie (~sortie@5.186.55.44) joined #osdev
15:20:08 --- join: ephemer0l_ (~ephemer0l@pentoo/user/ephemer0l) joined #osdev
15:27:41 --- quit: korans (Ping timeout: 260 seconds)
15:34:30 --- quit: klysm (Ping timeout: 248 seconds)
15:47:33 --- join: korans (~korans@93.191.203.83) joined #osdev
15:51:40 --- quit: m3nt4L (Remote host closed the connection)
15:53:14 --- quit: rawste (Quit: Sleep....)
15:56:09 --- quit: sortie (Quit: Leaving)
16:00:27 --- join: epony (~nym@77-85-141-166.ip.btc-net.bg) joined #osdev
16:00:38 --- quit: Tazmain (Quit: Leaving)
16:02:21 --- join: macdonag2 (~macdonag2@cpc110673-lewi19-2-0-cust478.2-4.cable.virginm.net) joined #osdev
16:02:23 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
16:03:33 --- quit: macdonag2 (Client Quit)
16:13:25 --- quit: graphene (Remote host closed the connection)
16:14:31 --- quit: masoudd (Ping timeout: 264 seconds)
16:43:39 --- quit: AverageJ0e (Quit: Leaving)
16:45:20 --- quit: S_Gautam (Quit: Connection closed for inactivity)
17:01:55 --- quit: nwm (Ping timeout: 264 seconds)
17:06:13 --- join: promach_ (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
17:09:02 --- join: nwm (~nwm@d66-183-140-241.bchsia.telus.net) joined #osdev
17:09:22 --- join: stoopkid (uid137696@gateway/web/irccloud.com/x-lybhcyrlxdkcdbon) joined #osdev
17:10:10 --- join: Naergon (~Naergon@unaffiliated/naergon) joined #osdev
17:15:51 --- join: S_Gautam (uid286066@gateway/web/irccloud.com/x-ohwctqruodubdqrt) joined #osdev
17:19:19 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
17:29:08 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
17:29:27 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
17:35:31 --- quit: oldtopman (Quit: *pouf*)
17:36:44 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
17:45:47 --- quit: RudyValencia (Quit: 410 Gone)
17:53:54 --- join: RudyValencia (rudy@unaffiliated/rudyvalencia) joined #osdev
18:01:35 --- join: graphene (~graphene@46.101.134.251) joined #osdev
18:05:06 --- quit: epony (Quit: QUIT)
18:05:08 --- join: dbittman_ (~dbittman@2601:647:ca00:1651:b26e:bfff:fe31:5ba2) joined #osdev
18:08:44 --- quit: freakazoid0223 (Read error: Connection reset by peer)
18:09:42 --- quit: vaibhav|gone (Ping timeout: 256 seconds)
18:11:12 --- quit: pie__ (Ping timeout: 240 seconds)
18:21:17 --- join: immibis (~chatzilla@222-155-163-212-fibre.sparkbb.co.nz) joined #osdev
18:29:25 --- join: freakazoid0223 (~mattc@pool-108-52-244-197.phlapa.fios.verizon.net) joined #osdev
18:42:34 --- quit: drakonis (Remote host closed the connection)
19:17:09 --- quit: graphene (Remote host closed the connection)
19:18:36 --- join: graphene (~graphene@46.101.134.251) joined #osdev
19:25:51 --- quit: dbittman_ (Ping timeout: 260 seconds)
19:28:03 --- quit: Tobba_ (Ping timeout: 245 seconds)
19:36:43 --- quit: JusticeEX (Ping timeout: 264 seconds)
19:45:08 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
19:47:51 --- quit: stoopkid (Quit: Connection closed for inactivity)
19:51:29 --- join: heat (~heat@sortix/contributor/heat) joined #osdev
19:57:53 --- quit: spare (Quit: leaving)
20:03:43 --- join: stoopkid (uid137696@gateway/web/irccloud.com/x-dekbgsicxvfylesl) joined #osdev
20:05:20 --- quit: S_Gautam (Quit: Connection closed for inactivity)
20:05:27 --- join: navidr (uid112413@gateway/web/irccloud.com/x-sixecywndejyoxyd) joined #osdev
20:11:45 --- quit: nj0rd (Ping timeout: 255 seconds)
20:25:11 --- join: nj0rd (~nj0rd@200116b845e9cd00aafd351f217ba3d1.dip.versatel-1u1.de) joined #osdev
20:26:33 --- quit: tacco| ()
20:31:41 --- quit: nicht (Ping timeout: 256 seconds)
20:32:51 --- join: return0e_ (~return0e@5-198-102-244.static.kc.net.uk) joined #osdev
20:32:56 --- quit: return0e (Ping timeout: 240 seconds)
20:37:37 --- join: vdamewood (~vdamewood@unaffiliated/vdamewood) joined #osdev
20:39:05 --- join: masoudd (~masoudd@5.116.17.229) joined #osdev
20:51:38 --- quit: vdamewood (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:12:44 --- quit: nwm (Ping timeout: 256 seconds)
21:20:10 <buhman> has anyone made a scheduler that allows tasks to yield for a specific signal/interrupt?
21:20:30 <buhman> it seems like it would be cool if this were also implemented as a language feature
21:21:03 <NightBlade> like WM_MESSAGE?
21:21:33 <buhman> google doesn't give me a convincing result for what that is
21:21:54 <NightBlade> one sec i'm looking
21:22:09 <NightBlade> https://wiki.winehq.org/List_Of_Windows_Messages
21:22:11 <bslsk05> ​wiki.winehq.org: List Of Windows Messages - WineHQ Wiki
21:22:13 <NightBlade> general gist
21:22:32 <NightBlade> its a messaging pipeline used to pass/listen for messages
21:22:55 <NightBlade> it's how windows works
21:23:20 <NightBlade> WM_KEYDOWN is one example
21:23:31 <NightBlade> you can hook them as well
21:23:41 <buhman> I guess message passing is probably what I want, actually
21:24:01 <NightBlade> i believe thats how most global keyboard hooks work
21:24:09 <buhman> I was thinking more like a task would set up a hardware timer, then yield to other tasks until that specific timer gives an interrupt
21:24:15 <NightBlade> i say most because there's always exceptions
21:24:36 <buhman> but if the ISR emits some kind of event/message, that's the same thing only more generic
21:24:59 <NightBlade> this is more like something to kill an unresponsive process
21:25:21 <NightBlade> you can try WM_CLOSE or UNLOAD i believe
21:25:29 <NightBlade> give it a chance to close gracefully
21:25:32 --- quit: banisterfiend (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:25:58 <NightBlade> i played around with it a bit back in the day
21:26:14 <NightBlade> lots of fun stuff in there
21:27:12 --- join: nwm (~nwm@d66-183-140-241.bchsia.telus.net) joined #osdev
21:27:39 <NightBlade> you can use the keyboard ones to send keys to an application
21:28:11 <NightBlade> doesn't always work depending on anti-cheat software or implementation
21:28:24 <NightBlade> I was writing a joypad to keyboard emulator
21:28:57 <NightBlade> it worked, but the game i wanted to use it on would process it fine in chat boxes but the game wouldn't respond
21:29:09 <NightBlade> i'm pretty sure it was to stop bots
21:29:40 <NightBlade> simple keyboard based ones anyway
21:30:42 <NightBlade> I even had it setup to hold shift or whatever to run when you pressed a stick all the way down
21:31:19 --- join: Goplat (~Goplat@reactos/developer/Goplat) joined #osdev
21:31:24 --- join: vdamewood (~vdamewood@unaffiliated/vdamewood) joined #osdev
21:31:41 --- quit: freakazoid0223 (Ping timeout: 260 seconds)
21:32:04 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
21:33:26 --- quit: ybyourmom (Quit: Lost terminal)
21:33:37 --- join: vinleod (~vdamewood@unaffiliated/vdamewood) joined #osdev
21:35:33 --- quit: drakonis (Read error: Connection reset by peer)
21:35:42 --- quit: vdamewood (Ping timeout: 240 seconds)
21:38:06 <heat> buhman: Most schedulers do such a thing, but without explicitly saying it's an IRQ
21:38:25 --- nick: vinleod -> vdamewood
21:38:39 <heat> You could do something with the IRQ handler and a semaphore, would work nicely and you wouldn't need to change a thing in the scheduler
21:39:08 <NightBlade> is semaphore the successor to wm_messages?
21:39:28 <heat> uh
21:39:29 <heat> no
21:41:10 <NightBlade> hmm, i always thought microsoft invented it
21:41:27 <heat> Invented what?
21:41:27 <NightBlade> i remember seeing a semaphore.exe way back in win98
21:41:43 <NightBlade> now it's all over win10
21:42:05 <heat> No, semaphores were invented by Edsger Dijkstra in the 60s
21:42:58 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
21:43:09 <NightBlade> the code i'm looking at for thread locking looks almost identical to mutex code i've used before
21:43:17 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
21:51:23 --- quit: heat (Ping timeout: 245 seconds)
21:59:12 --- quit: vdamewood (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
22:49:41 --- quit: banisterfiend (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:52:18 --- quit: dustinm` (Read error: Connection reset by peer)
23:00:14 --- join: ljc (~ljc@unaffiliated/ljc) joined #osdev
23:04:25 --- join: dustinm` (~dustinm@68.ip-149-56-14.net) joined #osdev
23:07:36 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
23:10:54 --- join: dbittman_ (~dbittman@2601:647:ca00:1651:b26e:bfff:fe31:5ba2) joined #osdev
23:12:07 --- join: andrei-n (~andrei@208.8-64-87.adsl-dyn.isp.belgacom.be) joined #osdev
23:19:55 --- quit: salek_ (Ping timeout: 264 seconds)
23:23:36 --- join: oldtopman (~oldtopman@unaffiliated/oldtopman) joined #osdev
23:32:35 --- quit: masoudd (Ping timeout: 256 seconds)
23:33:58 --- join: zeus1 (~zeus@197.239.3.144) joined #osdev
23:36:06 --- join: salek_ (~salek@91-155-9-229.elisa-laajakaista.fi) joined #osdev
23:40:36 --- quit: dbittman_ (Ping timeout: 245 seconds)
23:44:52 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
23:46:57 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
23:46:59 --- join: m3nt4L (~asvos@2a02:587:a01f:9400:3285:a9ff:fe8f:665d) joined #osdev
23:55:36 --- join: masoudd (~masoudd@5.116.17.229) joined #osdev
23:56:25 --- quit: cirno_ (Quit: WeeChat 2.1)
23:58:10 --- join: robomanisnot (6e9156af@gateway/web/freenode/ip.110.145.86.175) joined #osdev
23:58:16 <robomanisnot> Hello
23:58:37 <robomanisnot> Is there any DSLs for modeling and constraints on them? that is agnostic of any specific language.
23:59:11 --- join: pie__ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
23:59:59 --- log: ended osdev/18.07.06