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=20

Friday, 20 July 2018

00:00:00 --- log: started osdev/18.07.20
00:00:34 --- quit: stoopkid (Quit: Connection closed for inactivity)
00:02:06 --- join: flacks (flacks@184.91.69.131) joined #osdev
00:07:29 --- join: angel0xff (~zzz@158-58-227-127.sf.ddns.bulsat.com) joined #osdev
00:15:30 --- join: nikivi (~nikivi@46.101.62.199) joined #osdev
00:16:49 --- join: asymptotically (~asymptoti@gateway/tor-sasl/asymptotically) joined #osdev
00:23:27 --- quit: bemeurer (Ping timeout: 240 seconds)
00:24:43 --- quit: Lowl3v3l1 (Remote host closed the connection)
00:26:51 --- join: Lowl3v3l1 (~Lowl3v3l@ulbp2362.ulb.uni-jena.de) joined #osdev
00:30:47 --- join: m3nt4L (~asvos@2a02:587:a01d:4100:3285:a9ff:fe8f:665d) joined #osdev
00:40:30 --- join: sixand (~Thunderbi@60.173.155.144) joined #osdev
00:44:57 --- join: tacco| (~tacco@i59F4A124.versanet.de) joined #osdev
00:49:58 <klange> I really enjoy quick fixes and features... but often find myself really put off by doing larger features. Ultimately, this is what created ToaruOS and is why there's so much there built on such shoddy foundation.
00:50:08 --- quit: MarchHare (Ping timeout: 245 seconds)
00:52:35 --- quit: tacco| ()
00:56:36 --- join: SopaXorzTaker (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
00:56:46 --- quit: xerpi (Quit: Leaving)
01:01:23 --- quit: SopaXorzTaker (Client Quit)
01:05:03 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
01:06:08 --- join: Asu (~sdelang@54.84.136.77.rev.sfr.net) joined #osdev
01:17:13 <klange> now my sh tab completes commands correctly for sudo and I added some basic infrastructure for adding custom completions for special commands in the future... needs some more work so it comes from config files instead of being hardcoded, but it's workable
01:19:43 --- quit: geekodour08 (Ping timeout: 245 seconds)
01:25:19 --- quit: flacks (Ping timeout: 240 seconds)
01:28:16 --- join: flacks (flacks@184.91.69.131) joined #osdev
01:32:41 --- quit: sixand (Ping timeout: 256 seconds)
01:38:47 --- quit: bemeurer (Ping timeout: 248 seconds)
01:41:22 --- quit: celadon (Quit: ZNC 1.7.1+deb1 - https://znc.in)
01:41:41 --- join: celadon (~celadon@66.157-14-84.ripe.coltfrance.com) joined #osdev
01:43:43 --- quit: CheckDavid (Quit: Connection closed for inactivity)
01:47:30 --- quit: hmmmm (Remote host closed the connection)
01:55:49 --- quit: ybyourmom (Quit: Lost terminal)
01:59:38 --- join: glauxosdever (~alex@ppp-2-86-170-62.home.otenet.gr) joined #osdev
02:03:00 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
02:04:55 --- quit: Tobba (Ping timeout: 264 seconds)
02:06:30 <olsner> argh, stupid bug - forgot to handle the case when multiple timers have elapsed (and subsequently assumed the next timeout would be in the future, and that caused overflow so it set up to wait around 2^64 ticks)
02:07:15 <olsner> glad it was that and not really subtle interrupt handling thing though :)
02:08:32 --- quit: Goplat (Remote host closed the connection)
02:15:49 --- quit: angel0xff (Ping timeout: 240 seconds)
02:18:51 --- join: qwerty123 (~user@62.217.135.70) joined #osdev
02:19:08 <qwerty123> klange: Hey, we were having a conversation ealier
02:19:13 <qwerty123> s/ealier/earlier
02:19:29 <qwerty123> I wanted to ask
02:20:00 --- part: qwerty123 left #osdev
02:22:55 <bcos_> "I wanted to ask, do you know where I left my heart medication?"
02:23:22 <bcos_> ...and nobody has heard from qwerty123 since that day
02:23:27 --- join: angel0xff (~zzz@158-58-227-127.sf.ddns.bulsat.com) joined #osdev
02:28:52 --- join: Kimundi__ (~Kimundi@i577A9F42.versanet.de) joined #osdev
02:36:57 --- quit: bemeurer (Ping timeout: 276 seconds)
02:39:27 --- quit: nwm (Ping timeout: 240 seconds)
02:41:30 --- quit: pie_ (Ping timeout: 276 seconds)
02:43:09 --- quit: Atrap[m] (Remote host closed the connection)
02:43:11 --- quit: htafdwes[m] (Read error: Connection reset by peer)
02:43:14 --- quit: marcthe12[m] (Remote host closed the connection)
02:43:15 --- quit: hl[m] (Read error: Connection reset by peer)
02:43:16 --- quit: kataria[m] (Remote host closed the connection)
02:43:19 --- quit: Drakonis[m] (Remote host closed the connection)
02:43:21 --- quit: fristonio[m] (Remote host closed the connection)
02:43:24 --- quit: Wallbraker[m] (Remote host closed the connection)
02:43:25 --- quit: caseypme[m] (Remote host closed the connection)
02:43:26 --- quit: VOID001[m] (Read error: Connection reset by peer)
02:43:26 --- quit: equalunique[m] (Read error: Connection reset by peer)
02:43:27 --- quit: Stary[m] (Remote host closed the connection)
02:43:28 --- quit: am2on[m] (Read error: Connection reset by peer)
02:43:29 --- quit: hcd[m] (Read error: Connection reset by peer)
02:43:30 --- quit: xobroll[m] (Remote host closed the connection)
02:43:31 --- quit: dafnamay[m] (Read error: Connection reset by peer)
02:43:32 --- quit: lkurusa[m] (Write error: Connection reset by peer)
02:43:33 --- quit: Ringil[m] (Write error: Connection reset by peer)
02:48:31 --- join: kataria[m] (katariamat@gateway/shell/matrix.org/x-lwhvdurlwjdbkivp) joined #osdev
02:49:49 --- join: nortega (~nortega@gateway/tor-sasl/deathsbreed) joined #osdev
03:00:11 --- join: qwerty123 (~user@62.217.135.70) joined #osdev
03:00:17 <qwerty123> Hey
03:00:29 <qwerty123> I'm sitting at my desk in my first ever job
03:00:36 <qwerty123> It's a Java sweatshop
03:00:50 <qwerty123> But I can't operate around here because of being a weird person
03:00:54 <qwerty123> Should I quit and try to get a remote job?
03:02:00 <bcos_> Why does being weird prevent you from operating?
03:02:56 <bcos_> (I think that for all people in all new jobs, it takes a while to get used to your new surroundings and co-workers)
03:03:19 <qwerty123> Social anxiety and loud people
03:03:32 <qwerty123> Reputation is already slaughtered
03:03:40 <qwerty123> I'm also the youngest around here
03:03:51 <qwerty123> They think I can't code but all they do is sling Java shitcode
03:04:02 <bcos_> Sounds like you just need a good pair of headphones
03:04:34 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
03:04:35 <bcos_> ..the sort that will muffle outside noise a bit
03:04:40 <qwerty123> Is it normal to not have any tasks assigned to you even though it's your second day at job?
03:04:47 <bcos_> ..where you can pretend you're listening to music while you ignore people
03:05:04 <qwerty123> It's as if they don't even need anyone
03:06:01 <qwerty123> I've been just sitting here waiting to get some task
03:06:04 <bcos_> There is no "normal". Sometimes you spend the entire first week doing "induction training" and waiting for paperwork, sometimes you're expected to immediately be as productive as someone that's been doing the job for decades
03:06:27 <bcos_> Do you have a boss/manager?
03:06:49 --- join: m_t (~m_t@p5DDA3D3C.dip0.t-ipconnect.de) joined #osdev
03:06:53 <qwerty123> A manager but it seems like the old manager left few days before I joined so the guy is inexperienced or something
03:07:31 <bcos_> You should go ask them for some work to do - maybe they don't realise you're not doing anything
03:14:10 --- join: zeus1 (~zeus@160.119.149.222) joined #osdev
03:16:27 <qwerty123> Are all programming workplaces friendly-chatty or do ones will less chatter exist?
03:17:25 <olsner> they are all different
03:17:34 <klange> despite overwhelming research showing that these damn open-layout offices are bad for productivity, they continue to pervade the industry
03:18:26 <qwerty123> Well, I'm pretty damn unproductive right now
03:19:12 <bcos_> What did manager say you could/should be doing?
03:19:24 <qwerty123> Can't even work on my own projects cuz can't concentrate
03:19:39 <qwerty123> Manager said sit here and learn from the peers
03:19:55 <qwerty123> They even pay me full salary which makes me feel guilty
03:20:04 <bcos_> So you need to find a peer and watch them write code?
03:20:16 <qwerty123> They just keep chatting about random stuff
03:20:44 <bcos_> Ask them a question about the code they're writing (to change the subject to something relevant)
03:22:19 --- join: SopaXorzTaker (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
03:23:14 <qwerty123> They just keep saying Java, PlSql
03:23:54 --- part: qwerty123 left #osdev
03:24:59 --- join: Ringil[m] (ringilmatr@gateway/shell/matrix.org/x-waayuqahasrtopyq) joined #osdev
03:25:01 --- join: VOID001[m] (void001mis@gateway/shell/matrix.org/x-qwttvvxwxbuefoaq) joined #osdev
03:25:01 --- join: hl[m] (m148833mat@gateway/shell/matrix.org/x-sypuoomgujoxngcm) joined #osdev
03:25:20 --- join: Drakonis[m] (drakonisma@gateway/shell/matrix.org/x-icekxysphdzgwecl) joined #osdev
03:25:28 --- join: caseypme[m] (caseypmema@gateway/shell/matrix.org/x-riwlmtewoajvvasz) joined #osdev
03:25:28 --- join: htafdwes[m] (htafdwesma@gateway/shell/matrix.org/x-celyydurrzayuhoe) joined #osdev
03:25:37 --- join: Atrap[m] (atrapmatri@gateway/shell/matrix.org/x-jfxnziiupcefuyge) joined #osdev
03:25:43 --- join: marcthe12[m] (marcthe12m@gateway/shell/matrix.org/x-mufxfskwlmfrfgze) joined #osdev
03:25:43 --- join: dafnamay[m] (dafnamayma@gateway/shell/matrix.org/x-spnkgzzbquunruxx) joined #osdev
03:26:01 --- join: equalunique[m] (equaluniqu@gateway/shell/matrix.org/x-ifamayrarirorasy) joined #osdev
03:26:01 --- join: hcd[m] (hcdmatrixo@gateway/shell/matrix.org/x-wxouevkazbyotusc) joined #osdev
03:26:13 --- join: fristonio[m] (fristoniom@gateway/shell/matrix.org/x-cfhvcabkjcbixffi) joined #osdev
03:27:27 --- join: Wallbraker[m] (wallbraker@gateway/shell/matrix.org/x-afytdsywvvdmxkuo) joined #osdev
03:27:27 --- join: lkurusa[m] (lkurusamat@gateway/shell/matrix.org/x-pruhvsagzrzhtkch) joined #osdev
03:27:27 --- join: am2on[m] (am2onataun@gateway/shell/matrix.org/x-ujyesjplqauugtqb) joined #osdev
03:27:30 --- join: Stary[m] (starymatri@gateway/shell/matrix.org/x-nccxzqothcebwwzv) joined #osdev
03:28:08 --- join: xobroll[m] (xobrollmat@gateway/shell/matrix.org/x-tvvuomnvrpllvqtb) joined #osdev
03:30:08 --- quit: zeus1 (Ping timeout: 245 seconds)
03:33:01 --- quit: bemeurer (Ping timeout: 256 seconds)
03:33:24 --- join: isaac_ (~isaac@host81-129-159-113.range81-129.btcentralplus.com) joined #osdev
03:34:18 --- nick: isaac_ -> isaacwoods
03:38:22 --- join: zeus1 (~zeus@160.119.149.222) joined #osdev
03:44:57 --- quit: JusticeEX (Ping timeout: 240 seconds)
03:48:43 --- quit: zeus1 (Ping timeout: 260 seconds)
03:59:00 --- quit: Lowl3v3l1 (Remote host closed the connection)
04:01:10 --- join: Lowl3v3l1 (~Lowl3v3l@ulbp2362.ulb.uni-jena.de) joined #osdev
04:05:50 --- join: sortie (~sortie@static-5-186-55-44.ip.fibianet.dk) joined #osdev
04:13:48 --- quit: angel0xff (Ping timeout: 276 seconds)
04:18:53 --- join: Kimundi_ (~Kimundi@i577A9D37.versanet.de) joined #osdev
04:20:01 --- quit: SopaXorzTaker (Remote host closed the connection)
04:20:28 --- join: SopaXorzTaker (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
04:22:41 --- quit: Kimundi__ (Ping timeout: 260 seconds)
04:23:08 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
04:29:58 --- join: CrystalMath (~coderain@reactos/developer/theflash) joined #osdev
04:32:53 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
04:36:27 --- quit: flacks (Ping timeout: 240 seconds)
04:41:10 --- join: flacks (flacks@184.91.69.131) joined #osdev
04:52:46 --- quit: kleinweby (Quit: What's that plug for?)
04:54:41 --- quit: celadon (Quit: ZNC 1.7.1+deb1 - https://znc.in)
04:55:32 --- quit: bemeurer (Ping timeout: 268 seconds)
04:55:34 --- join: celadon (~celadon@66.157-14-84.ripe.coltfrance.com) joined #osdev
04:59:04 --- join: dennis95 (~dennis@mue-88-130-61-085.dsl.tropolys.de) joined #osdev
05:03:12 --- quit: X-Scale (Ping timeout: 244 seconds)
05:03:18 --- join: kleinweby (~kleinweby@mars.spei.ch) joined #osdev
05:05:40 --- join: [X-Scale] (~ARM@83.223.243.244) joined #osdev
05:05:52 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
05:10:31 --- quit: bemeurer (Ping timeout: 248 seconds)
05:16:07 --- quit: kleinweby (Quit: ZNC 1.6.6+deb1 - http://znc.in)
05:16:15 --- join: kleinweby (~kleinweby@mars.spei.ch) joined #osdev
05:16:16 --- quit: kleinweby (Changing host)
05:16:16 --- join: kleinweby (~kleinweby@unaffiliated/kleinweby) joined #osdev
05:16:57 --- quit: JusticeEX (Ping timeout: 240 seconds)
05:17:21 --- join: stoopkid (uid137696@gateway/web/irccloud.com/x-cwmxkpwlbcwbdfac) joined #osdev
05:19:44 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
05:20:19 --- quit: dustinm` (Quit: Leaving)
05:22:43 --- quit: kleinweby (Quit: ZNC 1.6.6+deb1 - http://znc.in)
05:22:50 --- join: kleinweby (~kleinweby@mars.spei.ch) joined #osdev
05:22:50 --- quit: kleinweby (Changing host)
05:22:50 --- join: kleinweby (~kleinweby@unaffiliated/kleinweby) joined #osdev
05:23:33 --- quit: kleinweby (Client Quit)
05:23:51 --- quit: flacks (Ping timeout: 248 seconds)
05:24:09 --- join: kleinweby (~kleinweby@mars.spei.ch) joined #osdev
05:24:09 --- quit: kleinweby (Changing host)
05:24:09 --- join: kleinweby (~kleinweby@unaffiliated/kleinweby) joined #osdev
05:24:56 --- join: dustinm` (~dustinm@68.ip-149-56-14.net) joined #osdev
05:26:15 --- join: flacks (flacks@184.91.69.131) joined #osdev
05:26:44 --- join: S_Gautam (uid286066@gateway/web/irccloud.com/x-idjghviccmlywbjd) joined #osdev
05:29:47 --- join: user (~user@62.217.135.70) joined #osdev
05:33:10 --- quit: graphene (Remote host closed the connection)
05:34:18 --- join: vmlinuz (~vmlinuz@201-0-120-198.dsl.telesp.net.br) joined #osdev
05:34:18 --- quit: vmlinuz (Changing host)
05:34:19 --- join: vmlinuz (~vmlinuz@unaffiliated/vmlinuz) joined #osdev
05:34:41 --- join: graphene (~graphene@46.101.134.251) joined #osdev
05:35:03 --- quit: aalm (Ping timeout: 276 seconds)
05:36:53 --- quit: spare (Remote host closed the connection)
05:38:58 --- quit: jordyd (Quit: Bye!)
05:39:24 --- quit: nortega (Quit: Vivu lante, vivu feliĉe!)
05:41:13 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
05:41:16 --- join: jordyd (~jordyd@pampanic/co-maintainer/jordyd) joined #osdev
05:41:46 --- join: nortega (~nortega@gateway/tor-sasl/deathsbreed) joined #osdev
05:42:10 --- quit: nortega (Client Quit)
05:52:35 --- quit: graphene (Remote host closed the connection)
05:54:07 --- join: graphene (~graphene@46.101.134.251) joined #osdev
05:55:10 --- quit: graphene (Remote host closed the connection)
05:56:37 --- part: user left #osdev
05:56:43 --- join: graphene (~graphene@46.101.134.251) joined #osdev
06:00:06 --- quit: brynet (Quit: leaving)
06:01:54 --- nick: stux- -> stux
06:02:15 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
06:11:49 --- quit: bemeurer (Ping timeout: 240 seconds)
06:25:36 <klange> yay, got keyboard control for menus reimplemented
06:25:59 <klange> python version had them, hadn't done it for the c version
06:28:09 --- quit: graphene (Remote host closed the connection)
06:29:00 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
06:29:38 --- join: graphene (~graphene@46.101.134.251) joined #osdev
06:34:22 <klange> Hm, I may have made a mistake separating my menu bar library from the normal menu library, might be tricky to get menubars to switch as expected...
06:35:26 --- quit: sixand (Read error: Connection reset by peer)
06:36:14 --- quit: Vulcan (Read error: Connection reset by peer)
06:36:19 --- quit: rain1 (Ping timeout: 240 seconds)
06:36:30 --- join: user (~user@62.217.135.70) joined #osdev
06:38:45 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
06:38:55 --- join: rain1 (~rain1@unaffiliated/rain1) joined #osdev
06:39:04 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
06:39:55 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
06:43:02 --- part: user left #osdev
06:43:49 --- quit: m_t (Quit: Leaving)
06:43:59 --- quit: Lowl3v3l1 (Remote host closed the connection)
06:46:38 --- join: Tobba (~Tobba@h-25-157.A159.priv.bahnhof.se) joined #osdev
06:47:28 --- quit: graphene (Remote host closed the connection)
06:47:29 --- quit: Asu (Read error: Connection reset by peer)
06:47:57 --- join: angel0xff (~zzz@158-58-227-127.sf.ddns.bulsat.com) joined #osdev
06:49:01 --- join: graphene (~graphene@46.101.134.251) joined #osdev
06:49:59 --- join: promach_ (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
06:51:01 --- join: Asu (~sdelang@AMarseille-658-1-170-149.w86-198.abo.wanadoo.fr) joined #osdev
06:53:27 --- join: MarchHare (~Starwulf@mo-184-5-202-5.dhcp.embarqhsd.net) joined #osdev
07:00:04 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
07:02:43 --- join: sralbert (~sralbert@mobile-107-77-172-22.mobile.att.net) joined #osdev
07:02:46 <klys> klange would you document your keyboard interface (including shift states) and post it in a user-friendly place
07:02:47 <sortie> klange: Ah, that's anice touch
07:04:23 --- join: SopaXT (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
07:06:36 --- quit: MarchHare (Ping timeout: 260 seconds)
07:06:53 --- quit: SopaXorzTaker (Ping timeout: 268 seconds)
07:16:16 <klange> All these little context menus and popups and hilight actions are what make the UI feel "real".
07:17:46 --- join: mlugg (~mlugg@cpc95122-newt39-2-0-cust369.19-3.cable.virginm.net) joined #osdev
07:17:56 <glauxosdever> klange: Screenshot?
07:18:24 <klange> I'll do you one better, let me required a video of some stuff...
07:19:32 <klange> where is my obs
07:20:38 <glauxosdever> Nope. Just a screenshot :p
07:22:33 <klange> It's hard to capture things like menu interactions in a screenshot
07:23:05 <bcos_> klange: We'll let you add a caption underneath the screenshot.. ;-)
07:23:41 <glauxosdever> What kind of interactions? Anything that comes to my mind can be imagined after a screenshot
07:23:41 <klange> well too bad you get a video https://youtu.be/Fvg4p8akRew
07:23:43 <bslsk05> ​'ToaruOS-NIH menus' by K Lange (00:01:16)
07:24:08 <mlugg> Hi, I'm playing around with developing some stuff for UEFI (using gnu-efi) and have been trying to figure out how virtual memory works. I know that to switch from identity mapping to something else I use runtime->SetVirtualAddressMap, but I still want to know a. whether you can change the map later and if so how (since you can only call SetVirtualAddressMap once) and b. how this works with higher level things
07:24:10 <mlugg> like pagefiles - do I just need to catch page errors and respond appropriately? And sorry if I'm jumping into the middle of something here!
07:26:01 <glauxosdever> klange: Cool. Your maximisation needs some more accuracy though :p
07:26:08 <bcos_> mlugg: You "shouldn't" change the virtual address space layout until you call "exitBootServices()"; but after that you only need to "SetVirtualAddressMap()" if you use any of the (mostly useless) run-time services
07:26:39 <klange> glauxosdever: combination of client-side decorations and putting too much shadow space
07:27:30 <glauxosdever> Oh, ok
07:27:36 --- join: brynet (~brynet@brynet6.biz.tm) joined #osdev
07:27:36 <klange> Personally, I think it'll appeal to the GAPS crowd that seems to be the vast majority of the population of /r/unixporn
07:27:37 <bcos_> klange: That's pure software rendering (while inside a VM)?
07:27:45 <klange> bcos_: pure software in a VM, yes
07:28:08 <bcos_> Nice! :-)
07:28:24 * bcos_ was a little surprised at how quickly it reponded
07:28:29 <bcos_> *responded
07:28:49 <mlugg> bcos_: Oh, in that case I must be mistaken; how do I do classical virtual memory, where all memory accesses go through it etc? Are there EFI functions for it, or do I need to go into some good ol' ASM?
07:29:39 <bcos_> mlugg: When? During boot you don't do classic virtual memory, and after boot you do what you like (but inform UEFI if you use UEFI's services after boot)
07:31:11 --- quit: sixand (Read error: Connection reset by peer)
07:31:31 <mlugg> Yeah, I mean after boot sorry - is there a specific way of doing virtual memory, or do I just change all memory accesses that executable files in the system do? Sorry for being kinda noob-ey
07:31:53 --- quit: sralbert (Quit: Leaving)
07:32:37 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
07:34:29 --- join: hmmmm (~sdfgsf@pool-72-79-160-70.sctnpa.east.verizon.net) joined #osdev
07:34:36 <bcos_> After boot, most of UEFI's functionality ("boot-time services") are disabled/unusable; and it'll tell you a few memory areas (that are for "run-time services") where you might (e.g.) map those areas somewhere in kernel space and use "SetVirtualAddressMap()" to tell UEFI where you mapped its pieces; but those pieces should be treated as special (e.g. can't treat them like RAM, can't send them to swap space, ...); and none of this has anything to do with UEFI's
07:34:38 <bcos_> files, devices, etc (all of that is disabled)
07:34:39 --- quit: bemeurer (Ping timeout: 276 seconds)
07:35:36 <bcos_> Mostly for UEFI run-time services, there's a few functions to get/set "UEFI variables" and a few functions to get/set the current time; and almost nothing else (and almost nothing useful)
07:37:10 <mlugg> Yeah, so how is virtual memory is the context of an actual kernel achieved? Is is done in the same way that's discussed on https://wiki.osdev.org/Paging through some pure ASM?
07:37:11 <bslsk05> ​wiki.osdev.org: Paging - OSDev Wiki
07:38:06 <bcos_> For the OS itself?
07:38:36 <bcos_> It's mostly about lying to user-space and playing tricks (using page tables, page fault handler, etc) to make your lies seem like the truth ;-)
07:39:18 <mlugg> I'm sure you make it sound much more fun than it actually is :P
07:41:25 <bcos_> Note that you don't need much assembly - maybe just 3 little macros to do things that can't be done in whatever high level language you're using
07:45:09 <mlugg> So, do I need to set cr0 cr3 etc registers, the same way you would in classic BIOS, then handle page faults to do magic (or knowing me just very hacky) stuff?
07:46:31 --- join: antkit (uid256318@gateway/web/irccloud.com/x-ukihjohraozorvxq) joined #osdev
07:46:38 --- quit: stoopkid (Quit: Connection closed for inactivity)
07:46:53 <bcos_> mlugg: Yes (I think)
07:47:19 <mlugg> bcos_: Okay, thanks, this is very helpful :)
07:47:25 * bcos_ recommends that kernel doesn't have any reasons to care what the firmware was (e.g. because boot loader hid all the differences)
07:48:09 <bcos_> ..which means that kernel would do everything the same, always
07:48:45 <mlugg> I mean, I'm actually writing this directly on UEFI solely as a learning experience, but yeah, fair point
07:49:09 <bcos_> I'm not sure what you mean ("directly on UEFI"?)
07:49:58 <mlugg> As in, I'm writing the kernel in C as an EFI image
07:49:58 <bcos_> Are you writing a UEFI application (and not writing an OS, and shouldn't be touching memory management at all)?
07:50:10 --- join: MarcinWieczorek (~MarcinWie@public-gprs363384.centertel.pl) joined #osdev
07:50:48 <bcos_> Ah, like boot loader and kernel smushed into a single binary?
07:51:17 <mlugg> Yeah, I know it's really impractical and stupid but like I say, good way of learning stuff imo
07:52:36 --- join: sixand1 (~Thunderbi@114.96.230.17) joined #osdev
07:54:22 --- quit: sixand (Ping timeout: 268 seconds)
07:54:22 --- nick: sixand1 -> sixand
07:55:00 --- join: freakazoid0223 (~frkazoid@pool-108-52-244-197.phlapa.fios.verizon.net) joined #osdev
07:58:46 <lava> well... grub (and other bootloaders) are easily more complex than many hobby os kernels
07:59:06 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
08:00:16 --- quit: flacks (Ping timeout: 260 seconds)
08:02:29 --- join: flacks (flacks@184.91.69.131) joined #osdev
08:04:33 --- quit: sixand (Read error: Connection reset by peer)
08:07:58 --- join: jakogut (~jakogut@162.251.69.147) joined #osdev
08:08:57 --- quit: grouse (Quit: Leaving)
08:11:56 --- quit: manzerbredes (Quit: WeeChat 2.2)
08:13:50 --- join: manzerbredes (~loic@myriads-lg.irisa.fr) joined #osdev
08:14:21 --- quit: manzerbredes (Client Quit)
08:14:38 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
08:14:57 --- join: manzerbredes (~loic@myriads-lg.irisa.fr) joined #osdev
08:15:14 --- quit: manzerbredes (Client Quit)
08:17:15 --- quit: jakogut (Remote host closed the connection)
08:17:15 --- nick: jakogut_ -> jakogut
08:18:45 --- join: jakogut_ (~jakogut@162.251.69.147) joined #osdev
08:18:49 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
08:18:55 --- quit: jakogut_ (Remote host closed the connection)
08:20:06 --- join: jakogut_ (~jakogut@162.251.69.147) joined #osdev
08:27:07 --- nick: [X-Scale] -> X-Scale
08:31:04 <Brnocrist> if you like to write kernel, don't waste time on bootloader. Use a ready to go one and enjoy your kernel coding
08:31:26 --- quit: angel0xff (Ping timeout: 256 seconds)
08:35:45 --- quit: bemeurer (Ping timeout: 276 seconds)
08:36:13 --- join: lldd_ (~atrapado@unaffiliated/atrapado) joined #osdev
08:40:17 --- quit: sixand (Read error: Connection reset by peer)
08:40:55 --- quit: SopaXT (Remote host closed the connection)
08:41:14 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
08:41:29 --- join: SopaXT (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
08:45:57 --- quit: SopaXT (Remote host closed the connection)
08:46:25 --- join: SopaXT (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
08:47:37 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
08:47:56 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
08:50:15 --- quit: sixand (Read error: Connection reset by peer)
08:50:39 --- join: sixand (~Thunderbi@114.96.230.17) joined #osdev
08:51:13 --- join: bemeurer (~bemeurer@199-241-200-215.PUBLIC.monkeybrains.net) joined #osdev
08:55:31 --- quit: brynet (Ping timeout: 265 seconds)
08:57:27 --- quit: hchiramm_ (Ping timeout: 265 seconds)
08:57:40 --- quit: kleinweby (Quit: ZNC 1.6.6+deb1 - http://znc.in)
08:59:19 --- join: kleinweby (~kleinweby@mars.spei.ch) joined #osdev
08:59:19 --- quit: kleinweby (Changing host)
08:59:20 --- join: kleinweby (~kleinweby@unaffiliated/kleinweby) joined #osdev
09:05:43 --- quit: sixand (Ping timeout: 248 seconds)
09:05:51 --- join: Humble (~hchiramm@2405:204:d48c:6030:fae2:e05d:f9d3:2f1b) joined #osdev
09:05:51 --- nick: Humble -> Humble_afk
09:12:22 --- quit: banisterfiend (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:12:39 --- quit: m3nt4L (Remote host closed the connection)
09:15:27 --- join: Asu` (~sdelang@224.198.136.77.rev.sfr.net) joined #osdev
09:18:34 --- quit: drakonis (Remote host closed the connection)
09:19:03 --- quit: Asu (Ping timeout: 248 seconds)
09:24:56 --- nick: SopaXT -> SopaXorzTaker
09:26:57 --- quit: MarcinWieczorek (Read error: Connection reset by peer)
09:28:19 --- join: MarcinWieczorek (~MarcinWie@public-gprs363384.centertel.pl) joined #osdev
09:33:07 --- quit: booyah (Ping timeout: 264 seconds)
09:34:17 --- join: MrOnlineCoder (~MrOnlineC@195.225.231.218) joined #osdev
09:39:47 --- join: booyah (~bb@193.25.1.157) joined #osdev
09:50:25 --- join: brynet (~brynet@brynet6.biz.tm) joined #osdev
09:50:37 --- join: tacco| (~tacco@i59F4A124.versanet.de) joined #osdev
10:02:20 --- join: angel0xff (~zzz@158-58-227-127.sf.ddns.bulsat.com) joined #osdev
10:09:16 --- join: stoopkid (uid137696@gateway/web/irccloud.com/x-jyswezbgugpoceqe) joined #osdev
10:10:06 --- quit: flacks (Ping timeout: 244 seconds)
10:11:10 --- quit: graphene (Read error: Connection reset by peer)
10:11:46 --- join: flacks (flacks@184.91.69.131) joined #osdev
10:11:51 --- quit: Humble_afk (Quit: Leaving)
10:12:42 --- join: graphene (~graphene@46.101.134.251) joined #osdev
10:13:11 --- join: k4m1 (~k4m1@87-93-137-177.bb.dnainternet.fi) joined #osdev
10:13:46 --- join: debug (~debug@m176-68-12-24.cust.tele2.se) joined #osdev
10:14:15 --- join: Humble (~hchiramm@2405:204:d48c:6030:fae2:e05d:f9d3:2f1b) joined #osdev
10:24:34 --- quit: pixelherodev (Quit: ZNC 1.6.2 - http://znc.in)
10:24:34 --- quit: sircmpwn (Quit: Why do I even put this quit message in if I never quit)
10:25:55 --- join: sircmpwn (znc@irc.sircmpwn.com) joined #osdev
10:32:50 --- quit: promach_ (Ping timeout: 276 seconds)
10:34:42 --- quit: debug (Quit: leaving)
10:35:10 --- quit: shakesoda (Quit: Connection closed for inactivity)
10:35:47 --- quit: graphene (Remote host closed the connection)
10:37:16 --- join: graphene (~graphene@46.101.134.251) joined #osdev
10:38:27 --- quit: mlugg (Quit: WeeChat 2.1)
10:40:40 --- quit: Belxjander (Quit: AmigaOSv4.1.6+//PowerPC native)
10:40:58 --- join: Belxjander (~Belxjande@sourcemage/Mage/Abh-Elementalist) joined #osdev
10:42:51 --- join: pixelherodev (znc@irc.sircmpwn.com) joined #osdev
10:44:44 --- part: ZipCPU left #osdev
10:45:49 --- quit: k4m1 (Quit: leaving)
10:56:05 --- quit: Vulcan (Remote host closed the connection)
10:56:22 --- quit: antkit (Quit: Connection closed for inactivity)
11:04:38 --- quit: Tobba (Read error: Connection reset by peer)
11:10:19 --- quit: angel0xff (Ping timeout: 264 seconds)
11:11:49 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
11:25:15 --- join: m_t (~m_t@p5DDA3D3C.dip0.t-ipconnect.de) joined #osdev
11:26:15 --- join: blackandblue (~batdownh@gateway/tor-sasl/blackandblue) joined #osdev
11:28:49 --- join: attah (~attah@h-155-4-135-114.NA.cust.bahnhof.se) joined #osdev
11:29:03 --- join: SopaXT (~SopaXorzT@unaffiliated/sopaxorztaker) joined #osdev
11:31:54 --- quit: SopaXorzTaker (Ping timeout: 276 seconds)
11:33:07 --- quit: FManTropyx (Ping timeout: 264 seconds)
11:35:53 <Vulcan> how can you use an ld script under mac os?
11:36:00 --- join: stephen77 (~stephen@142.167.171.31) joined #osdev
11:36:15 <Lowl3v3l> uhm uin case you use gcc the same way?
11:36:19 <Lowl3v3l> why would it differ?
11:37:48 <klys> because mac os has llvm?
11:38:42 <Vulcan> yes
11:38:50 --- join: FManTropyx (~fooman@82-203-190-31.bb.dnainternet.fi) joined #osdev
11:39:12 <Vulcan> Lowl3v3l parceque en faisant ça ld –Ttext 0x7c00 --oformat=binary test.o –o test.bin j'ai comme message ld: file not found: –Ttext
11:39:48 <Vulcan> translate
11:40:06 <Vulcan> Lowl3v3l: because doing this ld -Ttext 0x7c00 --oformat=binary test.o -o test.bin I have the message ld: file not found: -Ttext
11:40:19 <klys> I thought it was ld -Tmylinkerscript.lds
11:41:15 <Vulcan> I d understand.
11:41:19 <Vulcan> *didn't
11:41:27 <klys> https://wiki.osdev.org/Bare_Bones#Linking_the_Kernel
11:41:29 <bslsk05> ​wiki.osdev.org: Bare Bones - OSDev Wiki
11:42:10 <Vulcan> bslsk05: I'm gonna go see thank you.
11:42:38 --- join: angel0xff (~zzz@158-58-227-127.sf.ddns.bulsat.com) joined #osdev
11:43:57 --- quit: leinne (Ping timeout: 250 seconds)
11:45:39 --- join: leinne (~leinne@gateway/tor-sasl/leinne) joined #osdev
11:46:14 <Lowl3v3l> Vulcan: the standard linker under osx is not gnu ld
11:49:28 <Vulcan> Low13v3l: Okay, there's no alternative.
11:50:18 <Lowl3v3l> of couse. building a cross compiler gcc or learning to use your toolchain before doing osdev
11:50:33 --- join: MarcinWieczorek_ (~MarcinWie@2a00:f41:1c5c:9f12:7143:b419:dd5f:4c47) joined #osdev
11:53:19 --- quit: MarcinWieczorek (Ping timeout: 240 seconds)
11:53:19 --- nick: MarcinWieczorek_ -> MarcinWieczorek
11:59:59 --- join: pie_ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
12:02:40 <klys> vulcan, http://paste.debian.net/1034534/
12:02:41 <bslsk05> ​paste.debian.net: debian Pastezone
12:03:06 <klys> oh I forgot my linker script...
12:03:56 --- quit: nur (Quit: Leaving)
12:04:08 <klys> vulcan, http://paste.debian.net/1034535/
12:04:10 <bslsk05> ​paste.debian.net: debian Pastezone
12:05:40 <Vulcan> klys: super thanks but the script is functional under mac?
12:06:17 <klys> it should be, vulcan
12:06:17 <Vulcan> klys:I'll test it. Thank you.
12:07:49 * UNIVAC ​reports creation of wiki page "Intel Dual Band Wireless" by Hgoel: <​https://wiki.osdev.org/index.php?title=Intel_Dual_Band_Wireless&diff=22529&oldid=0>
12:09:34 --- join: zenix_2k2 (~zenix_2k2@42.112.83.98) joined #osdev
12:10:48 <zenix_2k2> so one nooby question, every inode on my system has an inode number right ? so does that mean that every file in my filesystem ( including directory files ) have has a unique one ?
12:12:49 * UNIVAC ​reports changes to wiki page "Intel Dual Band Wireless" by Hgoel: Formatting updates. <​https://wiki.osdev.org/index.php?title=Intel_Dual_Band_Wireless&diff=22530&oldid=22529>
12:13:31 --- join: Tazmain (~Tazmain@unaffiliated/tazmain) joined #osdev
12:13:39 --- quit: graphene (Remote host closed the connection)
12:14:04 <klys> vulcan, http://paste.debian.net/1034536/
12:14:06 <bslsk05> ​paste.debian.net: debian Pastezone
12:14:38 --- join: nur (~hussein@175.144.253.90) joined #osdev
12:15:09 --- join: graphene (~graphene@46.101.134.251) joined #osdev
12:17:03 --- join: isaac_ (~isaac@host81-129-159-113.range81-129.btcentralplus.com) joined #osdev
12:17:27 --- quit: isaacwoods (Ping timeout: 260 seconds)
12:18:56 --- quit: isaac_ (Remote host closed the connection)
12:19:36 <zenix_2k2> so uhm, hi ?
12:19:42 <rain1> hi
12:21:01 --- quit: SopaXT (Remote host closed the connection)
12:21:18 <Icefoz> zenix_2k2: Every file *on a particular filesystem*, including directories, has a unique inode number.
12:21:24 <Icefoz> Assuming Unix-y terminology.
12:21:49 --- quit: jp (Ping timeout: 240 seconds)
12:22:31 <zenix_2k2> HHHHmmm... and one more thing, "inode number" is used to index the inode right ? or to index a table of inodes ? i am just wondering which is true recently
12:22:54 <zenix_2k2> cause wikipedia said "table of inodes" but it doesn't make too much sense to me
12:23:15 <Icefoz> That I can't tell you for sure off the top of my head.
12:23:53 --- quit: nur (Quit: Leaving)
12:24:01 --- join: jp (ayy@cpe-76-173-133-37.hawaii.res.rr.com) joined #osdev
12:24:18 <Icefoz> IIRC, traditionally there's a fixed number of inodes per filesystem, scattered around the disk in a predictable pattern, and that's the "inode table". The inode number is the index of a particular inode in that structure.
12:24:36 <Icefoz> Which is traditionally, like, a simple array at the start of the disk, but could theoretically be more complicated.
12:25:43 --- join: nur (~hussein@175.144.253.90) joined #osdev
12:25:46 <zenix_2k2> so you mean that "inode table" = "the number of inodes per FS" ?
12:26:09 <Icefoz> "inode table" = "a chunk of space on disk set aside for storing inode info"
12:27:41 <zenix_2k2> Ha... now that makes more sense
12:27:45 <Icefoz> You have a flat array of inodes, each inode number is an index into that array, and each inode refers to zero or more actual blocks anywhere on the disk.
12:28:05 <Icefoz> where the non-meta data is stored.
12:28:58 --- quit: nur (Client Quit)
12:29:11 <Icefoz> Happy to help. :-)\
12:29:35 --- join: nur (~hussein@175.144.253.90) joined #osdev
12:29:59 <zenix_2k2> but in order to access the table, it has to store its address somewhere right ?
12:30:15 <zenix_2k2> do you know where is it or it is implementation-dependent again ?
12:31:20 <Icefoz> Usually it's at a fixed point in the filesystem, depending on the format, like the beginning or the end.
12:31:37 <doug16k> a user mode program is exposed to inodes in one way: you can tell when two different directory entries refer to the same underlying file (because of hard link) when they both have the same inode number
12:31:52 <Icefoz> Sometimes there's instead filesystem metadata at a fixed point (the "superblock") and that has a pointer to the inode table.
12:34:10 <doug16k> you can also tell if a file you have opened has been replaced with a new file since you opened it, since the one you have open will have one inode number, and when the file is replaced under you, it gets a new inode number even though it has the same name in the same place
12:35:16 <Icefoz> zenix_2k2: https://opensource.com/article/17/5/introduction-ext4-filesystem seems half-decent.
12:35:17 <bslsk05> ​opensource.com: An introduction to Linux's EXT4 filesystem | Opensource.com
12:35:33 <Icefoz> and has some nice diagrams.
12:35:51 <zenix_2k2> actually i already has a nice book on explaining filesystem already, but haven't completed yet and thank anyway :P
12:36:02 <Icefoz> Aha, no problem then. What book?
12:36:39 <zenix_2k2> it is not actually a book... it is actually a reference, titled "Practical File System Design with the Be File System"
12:36:44 <zenix_2k2> someone in #linux advised me that
12:36:55 <Icefoz> Aha, that's a fun one.
12:37:28 <zenix_2k2> but about the "fixed point" in the filesystem, you mean like a file ?
12:37:42 <Icefoz> I mean like "block 0".
12:37:54 <Icefoz> A known place on a disk.
12:37:56 <doug16k> zenix_2k2, do you understand why inodes exist?
12:38:15 --- quit: JusticeEX (Quit: Lost terminal)
12:39:13 <zenix_2k2> doug16k: to helps filesystem finding the file ?
12:39:18 <zenix_2k2> correct me if im wrong :P
12:39:25 <doug16k> an inode has the data to locate the actual blocks on disk. directory entries point to the inode. this allows you to have multiple directory entries point to the same underlying file
12:39:29 <zenix_2k2> or to help the OS i guess
12:39:53 <doug16k> you can have several directory entries with the same name in different places or in the same directory with different names that point to the same underlying file
12:40:11 --- quit: graphene (Remote host closed the connection)
12:40:48 <doug16k> so if you have 3 directory entries sharing the same inode, and you delete 2 of the directory entries, the file is kept alive by the last directory entry still pointing to the inode
12:41:04 <doug16k> once you delete that last directory entry, the link count gets to zero and it actually frees the blocks
12:41:09 <geist> which is why in posix deleting a file is unlink()
12:41:12 <doug16k> and deletes the inode
12:41:19 --- quit: bemeurer (Ping timeout: 240 seconds)
12:41:24 <geist> you're actually removing a directory entry, the file being deleted is when the ref count goes to zero
12:42:42 <zenix_2k2> oh this is new, 2 or more directories sharing the same inode
12:42:56 <zenix_2k2> it is called hardlink i guess ?
12:42:59 <geist> yep, that's a hard link
12:43:15 <zenix_2k2> well, heard of them but never saw any example or know how they work
12:43:16 <geist> you cant ell a file is hard linked by looking at the ref count in ls -l
12:43:37 <geist> normally the ref is 1, but if you hard link it somewhere else it goes to 2, etc
12:43:55 <zenix_2k2> Icefoz: but isn't everything that is placed on a disk is a file ?
12:44:08 --- quit: smeso (Ping timeout: 265 seconds)
12:44:23 <doug16k> zenix_2k2, they are why we have inode tables - there are two levels of indirection. the program opens a file by its directory entry, the OS looks up the inode for the file and there it gets the information for where it is on disk
12:45:25 <doug16k> they are also how unix operating systems allow you to delete a file that is open. when you open the file, it keeps a count of how many open files are using an inode. when you remove the file (with rm or unlink) then it removes the directory entry but keeps the inode alive until all handles to it are closed
12:46:46 <geist> yah, basically there are 2 ref counters active: one on disk that is the number of dir entries pointing to it, and another one in memory, the number of open file handles/mmaps to it
12:46:53 <geist> when both go to zero you remove the inode from disk
12:47:15 <DusXMT> The practical advantage of hardlinks over symlinks is that if you move the file you're linking to, the link remains intact; this is a double-edged sword, however, since if you remove the file and replace it with a different one in the same location, the "link" is broken; also, both files of the "link" have to reside on the same filesystem (since they're the same file referred to by different names), and you
12:47:21 <DusXMT> generally can't hard-link a directory (what would be the parent directory then?)
12:47:54 <doug16k> I mentioned the same idea earlier in the scenario where the file got replaced with a new file while it was open. essentially the old directory entry is deleted and new one created, but any program which had the original open will continue to use it until they close it
12:47:59 --- join: smeso (~smeso@unaffiliated/smeso) joined #osdev
12:48:17 <geist> indeed. more modern COW file systems solve it in a nicer way in many ways
12:48:39 <geist> you create a new inode that points at the same underlying blocks, and the actual on disk runs are themselves ref counted and COWed
12:48:59 <geist> that way for all practical purposes you copied the file, but you dont actually dup the data until needed
12:50:02 --- quit: Vulcan (Remote host closed the connection)
12:50:57 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
12:52:49 <DusXMT> I kinda wonder though... how often does one copy files? I mean, I move files all the time, and I compress and uncompress files as well quite often, but to copy files verbatim without changing them anyhow, from one place to another in the same filesystem... I only really do that with small text files
12:53:22 <geist> good question
12:53:46 <geist> clearly it depends on the use cases and whatnot
12:53:59 <DusXMT> indeed
12:54:32 --- join: MarchHare (~Starwulf@mo-184-5-202-5.dhcp.embarqhsd.net) joined #osdev
12:54:35 <geist> but in the case of COW filesystems the other use case is you snapshot the whole fs at once (or subset f it), which is effectively like making a recursive copy of the whole thing atomically
12:54:57 <DusXMT> Yeah, I was just about to bring that up as I remembered it
12:55:07 <geist> same underlying mechanism
12:55:08 <zenix_2k2> but seriously, talking about inode table, imagine filesystem like ReiserFS, it doesn't have it if i remember correctly then how can it access files or even locate where they are
12:55:28 <geist> reiserfs is interesting int hat it has a big btree that all the 'inodes' reside in
12:55:36 <geist> so in that case the inode # is an index into the btree
12:55:55 <geist> the number is fairly arbitrary as long as it's unique
12:56:08 <zenix_2k2> ok sorry but you confused me a bit, "int hat" ?
12:56:15 <klys> "in that"
12:56:21 <geist> most of the more modern fses have big btrees like this instead of storing tables of inodes like the old ffs/ufs/ext* fses do
12:56:26 <zenix_2k2> oh ok that makes more sense
12:57:11 --- quit: blackandblue (Ping timeout: 250 seconds)
12:57:12 * DusXMT chuckles as he remembers HFS' catalog :)
12:57:35 <zenix_2k2> HHHmmm...and the thing you call "btree" is also located somewhere on the disk like inodes table ?
12:57:37 <geist> yah folks like to complain about HFS, and it had some issues, but it was not a uniformly awful fs
12:57:50 <geist> correct
12:58:08 <zenix_2k2> well, ok thank for your help :P clearer now
12:58:23 <geist> main trouble with the massive single btree thing that many fses do is locking and concurrency, and there are lots of clever algorithms for that
13:08:43 --- quit: rorx (Ping timeout: 260 seconds)
13:09:42 <DusXMT> And regarding my question a few days ago as to why segmentation isn't more prominently abused to give tasks access to several terabytes of virtual address space... the answer is that while technically they do, practically they don't, since when the segmented addresses are processed, they get reduced down to a 32-bit linear address that's then treated as a virtual (if paging is enabled) or physical address;
13:09:48 <DusXMT> so it's not like real mode where the segmentation basically offers on-chip bank switching
13:10:49 <doug16k> yes, the segment base is just an address offset implicitly added to all memory references using that segment
13:10:57 --- join: aalm (~aalm@37-219-73-181.nat.bb.dnainternet.fi) joined #osdev
13:11:51 --- quit: zenix_2k2 (Quit: Leaving)
13:12:05 <doug16k> in x86 terminology, a "virtual" address is the address from the perspective of the program - the offset from the segment base. when the cpu adds the segment base, the result is a "linear" address
13:12:12 <yrlf> And in 64bit segment bases for all but fs and gs are ignored
13:12:49 * UNIVAC ​reports changes to wiki page "Intel Dual Band Wireless" by Hgoel: Add firmware parsing documentation. <​https://wiki.osdev.org/index.php?title=Intel_Dual_Band_Wireless&diff=22531&oldid=22529>
13:12:53 <yrlf> And linear addresses are looked up in pagetables being translated to a physical address
13:13:02 <yrlf> If paging is enabled
13:13:14 --- join: absolute123 (~vodka@81.173.69.152) joined #osdev
13:13:27 --- join: bemeurer (~bemeurer@199-241-200-215.PUBLIC.monkeybrains.net) joined #osdev
13:15:36 --- join: Jari-- (~vai@85-76-111-142-nat.elisa-mobile.fi) joined #osdev
13:16:20 --- quit: jakogut (Quit: jakogut)
13:16:20 --- nick: jakogut_ -> jakogut
13:16:54 --- join: jakogut_ (~jakogut_@162.251.69.147) joined #osdev
13:18:04 <yrlf> I also read somewhere that in 64bit mode, segment limits are ignored.
13:18:14 <doug16k> they are
13:18:31 <yrlf> So almost all possible benefits from using segmentation are void
13:18:40 <doug16k> long mode, to be precise. in compatibility mode (64 bit mode running 32 bit code) they are enforced
13:19:30 <yrlf> Yup, I have a faded memory of reading something akin to that in the manual
13:20:13 <absolute123> graphitemaster: basically you understood how to run the code right? you do not have to change any of the normal stream on the card, but only smartly append the array address space, that the instructions will be run on lvalues, and broadcasted to different bases right, if the write happened to the base of read operand of 2 and it was a new value, that is the mechanism to tell that fifo entry needs to reexecute?
13:20:22 <DusXMT> I guess one possible use is position-independent code that doesn't have to use ebx as a reference-point for all memory accesses, but then you have to deal with far pointers
13:20:45 <DusXMT> (in 32-bit mode, at least)
13:20:55 <absolute123> DusXMT: you done any hw designing? your answer was correct the day before
13:21:11 <absolute123> i was pretty suprised, it was an intelligent answer
13:21:11 <absolute123> ?
13:22:09 <DusXMT> Nope, although I do study on a Uni where we're going to learn all about hardware design :)
13:23:19 --- quit: flacks (Ping timeout: 240 seconds)
13:23:21 <absolute123> graphitemaster: i.e the base addresses of fifo write and read operands are unique, and write operands are broadcasted only to the dereferenced variable/register
13:23:28 <absolute123> yeah to every CU
13:25:50 --- quit: jakogut_ (Quit: jakogut_)
13:26:25 --- join: jakogut_ (~jakogut_@162.251.69.147) joined #osdev
13:27:42 --- join: flacks (flacks@184.91.69.131) joined #osdev
13:28:20 --- join: zeus1 (~zeus@154.226.144.189) joined #osdev
13:29:54 <absolute123> it's not my assumption but i know from science that VEGAs variable length SIMD can be also easily done with arrays, you only need to copy from one array to another for this to happen, documentation states that also
13:30:36 <absolute123> that lvalue based pointer whole array based assignment, is atomic only within a single instruction
13:31:09 --- join: Vulcan (~Vulcan@rc137-3-88-172-220-120.fbx.proxad.net) joined #osdev
13:31:15 --- join: mlugg (~mlugg@cpc95122-newt39-2-0-cust369.19-3.cable.virginm.net) joined #osdev
13:31:21 <absolute123> in other words, the bits and pieaces are collected from another read port in parallel and reordered, cause the order goes wrong on the port conflicts
13:31:38 <absolute123> in case of port conflicts
13:31:58 <absolute123> that is mentioned in several science papers of gpu programming
13:33:40 --- quit: flacks (Quit: Leaving)
13:34:00 --- join: salek_ (~salek@91-155-9-229.elisa-laajakaista.fi) joined #osdev
13:34:35 <absolute123> if we talk about in verilog terms, the writebacks happen with reset signal, i.e always take place to the bases of broadcasted read operands, while also the data writes for whole array also take place with reset signal but that from different wavefronts each processing one register
13:34:37 --- join: flacks (flacks@184.91.69.131) joined #osdev
13:35:00 <absolute123> however the readbacks are done for the bases without reset
13:36:02 <absolute123> mean whenever you did not constant or texture updates on that base, and had an old value, the fifo entry is skipped
13:36:27 <sortie> Hi absolute123
13:36:34 <sortie> absolute123: How are you? Is it warm?
13:36:45 <sortie> Enjoying vacation?
13:36:46 --- mode: ChanServ set +o Mutabah
13:37:21 <sortie> absolute123: Fun fact, did you know you can send graphitemaster private messages?
13:37:25 <Mutabah> Hey sortie
13:37:30 <sortie> Yo Mutabah
13:38:51 <Mutabah> How's things?
13:38:59 --- kick: absolute123 was kicked by Mutabah (Improvin the SNR)
13:39:16 <sortie> Ah you know, making trolls ban themselves for fun?
13:39:52 --- quit: JusticeEX (Ping timeout: 244 seconds)
13:40:05 <Mutabah> :)
13:40:06 --- mode: ChanServ set +o sortie
13:40:08 --- mode: sortie set +b *!*@81.173.69.152
13:40:18 <Mutabah> Much like our friend here, I'm also on vacation
13:40:26 <sortie> Ah nice
13:40:29 <sortie> What're you up to?
13:40:49 --- quit: zeus1 (Ping timeout: 240 seconds)
13:41:27 <Mutabah> In the UK for two weeks, hence why I've been really quiet for the last week or so
13:42:09 <Mutabah> (Also, damn, the ping from scotland back to home is painful)
13:42:15 <sortie> Ah yeah I was wondering your timezone
13:42:25 <Mutabah> (typing with 400ms is uncomfortable)
13:42:30 <sortie> D:
13:43:01 <sortie> I looked a bit at cloud prices and saw that worldwide bandwidth was the same price, except China and Australia
13:43:07 <sortie> Which was twice as expensive
13:43:37 <Mutabah> I think it's just a bunch of routing latency
13:44:26 --- quit: Jari-- (Ping timeout: 260 seconds)
13:44:34 <sortie> I didn't know Australia was 119916 km away
13:44:51 <sortie> My search engine can handle “400 ms times speed of light” yay
13:44:51 <Mutabah> Routing, not speed of light :)
13:45:01 <sortie> What's the speed of route? :)
13:45:35 <Mutabah> No idea, but there's a ~400ms jump in tracepath between the london and sydney routers
13:51:55 --- join: xerpi (~xerpi@128.red-83-45-199.dynamicip.rima-tde.net) joined #osdev
13:52:19 --- quit: xerpi (Remote host closed the connection)
13:52:46 --- join: xerpi (~xerpi@128.red-83-45-199.dynamicip.rima-tde.net) joined #osdev
13:59:31 --- join: shakesoda (uid36406@celestiaradio/shark/soda) joined #osdev
14:01:58 --- quit: Vulcan (Remote host closed the connection)
14:03:14 <geist> that seems about right. i think i've seen like a 200ms from here (west coast US) to sydney
14:03:44 --- join: powersgang (~gangtroll@202.190.179.122) joined #osdev
14:03:56 <geist> my rule of thumb i always remember was something liek light can circle the earth 4 times a second. should actually verify that
14:05:06 --- join: rorx (~rorx@tserver.truestep.com) joined #osdev
14:05:46 <geist> similarly i think it's 8 seconds to the moon? or maybe 8 seconds round trip
14:06:36 <powersgang> i am at work doing plastic recycling during the summer in the netherlands as some of the dutch people know, i have two bodyguards with me, money is not important i just prove i can work like you can't, some of my friends have been affiliated with different mob issues, and there is an interest and initiative by them to find out what what the powersgang of the banning troll is, i bet this guy running in circles screaming police police right after we
14:06:36 <powersgang> visit him
14:06:59 --- mode: ChanServ set +o geist
14:07:01 --- kick: powersgang was kicked by geist (powersgang)
14:07:56 <graphitemaster> fun fact, you can't send graphitemaster private messages unless you're registered on freenode and signed in
14:08:02 <graphitemaster> and you're not on my shit list
14:08:27 --- quit: attah (Quit: Leaving)
14:10:08 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
14:11:30 <sortie> graphitemaster: Ah such great facts
14:11:50 --- mode: sortie set +b *!*@202.190.179.122
14:12:43 --- quit: rorx (Ping timeout: 260 seconds)
14:13:11 --- quit: sortie (Quit: Leaving)
14:13:23 --- join: graphene (~graphene@46.101.134.251) joined #osdev
14:13:33 <doug16k> propagation speed in copper is about .68c, and earth's circumference at the equator is ~40075km, so the propagation delay with instantaneous routing should be somewhere below 133ms/2 assuming it goes no more than half the circumference
14:14:35 <doug16k> oops, 196ms/2 (forgot to include .68c)
14:14:47 <geist> what is the /2 about? that's one path?
14:15:01 <doug16k> signal going no more than half the circumference
14:15:03 <geist> or more specif8ically what precisely is the 196ms. time for one half circumference?
14:15:07 <doug16k> yes
14:15:11 <geist> so why /2?
14:15:31 <doug16k> because without /2 it is the time to do a lap all the way around to where it started
14:15:33 <geist> or is 196ms a full circumference, and the /2 is the half
14:15:45 <doug16k> yes
14:15:51 <geist> kk
14:16:00 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
14:16:04 <doug16k> ballpark anyway :)
14:16:15 <geist> so that's about right then. halfway around is just shy of 100ms * 2 for a ping, which is about the 200ms or so i see from here to sydney
14:16:16 --- quit: Atrap[m] (Ping timeout: 240 seconds)
14:16:18 --- quit: hcd[m] (Ping timeout: 240 seconds)
14:16:18 --- quit: kataria[m] (Ping timeout: 240 seconds)
14:16:24 --- quit: VOID001[m] (Ping timeout: 245 seconds)
14:16:24 --- join: sortie (~Sortie@static-5-186-55-44.ip.fibianet.dk) joined #osdev
14:16:29 --- quit: dafnamay[m] (Ping timeout: 245 seconds)
14:16:29 <geist> though sydney isn't precisely halfway around, but it's fairly close
14:16:45 --- quit: fristonio[m] (Ping timeout: 256 seconds)
14:16:52 --- quit: Wallbraker[m] (Ping timeout: 256 seconds)
14:16:58 <geist> yay matrix is down again. wonder if they'll ever get their junk together
14:17:10 --- quit: Ringil[m] (Ping timeout: 255 seconds)
14:17:11 <doug16k> yeah I suppose when you want ping it cancels out the /2. I meant one way latency at first
14:17:13 --- quit: xobroll[m] (Ping timeout: 240 seconds)
14:17:15 --- quit: caseypme[m] (Ping timeout: 245 seconds)
14:17:16 <geist> yah
14:17:17 --- quit: hl[m] (Ping timeout: 245 seconds)
14:17:20 --- quit: Drakonis[m] (Ping timeout: 256 seconds)
14:17:24 --- quit: lkurusa[m] (Ping timeout: 260 seconds)
14:17:29 --- quit: am2on[m] (Ping timeout: 256 seconds)
14:17:31 --- join: liamnielsen (~denmark@85.118.107.162) joined #osdev
14:17:34 --- quit: marcthe12[m] (Ping timeout: 260 seconds)
14:17:46 --- quit: htafdwes[m] (Ping timeout: 276 seconds)
14:17:46 --- quit: equalunique[m] (Ping timeout: 276 seconds)
14:17:46 --- quit: Stary[m] (Ping timeout: 276 seconds)
14:19:19 --- quit: gattuso (Ping timeout: 240 seconds)
14:19:19 --- quit: Burgundy (Ping timeout: 240 seconds)
14:19:39 --- join: Burgundy (~yomon@86.121.70.166) joined #osdev
14:21:22 <liamnielsen> i am not bothered what this quasis shitlist is btw. i said my things and i deal with my own issues now, i need no help anyways, if he is noisy enough to state his utter shit at my name over and over again, he can be just treated just like everyone else, i dunno it appears they made me one of the most notorious person of the history, i can hear some talks about me daily basis, i have enough of attention, need no from modoboys
14:22:02 --- join: gattuso (~gattuso@pompel.me) joined #osdev
14:22:19 --- join: Cynosure_ (~Cynosure@pool-72-93-248-112.bstnma.fios.verizon.net) joined #osdev
14:22:29 <Cynosure_> Hello
14:22:38 <klys> hi
14:23:06 <Cynosure_> This is a design question. Should I be trying to implement IRQs for the first 32 exceptions in my os first or trying to get keyboard support.
14:23:06 --- part: Burgundy left #osdev
14:23:36 <Cynosure_> I don't know how important these first ISRs (misnamed earlier) are so I just have a basic printing one right now.
14:23:42 --- join: Burgundy (~yomon@86.121.70.166) joined #osdev
14:25:26 --- join: zeus1 (~zeus@154.226.144.189) joined #osdev
14:26:04 <geist> that's a good starting point
14:26:13 --- quit: xenos1984 (Quit: Leaving.)
14:26:17 <geist> you probably wont need the first 32 for anything but reporting an error and stopping the system for quite some time
14:26:28 <MrOnlineCoder> were there any successful attempts to have a working browser in own os (even the dead-simple one)?
14:26:32 <geist> but it's good to put one on each of them for catching attempts
14:26:44 <Cynosure_> Ok thank you!
14:26:48 <geist> MrOnlineCoder: klange has i think gotten something working. probably sortie too
14:27:10 <Cynosure_> Also I was wondering if you needed to implement the debugging interrupts for gdb connection to work
14:27:17 <Cynosure_> Cause that might be helpful
14:27:54 <sortie> liamnielsen: It's impressive how incomprehensible you are. Do you even feel coherent when you write it?
14:28:14 --- mode: ChanServ set +o sortie
14:28:16 --- mode: sortie set +b *!*@85.118.107.162
14:28:22 --- kick: liamnielsen was kicked by sortie (lol)
14:28:23 --- join: rorx (~rorx@tserver.truestep.com) joined #osdev
14:28:25 <geist> ah,. sorry. missed that one
14:28:39 <geist> really no point trying to block him at ip level, he's clearly capable of finding other ways in
14:28:55 <sortie> geist: Oh that's not about keeping him out
14:29:05 <sortie> It's about just making him pay a minimum of effort to get a new IP
14:29:10 <geist> oh fair
14:29:14 --- quit: banisterfiend (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:29:31 --- quit: karlguy (Ping timeout: 264 seconds)
14:29:35 --- quit: Mikaku (Quit: server maintenance ...)
14:29:57 <sortie> geist: klange did a custom html engine, just the basics
14:30:13 --- join: compared (~compared@181.170.61.66) joined #osdev
14:30:13 <sortie> I don't think I ever explorer browsers beyond looking into whether they could be cross-compiled, seems so
14:30:26 <sortie> I kinda want to port a text mode browser or something
14:30:38 --- join: karlguy (~karlguy@ool-4a5a3082.dyn.optonline.net) joined #osdev
14:31:01 <compared> sortie: you lack a brain, i can not remember me talking to you, you can't get a brain since you are a birthinjured kid in life, please stop writing opinions about me
14:31:20 --- quit: compared (Client Quit)
14:31:27 <sortie> https://media.giphy.com/media/T9Tq49DWZhT7G/giphy.gif
14:31:32 <sortie> whoop de doop
14:31:54 --- mode: sortie set +b *!*@@181.170.61.66
14:31:58 --- mode: sortie set +b *!*@181.170.61.66
14:32:05 --- mode: sortie set -b *!*@@181.170.61.66
14:32:13 <Cynosure_> Scoop dity poop
14:32:55 <sortie> I enjoy these small moments when I osdev and the troll thinks the troll is getting to me, but actually I'm just wearing down the troll. Good fun for the whole family.
14:33:08 --- quit: [UsualVictim] (Quit: There are paranoid crossroads and shipwreck alleys.)
14:33:45 --- join: Mikaku (~Mikaku@pdpc/supporter/active/mikaku) joined #osdev
14:33:46 <geist> sortie: true though talking about it proves that he is actually at least getting t you in a little bit
14:34:08 <geist> i prefer to just kick and move on, like swatting away a mosquito
14:34:49 --- join: [Ectoplasm] (~while@unaffiliated/awaxx/x-0928682) joined #osdev
14:37:15 --- quit: glauxosdever (Quit: leaving)
14:39:02 <rain1> why donty ou just /ignore him
14:40:33 --- quit: zaquest (Ping timeout: 255 seconds)
14:40:52 --- join: vasectomy (~treatment@186.147.151.22) joined #osdev
14:41:13 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
14:41:14 <MrOnlineCoder> Should I take care of present/not-present pages in my heap allocator? As I think, if kernel/usermode app accesses heap address on unallocated page, that would just cause page fault and then handler will allocate and map the page? Am I right?
14:41:41 <vasectomy> what i propose is vasectomy as quick as possible , if the rant persists than allreacy lobotomy to dudes like geist and sortie and Mutabah, can be arranged
14:41:49 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
14:42:30 <Cynosure_> MrOnlineCoder: I think you are basically talking about lazy allocation if I am correct
14:42:37 --- mode: sortie set +b *!*@186.147.151.22
14:42:45 --- kick: vasectomy was kicked by sortie (vasectomy)
14:43:22 <Cynosure_> Which I think is okay
14:43:48 --- quit: banisterfiend (Client Quit)
14:44:14 <Lowl3v3l> the guys get creative. In my troll time i usually suggested suicide or inserting something into body cavities... but "get a vasectomy", that is new
14:44:25 <_mjg_> MrOnlineCoder: what if you can't afford a page fault in the code which performed the alloc
14:45:02 <_mjg_> MrOnlineCoder: normally you have at least a flag for the allocator telling it whether it can block or not
14:45:17 <MrOnlineCoder> you mean if code that allocates the page causes a page fault?
14:45:47 --- join: nicht (~nicht@191.250.143.178) joined #osdev
14:49:46 --- quit: flacks (Ping timeout: 260 seconds)
14:49:58 --- quit: zeus1 (Ping timeout: 256 seconds)
14:50:31 --- join: Jari-- (~vai@85-76-111-142-nat.elisa-mobile.fi) joined #osdev
14:50:38 --- quit: lldd_ (Quit: Leaving)
14:52:12 --- join: flacks (flacks@184.91.69.131) joined #osdev
14:52:14 --- join: zaquest (~notzaques@5.128.210.30) joined #osdev
14:52:27 --- join: banisterfiend (~banister@ruby/staff/banisterfiend) joined #osdev
14:56:59 --- quit: banisterfiend (Ping timeout: 256 seconds)
14:57:56 --- quit: dennis95 (Quit: Leaving)
14:58:35 --- join: germite (~rainbow@176.122.220.102) joined #osdev
15:01:55 <germite> Lowl3v3l: they may insert stuff into body cavities too, but i said long time ago, sortie has not made it off from youth fecal pleasures, he and some other with their retarded family play with shitsticks aka poop of them, stuffing the fingers in and doing this crazy stuff with it, freud has explained things about such families, you can judge by his talks, that does not bother me, but when such call on a court of law to tell me how much scizophrenics like
15:01:56 <germite> me can get children, i tell you right away they signed their death letter
15:02:38 --- mode: sortie set +b *!*@176.122.220.102
15:02:47 --- kick: germite was kicked by sortie (germite)
15:03:38 <klange> geist,sortie: I had a websurf port, but it was broken as ****
15:03:46 <sortie> Oh right
15:03:51 <sortie> I forgot about websurf
15:04:41 --- join: kataria[m] (katariamat@gateway/shell/matrix.org/x-yqxjgibprdkalgns) joined #osdev
15:06:58 --- quit: xerpi (Remote host closed the connection)
15:07:18 --- join: xerpi (~xerpi@128.red-83-45-199.dynamicip.rima-tde.net) joined #osdev
15:10:58 --- quit: bemeurer (Ping timeout: 268 seconds)
15:12:18 --- join: Ringil[m] (ringilmatr@gateway/shell/matrix.org/x-shwpzycfwqygvarh) joined #osdev
15:12:18 --- join: hl[m] (m148833mat@gateway/shell/matrix.org/x-oxtmcwhkibbjgrda) joined #osdev
15:12:18 --- join: htafdwes[m] (htafdwesma@gateway/shell/matrix.org/x-ngjcqydveezdgrab) joined #osdev
15:12:18 --- join: Drakonis[m] (drakonisma@gateway/shell/matrix.org/x-uggjvjbrmtbsbvrv) joined #osdev
15:12:19 --- join: caseypme[m] (caseypmema@gateway/shell/matrix.org/x-ocdmrpjylrjlolyf) joined #osdev
15:12:24 --- join: VOID001[m] (void001mis@gateway/shell/matrix.org/x-zmtjsgpmzqtskhxm) joined #osdev
15:12:25 --- join: xobroll[m] (xobrollmat@gateway/shell/matrix.org/x-rfphusogldqljftk) joined #osdev
15:12:30 --- join: Atrap[m] (atrapmatri@gateway/shell/matrix.org/x-cxplmkaeifdbklvw) joined #osdev
15:12:41 --- join: dafnamay[m] (dafnamayma@gateway/shell/matrix.org/x-qlyctxmgirbcewxu) joined #osdev
15:12:42 --- join: hcd[m] (hcdmatrixo@gateway/shell/matrix.org/x-vxkglkvnryjgyxto) joined #osdev
15:12:42 --- join: equalunique[m] (equaluniqu@gateway/shell/matrix.org/x-jglihaexmsvddxhz) joined #osdev
15:12:45 --- join: Wallbraker[m] (wallbraker@gateway/shell/matrix.org/x-tzkooordesccbovl) joined #osdev
15:12:49 --- join: marcthe12[m] (marcthe12m@gateway/shell/matrix.org/x-xowniulvbunghmjw) joined #osdev
15:12:50 --- join: lkurusa[m] (lkurusamat@gateway/shell/matrix.org/x-eimhvamslvaxbtmp) joined #osdev
15:12:51 --- join: fristonio[m] (fristoniom@gateway/shell/matrix.org/x-igfwoiofcchyjrap) joined #osdev
15:12:52 --- join: am2on[m] (am2onataun@gateway/shell/matrix.org/x-sbavspwyvazbjakq) joined #osdev
15:12:52 --- join: Stary[m] (starymatri@gateway/shell/matrix.org/x-opcmaubhevslhiit) joined #osdev
15:13:40 --- quit: xerpi (Quit: Leaving)
15:14:40 --- quit: Kimundi_ (Ping timeout: 268 seconds)
15:14:56 --- quit: booyah (Ping timeout: 244 seconds)
15:16:38 <doug16k> MrOnlineCoder, typically the heap allocator is layered on top of the page allocator. the page allocator is only suitable for chunks of memory more than several KB. the heap allocator gets significant sized chunks from the page allocator and subdivides them so heap allocations can efficiently and quickly handle small allocations
15:16:57 --- join: gurmble (~grumble@freenode/staff/grumble) joined #osdev
15:17:14 <doug16k> typically the heap implementation will pass through really large allocations straight to the page allocator. the heap allocator only has to handle blocks up to a certain size
15:20:06 --- quit: FManTropyx (Ping timeout: 260 seconds)
15:20:18 <MrOnlineCoder> doesn't page allocator just allocate aligned 4kb chunks for paging?
15:20:22 <doug16k> the page allocator typically doesn't need to keep track of block sizes - it requires freeing them to also specify the size. when the heap allocator passes through a large allocation, it still needs to remember the size so later when it is freed through the heap interface, it looks aside to where it stores the sizes and uses that to do the page allocator free
15:21:38 <doug16k> when I say page allocator I mean the mechanism that allocates a range of address space and either assigns physical pages right then, or prepares to assign physical pages to that range on demand
15:21:50 <doug16k> so it's not necessarily one page at a time
15:23:03 <doug16k> don't confuse it with the physical memory allocator or address space allocator. when I say page allocator I mean the combined mechanism of allocating address space and either preparing to assign physical pages on demand or immediately assigning physical pages
15:24:38 --- join: FManTropyx (~fooman@82-203-190-31.bb.dnainternet.fi) joined #osdev
15:24:45 --- quit: grumble (Ping timeout: 610 seconds)
15:24:45 <doug16k> the user mode api for it on posix-like systems would be mmap. it can allocate address space and immediately or lazily assign physical pages to the range. it can be told to put an allocation at a specific address or it can find an arbitrary unused range of address space and mark it allocated
15:25:44 --- nick: gurmble -> grumble
15:26:12 <MrOnlineCoder> ok, well, I have basic paging avaliable, now I want to implement "virtual memory manager" that will allocate/free pages for userspace applications on demand. I see it as a simple bitset, what can you suggest?
15:27:24 --- join: lordofthekebabs (4ea06f78@gateway/web/freenode/ip.78.160.111.120) joined #osdev
15:27:39 <doug16k> you need two separate mechanisms. 1) a mechanism for keeping track of free ranges of address space. when you allocate from that you find a contiguous range of address space of sufficient size which is free, and remove the allocated range from the found free range. when you free a range of address space you insert a new range into it, possibly coalescing it with adjacent free ranges
15:28:59 <doug16k> and 2) you need a physical memory allocator. it doesn't have to find contiguous ranges, it can find multiple fragments (or even individual pages) of physical address space, and keeps track of what physical pages or ranges of pages are free
15:29:31 <lordofthekebabs> good night! I am kinda stuck in the research part of the operating systems, web servers, general low level stuff. I am I was compeletly sure that there will be no complete full online tutorials or anything like that but I didnt expect this much emptyness of information
15:29:43 --- quit: aalm (Ping timeout: 248 seconds)
15:29:54 <lordofthekebabs> how do i go for finding out refernces do you just go for reference books ?
15:30:27 <doug16k> so, for example, when the heap wants to allocate a 128KB chunk, it first has to find a range of unused address space of at least 128KB, and remove it from the range it is contained in.
15:30:51 <lordofthekebabs> Other than wikipedia and the few wikis and turoials like osdev it seems like there is nt any `intro to web servers, ` or `how to build web browser with c++`
15:31:05 <doug16k> it may or may not allocate physical memory right away. it may set up the page tables so addresses in that range fault. when you get the faults, you allocate physical memory and assign it to the faulted address range...
15:31:32 <doug16k> or, you may have a flag you can specify to the page allocator to immediately assign pages to the range, to "populate" it with physical pages immediately
15:32:06 --- quit: Tazmain (Quit: Leaving)
15:32:53 <doug16k> but you don't just blindly assign pages to any old fault. you have to verify that that range is actually not free, and only then assign a physical page to it. otherwise it is an "invalid page fault" or "segment violation", in case it was a bad pointer or use after free
15:33:42 <doug16k> you can either indicate that status in the page tables, or lookup whether that range is free in the virtual allocator. if so, it was an invalid page fault and should not assign it a page
15:35:03 --- quit: flacks (Ping timeout: 256 seconds)
15:35:43 --- join: flacks (flacks@184.91.69.131) joined #osdev
15:36:24 <doug16k> when a page fault occurs, the return address points to the instruction that faulted. when a page fault occurs, and you fix up the page tables and assign a page to that range, returning from the page fault restarts the faulting instruction, which will work that time, since you assigned a page and made it present
15:37:52 <doug16k> that's how it can skip actually assigning physical pages right away. programs are notorious for doing huge memory allocations and hardly using them. assigning pages on demand compensates for that
15:37:55 <MrOnlineCoder> jesus, that a plenty of work to do, thanks
15:41:12 <doug16k> an address space allocator only needs to work with ranges. it could initially be one gigantic range. an allocator needs to be able to rapidly locate a block which is at least a certain size. and it needs to be able to insert free ranges and efficiently coalesce them with adjacent ranges if either or both ends touch another free range
15:41:26 --- quit: Asu` (Remote host closed the connection)
15:43:42 <doug16k> more elaborate implementations may also provide for taking a specified range, possibly clipping the end off an overlapping range at the start, possibly removing one or more overlapping free ranges, and possibly clipping the beginning off an overlapping free range at the end
15:44:56 <doug16k> the posix mmap API requires that capability, because you can specify an address when you do an allocation, to put it at a specific place
15:45:09 --- quit: lordofthekebabs (Quit: Page closed)
15:47:25 <doug16k> but as I mentioned before, you don't have to go straight to a totally complete implementation. at first it would be more than adequate to simply provide a way to allocate a range and have it return the address of the beginning of the range it allocated
15:48:31 <doug16k> and simply clip off the allocated range from the range it found, increasing that range's base and reducing that range's size by the appropriate amount, or deleting the free range entirely if it was exactly the size allocated
15:51:44 <doug16k> note that the kernel has one, and each process has one, so implement it so that there can be lots of separate virtual allocators
15:52:04 --- join: aalm (~aalm@37-219-73-181.nat.bb.dnainternet.fi) joined #osdev
15:53:16 <doug16k> you can actually implement the physical allocator with an instance of one as well. have it represent ranges of free physical pages. you'd need a way to "try_allocate" to try to find a range of sufficient size, but return a smaller one if a sufficiently large contiguous one wasn't found
15:54:34 <doug16k> then you could do a series of allocations to find multiple discontiguous fragments of physical memory sufficiently large to service populating a range of address space
15:56:23 --- quit: asymptotically (Quit: Leaving)
15:56:31 --- quit: sortie (Quit: Leaving)
15:57:36 --- join: bemeurer (~bemeurer@199-241-200-215.PUBLIC.monkeybrains.net) joined #osdev
16:01:01 --- quit: MrOnlineCoder (Read error: Connection reset by peer)
16:04:15 --- quit: angel0xff (Ping timeout: 276 seconds)
16:05:24 --- join: Tobba (~Tobba@h-25-157.A159.priv.bahnhof.se) joined #osdev
16:06:12 --- quit: bemeurer (Ping timeout: 276 seconds)
16:20:19 --- quit: MrCivvy (Quit: Account terminated by the PanicBNC Staff Team.)
16:21:50 --- quit: flacks (Quit: Leaving)
16:25:37 --- quit: leinne (Ping timeout: 250 seconds)
16:25:40 --- join: flacks (~flacks@184.91.69.131) joined #osdev
16:33:51 --- quit: vmlinuz (Quit: Leaving)
16:36:19 --- quit: jakogut_ (Quit: jakogut_)
16:39:21 --- quit: hunterlabs (Ping timeout: 255 seconds)
16:39:43 --- quit: flacks (Ping timeout: 264 seconds)
16:43:13 --- join: gurmble (~grumble@freenode/staff/grumble) joined #osdev
16:45:07 --- quit: grumble (Disconnected by services)
16:45:09 --- nick: gurmble -> grumble
16:46:52 --- quit: MarcinWieczorek (Quit: ZNC 1.7.0 - https://znc.in)
16:51:41 --- quit: stephen77 (Ping timeout: 260 seconds)
16:56:30 --- join: alyptik (ayy@cpe-76-173-133-37.hawaii.res.rr.com) joined #osdev
16:56:52 --- quit: jp (Quit: https://ptpb.pw/~docrivers.gif)
16:58:42 --- nick: alyptik -> jp
17:03:35 --- join: hunterlabs (Elite20801@gateway/shell/elitebnc/x-xcwiafywitxcjstm) joined #osdev
17:13:07 --- quit: [Ectoplasm] (Quit: There are paranoid crossroads and shipwreck alleys.)
17:13:50 --- join: [Qriosity] (~while@unaffiliated/awaxx/x-0928682) joined #osdev
17:19:17 --- quit: m_t (Quit: Leaving)
17:21:54 --- join: promach_ (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
17:28:02 --- join: sixand (~Thunderbi@60.173.155.144) joined #osdev
17:28:21 --- join: bemeurer (~bemeurer@stdcognition.static.monkeybrains.net) joined #osdev
17:30:27 <bluezinc> I'm debating on writing an OS for the ESP8266...
17:32:12 --- quit: X-Scale (Ping timeout: 240 seconds)
17:38:21 --- quit: bemeurer (Ping timeout: 260 seconds)
17:42:16 <acidx> bluezinc: consider porting another OS instead. for instance, Zephyr supports esp32 already; it's the same architecture (xtensa), so a lot of the legwork has been done for you. (unless you want to do this, of course.)
18:03:27 --- join: bemeurer (~bemeurer@148.64.103.131) joined #osdev
18:19:38 --- join: X-Scale (~ARM@83.223.227.212) joined #osdev
18:21:33 --- quit: nicht (Ping timeout: 256 seconds)
18:28:57 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
18:29:32 --- join: nicht (~nicht@2804:7f1:2080:c57e:31b1:13d9:bae1:e4ff) joined #osdev
18:29:33 --- quit: nicht (Max SendQ exceeded)
18:30:00 --- join: nicht (~nicht@2804:7f1:2080:c57e:31b1:13d9:bae1:e4ff) joined #osdev
18:45:43 --- quit: bemeurer (Ping timeout: 264 seconds)
19:00:24 --- quit: aalm (Ping timeout: 276 seconds)
19:03:15 --- quit: nicht (Quit: Leaving)
19:06:36 <Icefoz> anyone have any good references for writing a UEFI boot loader?
19:07:20 <Icefoz> Or suggestions for good UEFI boot loaders that may already exist and boot into x86_64 long mode (ie, not grub2)
19:09:10 <Icefoz> there's a few Rust crates for UEFI interface, but alas they all seem to be either a) partial to the point of flakiness or b) over-complicated and under-documented.
19:09:24 <Icefoz> though I suppose I can fix the latter state.
19:10:01 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
19:14:44 --- quit: quc (Remote host closed the connection)
19:15:10 --- quit: bemeurer (Ping timeout: 256 seconds)
19:16:01 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
19:19:13 --- join: NightBlade (~user@ip-173-247-149-50.user.start.ca) joined #osdev
19:19:19 --- quit: sixand (Ping timeout: 240 seconds)
19:19:43 <NightBlade> Hi all
19:19:59 --- join: quc (~quc@87.116.231.10) joined #osdev
19:20:10 --- quit: jakogut (Quit: jakogut)
19:20:26 <Icefoz> Hi.
19:20:54 --- join: stephen77 (~stephen@142.167.171.31) joined #osdev
19:21:51 <doug16k> Icefoz, you can look at my bootloader, but since it supports BIOS hd/cd/network boot and EFI hd/cd/network boot it might a bit harder to follow than a trivial example. here's the efi startup code -> https://github.com/doug65536/dgos/blob/master/boot/bootefi.cc
19:21:53 <bslsk05> ​github.com: dgos/bootefi.cc at master · doug65536/dgos · GitHub
19:22:25 <NightBlade> If i'm single stepping through code in olly, why isn't the trap flag set?
19:22:50 <doug16k> NightBlade, the trap flag clears itself when it is hit
19:23:11 <NightBlade> so olly just sets it prior to execution?
19:23:30 <doug16k> i.e. you set trap flag, and resume flag, it executes one instruction, then the CPU clears the trap flag, and the interrupt runs
19:23:46 <doug16k> by the time it pushes eflags handling the interrupt, TF is cleared
19:24:01 <NightBlade> or does it do it manually through software so it can support debugging a debugger?
19:24:12 <NightBlade> i think that's the more likely scenario
19:24:27 <doug16k> hello?
19:25:07 <NightBlade> you're sure it actually uses it?
19:25:50 <doug16k> it is possible to insert temporary breakpoints if single stepping at high level
19:25:50 <NightBlade> the reason i ask is i've been playing around with anti-debug, so the semantics are important to me
19:26:05 <doug16k> if single stepping at instruction level, a proper debugger would use trap flag
19:26:17 <NightBlade> i mean it could be made as simple as a bunch of emit commands
19:26:50 <NightBlade> emit(CC) else emit(code goes here)
19:27:22 <NightBlade> i just want to know if it's actually using the flag so if thats a valid method of detecting it
19:28:26 <doug16k> I don't know what olly is, but I know how to implement an x86 debugger with single stepping -> https://github.com/doug65536/dgos/blob/master/kernel/arch/x86_64/gdbstub.cc
19:28:30 <bslsk05> ​github.com: dgos/gdbstub.cc at master · doug65536/dgos · GitHub
19:28:51 <NightBlade> ollydebug
19:29:17 <NightBlade> well i just set the flag and single stepped and it reset the flag
19:29:26 <NightBlade> so i'm going to go with your answer
19:29:26 <Icefoz> doug16k: ...I might be reading a lot of your code in the near future.
19:29:45 <doug16k> yes, did you read what I said a few minutes ago? the CPU clears it as soon as it hits an instruction
19:29:56 <NightBlade> mmm hmm, i read everything
19:30:10 <doug16k> but if RF is set, it lets one instruction execute, then it hits the single step trap
19:30:28 <NightBlade> what's that?
19:30:34 <doug16k> RF = resume flag
19:30:40 <NightBlade> ok
19:30:42 <Icefoz> I'd think your efi_main should return something meaningful though.
19:30:51 <doug16k> when RF and TF are both set, it lets one instruction go by, THEN traps
19:30:51 <Icefoz> just in case.
19:31:32 <NightBlade> i have kind of a weird question: i'm running ollydbg as admin, but it won't let me execute MOV EAX,DR0
19:31:39 <NightBlade> causes an exception
19:31:58 <NightBlade> there's no options for me to launch it as an admin that i can see
19:32:24 <NightBlade> the PEB is set with all debug flags
19:32:36 <NightBlade> so i don't understand why that's happening
19:33:27 <doug16k> Icefoz, the general idea behind my bootloader is for each variation to setup a few functions to open,read,close files. the BIOS hd and cd ones implement that through fat32 and iso filesystem implementations, bios pxe uses pxe api to download the file to a cache and reads are serviced from there
19:34:02 <doug16k> similarly, the EFI disk boot implementation uses EFI filesystem calls to open/read/close, and the EFI PXE one downloads the file to a cache and services reads from there
19:34:27 <doug16k> also, the BIOS and EFI variations have different keyboard input and screen output implementations
19:34:38 <doug16k> besides that, the majority of the code is common across all variations
19:34:59 <NightBlade> sounds pretty slick
19:35:11 <doug16k> oh, the memory map code is different, and the way memory allocations are serviced is slightly different between the two
19:35:36 <NightBlade> i'm interested in filesystem design currently
19:35:39 <doug16k> the convention is for the bios or efi specializations to have _bios or _efi suffix on the source filename
19:35:53 <NightBlade> i grabbed a book on it but i haven't started reading it yet
19:36:07 <NightBlade> i have a lot of books on the go...
19:36:28 <doug16k> Icefoz, it never returns. someday I might make it gracefully return to EFI if it fails to boot though
19:36:49 <NightBlade> better than a reset
19:37:29 <NightBlade> how would you do that? drop to real mode then reload the boot loader?
19:37:44 <doug16k> because EFI implementations often instantly wipe the screen and take you back to a menu, I just halt after showing the error. ideally I'd show the error, wait for a key, then clean up and return to EFI, but I haven't bothered (yet)
19:37:47 <Icefoz> I guessed that was the case but a couple years of writing Rust has made me a real fanatic for irrelevant details, apparently.
19:38:03 <Icefoz> that's actually a good point. hm.
19:38:54 --- quit: MDude (Ping timeout: 255 seconds)
19:39:24 <Icefoz> still the basics of how it works looks clear enough, it has all the raw UEFI interface in gory detail, and it presumably actually works, so I'm happy.
19:39:28 <doug16k> NightBlade, bios bootloaders can invoke INT 19h to give up the boot. EFI implementations can call systab->BootServices->Exit or return from the main function
19:39:48 <NightBlade> ok cool, thanks
19:40:01 <NightBlade> i'm sure that's going to come in handy later
19:40:25 <Icefoz> I'm not terribly interested in the bios side since I know everything about it I care to, ie, how to get from boot into long mode and I look forward to being able to forget it.
19:40:47 <NightBlade> i'm right at that point now
19:40:55 <NightBlade> i have my working boot loader
19:41:00 <NightBlade> working on a basic kernel
19:41:11 <NightBlade> hence the interest in file systems
19:41:19 <NightBlade> seems the most logical next step
19:42:30 <NightBlade> i have a DMA question: is the ram a 1-to-1 mapping to the pixels, or is there an addressing schema using some of the bytes?
19:42:55 <doug16k> pixels? are you talking about the framebuffer?
19:42:58 <NightBlade> yes
19:43:21 <doug16k> depends on the mode, but yes there's roughly a linear correspondence across scanlines
19:43:28 <NightBlade> ok, thanks
19:43:36 <doug16k> the number of bytes across one row may not equal pixel_size*width though
19:43:58 <doug16k> usually a separate value called "pitch" tells you how far in memory it is from one scanline to the next
19:44:08 <Icefoz> pixels are a lieeeeee
19:44:46 <doug16k> for example, 1920*1080 32 bit per pixel mode may not be 1920*4 bytes from one scanline to the next, it may be more
19:44:57 --- quit: tacco| ()
19:45:57 <klange> pitch tends to be 4-byte aligned, so it's more of an issue with 24bpp modes.
19:46:18 <klange> But there are exceptions~
19:46:30 <NightBlade> there's always exceptions ;P
19:49:50 <NightBlade> hmm, i have an idea to fix the problem in olly
19:53:12 <NightBlade> nope, didn't work
19:53:38 <NightBlade> i think i probably can't access them because it's using them
19:54:02 --- join: sixand (~Thunderbi@60.173.134.41) joined #osdev
19:54:37 --- quit: islandsparky_ (Ping timeout: 252 seconds)
19:54:55 <NightBlade> i'll test it with a different privleged instruction
19:56:00 <NightBlade> if i call HLT, will that stop the cpu completely or just the thread thats running it?
19:57:27 --- quit: apetresc (Quit: ZNC - http://znc.in)
19:59:14 <klys> HLT stops the cpu until the next interrupt.
19:59:16 <NightBlade> hmm, according to wiki, it's probably a bad idea
19:59:21 <NightBlade> yeah i see that
19:59:31 <NightBlade> i could pop open the cd tray
19:59:49 <NightBlade> thats my usual go-to on a system lock up, works about half the time
20:00:24 <NightBlade> i heard a long time ago that windows treats ctrl+alt+del as an interrupt
20:00:34 <klys> you should be receiving regular timer interrupts, unless you did cli.
20:00:41 --- join: apetresc (~apetresc@CPEbc4dfb720b93-CMbc4dfb720b90.cpe.net.cable.rogers.com) joined #osdev
20:00:51 <NightBlade> that's what i figured
20:01:19 <NightBlade> plus HDD polling right?
20:02:26 <klys> I'm not sure why you would be accessing the hard disk, unless you told the hard disk controller you wanted something.
20:02:27 <doug16k> NightBlade, keypresses usually result in an IRQ, sure
20:02:39 <NightBlade> not usb ones i heard, only ps/2
20:02:50 <doug16k> usb controllers use IRQs too, of course
20:02:56 <NightBlade> i see
20:03:55 <doug16k> my project has XHCI USB controller driver and USB keyboard, mouse, hub, and usb block storage drivers
20:06:33 <doug16k> keypresses results in DMA of the data into the buffer setup by the read that was posted by the keyboard class driver, then an IRQ on the XHCI controller on that pipe notifies the class driver (by reporting an async completion in my driver's case)
20:06:35 <NightBlade> which control register holds the ring level in windows? it's CR3 right? bit 8?
20:06:56 <doug16k> NightBlade, the current ring is determined by the DPL of the descriptor selected by cs
20:07:41 <NightBlade> desired privlege level of the segment descriptor for the code segment, how do i get that? which descriptor table? global?
20:07:52 <NightBlade> or local?
20:08:30 <doug16k> the simplest way to find the current ring is to copy cs to a general register and check the low 2 bits
20:08:47 <NightBlade> oh, thats freakishly easy
20:08:50 <klys> 0 timer 1 keyboard 2 pic 3 mouse/serial 4 modem/serial 5 sound 6 floppy 7 printer/parallel 8 real-time-clock 9 usb 10 network/pci 11 video-retrace/pci 12 wifi/pci 13 sas/pci 14 ata-slave/disk 15 ata-master/disk <- thought I'd give you a full set of possibilities for BIOS IRQs.
20:08:50 <NightBlade> thx
20:09:18 <NightBlade> yes, thats very helpful to me right now. thanks a lot
20:09:25 <NightBlade> i'm going to need that very shortly
20:09:35 <klys> It's not all true though.
20:10:07 <NightBlade> i was pretty sure IRQ0 was the system clock
20:10:27 <doug16k> NightBlade, it is possible for ring 3 code to be more privileged than normal by setting the IOPL field of EFLAGS to 3
20:10:28 <klys> it's the Programmable Interval Timer.
20:10:29 <NightBlade> i had to port some code into darwin for use on an iPhone
20:10:35 --- quit: Cynosure_ (Remote host closed the connection)
20:10:54 <NightBlade> _umodsi8() or something like that
20:11:11 <NightBlade> there was some inline asm for x86 "INT 0"
20:11:20 <NightBlade> i knew that wouldn't work on arm
20:11:54 <NightBlade> so i did a bit of reading and i used SWI 0 figuring it was setup the same and everything seems to work just fine
20:12:33 --- quit: CrystalMath (Quit: Support Free Software - https://www.fsf.org/)
20:12:52 <klange> hm, dhcp failing on vmware again...
20:12:54 <klange> i hate vmware
20:13:16 <NightBlade> when does dhcp ever work properly...
20:13:20 <doug16k> klange, failing how? just curious
20:13:26 <klange> unknown, hard to debug
20:13:46 <NightBlade> I keep getting IP collisions on my network
20:18:19 --- quit: sixand (Ping timeout: 240 seconds)
20:18:22 <NightBlade> if one program sets up an IRQ is that global?
20:18:34 <NightBlade> user defined ones i mean
20:21:09 <doug16k> NightBlade, IRQ? IRQs are from hardware
20:21:32 <NightBlade> err, interruptsd
20:21:35 <NightBlade> sorry
20:21:58 <doug16k> do you mean hooking an interrupt in the IDT? yes, they are global. it is possible for different CPUs to have different IDTs but it is never done AFAIK
20:22:09 <NightBlade> ok, thanks
20:22:33 <NightBlade> i was thinking of utilizing it in some security software i'm working on
20:22:40 <klys> your interrupt descriptor table only has one interrupt vector per interrupt. if you let something have an interrupt than nothing else has it.
20:22:58 <NightBlade> if i'm correct debuggers can't follow into an interrupt
20:23:12 <NightBlade> or is that a call-gate?
20:23:19 <doug16k> it is possible
20:23:29 <doug16k> but just using trap flag won't do it
20:23:54 <klys> bochs has some fair interrupt emulation.
20:23:58 <NightBlade> so you're saying the solution is to attach my own debugger from protected memory
20:24:22 <doug16k> a clever debugger can examine the next instruction, see it is an INT instruction, examine the IDT, place a breakpoint at the entry point of the interrupt handler, and continue. the cpu will hit the breakpoint when it runs the INT instruction
20:24:42 <NightBlade> so unless malicious code can get access to ntSetProcessInformation with argument 0x11 i'm safe
20:25:06 <NightBlade> unless it's already being debugged right?
20:25:24 <klys> not sure what you're asking anymore
20:25:42 <NightBlade> protecting memory inside an interrupt from debuggers
20:25:51 <klys> are you maliciously debugging your own code?
20:26:01 <doug16k> lol
20:26:08 <NightBlade> trying to harden code from malicious software
20:27:10 <klys> when you know what you're doing, you won't be able to hide it from yourself anymore.
20:27:14 <doug16k> NightBlade, do you mean windows kernel debuggers? windows has a way to check whether a kernel debugger is present. it also has IsDebuggerPresent() in user mode
20:27:36 <doug16k> however, the attacker can easily be clever enough to work around such checks
20:27:41 <NightBlade> i want to make a bootloader wrapper and launch windows myself
20:27:54 <NightBlade> have a segregated memory section it can't access
20:28:04 <NightBlade> and use a system of interrupts
20:28:21 <NightBlade> as one means anyway
20:28:21 <doug16k> NightBlade, why can't the attacker just NOP out things to kill that?
20:28:31 <klys> you'd better be working on an established code base if you want to launch windows from it.
20:28:34 <NightBlade> explain please doug
20:29:15 <doug16k> let's say I was debugging something that tried to be hardened against a debugger. why can't I just replace the instructions that check with a jmp to somewhere, or just use nop instructions to wipe out the checking?
20:29:37 <doug16k> I am debugging the machine, I have infinite power to change things
20:30:10 <NightBlade> i'm not quite at that point yet
20:30:21 <NightBlade> trying to solve things one step at a time
20:30:55 <NightBlade> right now i'm doing multiple tests for debuggers
20:31:48 <NightBlade> i saw something interesting recently where a program hooked the debug function that actually launched the program and overwrote the first 5 bytes to an exit call
20:31:58 <doug16k> let's say something called IsDebuggerPresent(). no problem, just update the IVT to point to code somewhere that does xor %eax,%eax ; ret. now IsDebuggerPresent() returns 0 every time
20:32:06 <doug16k> IAT*
20:32:31 <NightBlade> i've already played around with IAT hooking
20:32:51 <NightBlade> i have some POC code that parses an executable looking for specific imports
20:33:13 <doug16k> then you might say, "aha! I'll check, and return false if it isn't hooked". no problem, replace the first instruction of that check to jmp to xor %eax,%eax ; ret
20:33:18 <NightBlade> if it finds them it attaches to the process and gets some memory in it
20:33:30 <NightBlade> then copies a stub popping up a msgbox
20:33:41 <NightBlade> allowing the user to choose
20:33:52 <NightBlade> it was for detecting keyboard hookers
20:34:42 <NightBlade> ultimately i'll need some segregated section of ram even the kernel cannot access
20:35:16 <NightBlade> there i can do some heuristic checks on executables at launch and periodically during run or if suspicious instructions are executed
20:37:09 <klys> the thing that you want to admire about emulation code is its complexity, not so much its invulerability. complexity prevents more individuals from doing more things than tricks do.
20:37:31 --- quit: Matviy (Ping timeout: 252 seconds)
20:37:37 <NightBlade> i wrote my own x86 disassembler already
20:38:10 <NightBlade> the only 2 things it doesn't do is the sequential register math descriptors or prefix bytes
20:38:23 <NightBlade> it's about 85% complete
20:38:58 <NightBlade> i tested it on some random code and it disassembled 302 lines perfectly before i got an error
20:40:43 <NightBlade> the nice thing about writing my own is i can get it to do things like disassemble from an offset
20:40:55 <NightBlade> in case code is trying to hide instructions
20:41:38 <NightBlade> doesn't cover polymorphic or packed code but i can run it virtually in a sandbox to see if it's changing itself
20:42:16 <NightBlade> well, what i mean is i will be able to, i haven't wrote that part yet lol
20:42:51 --- quit: drakonis (Read error: Connection reset by peer)
20:43:30 --- join: elevated (~elevated@gateway/tor-sasl/elevated) joined #osdev
20:45:22 <klys> I would like to use an assembler / disassembler called beaengine sometime so I can port soem projects to my preferred assembler. I have compiled libx86emu, whilch includes disassembly code, to emx/dos before considering qemu for dos. I have a version of qemu for dos now, all of those projects are kind of lurking, as I have important things to work on.
20:45:52 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
20:47:15 --- quit: spare (Quit: leaving)
20:47:42 <klys> I'm not saying I don't need a disassembler, I respect you for doing it. It's a nice learning exercise.
20:53:44 <NightBlade> that was half the reason i did it
20:54:03 --- quit: nj0rd (Ping timeout: 260 seconds)
20:54:06 <NightBlade> it took 6 revisions to get an organizational structure that worked
20:55:04 <NightBlade> only problem is it's not modular at all so it's stuck with x86 right now
20:55:19 <NightBlade> but for my needs that will suffice for now
20:56:19 <NightBlade> i built it because i'd eventually need to parse an exe for calls and jumps as well as suspicious instructions
20:56:42 <NightBlade> runs very quick too because the code is very skeleton
20:57:08 <NightBlade> i think it tested at something like 2.8MB/s
20:58:40 <NightBlade> it just tests code nybble by nibble then applies different templates recursively
20:58:55 <NightBlade> was a crazy idea but it actually worked perfectly
20:59:23 <NightBlade> has a few counters for argument sizes
21:00:00 <klys> assembler is hardly an obfuscated language. if you wanted to be sneaky you should have started coding javascript
21:00:25 <NightBlade> i've seen some of those code obfuscation challenges before
21:00:33 <NightBlade> ken perlin has one on his homepage
21:00:38 --- quit: bemeurer (Quit: WeeChat 2.1)
21:00:42 <NightBlade> draws a spiral in the console
21:01:17 <NightBlade> when i saw a piece of code in brainfuck i knew why they named it that lol
21:01:30 <NightBlade> i give mad props to anyone that can write functional code in that
21:03:22 --- quit: epony (Quit: QUIT)
21:03:59 <NightBlade> ugh, i'm feeling lazy i need to start coding again or i'm just going to waste time
21:05:37 <NightBlade> thx for all the help btw, i took notes of those irqs
21:06:16 <klys> 14 and 15 were backwards.
21:06:41 <klys> 14 is primary and 15 is secondary.
21:07:10 <klys> have fun
21:07:10 --- join: epony (~nym@77-85-135-149.ip.btc-net.bg) joined #osdev
21:08:04 --- join: nj0rd (~nj0rd@200116b8458c7500f53e667b960c2103.dip.versatel-1u1.de) joined #osdev
21:08:14 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
21:16:05 <NightBlade> thanks, noted
21:21:07 --- quit: graphene (Remote host closed the connection)
21:25:19 --- quit: stephen77 (Ping timeout: 240 seconds)
21:30:06 <NightBlade> i just checked the code segment and it is indeed running as ring 3
21:30:36 <NightBlade> so it seems i'll need to learn a privlege escalation to get it to ring 0, should be fun
21:30:43 <klys> that's because you're writing client code
21:30:55 <NightBlade> in ollydebug
21:31:18 <NightBlade> i'm not attaching to a process
21:31:28 <NightBlade> that's good to know though
21:31:37 <NightBlade> olly is running as admin
21:31:56 <NightBlade> i even set the file options to run as admin
21:32:03 <klys> do you need to know the prospects for coding ring zero?
21:32:22 <NightBlade> i have a great book on writing rootkits i'm reading
21:32:59 <NightBlade> it's called "Escape and evasion..."
21:33:43 --- join: zeus1 (~zeus@154.226.144.189) joined #osdev
21:33:45 <NightBlade> figured i could glean some knowledge from it
21:34:07 <NightBlade> he covers a couple escalations too, not there yet
21:37:47 <NightBlade> what's those prospects you mentioned? GDT and such?
21:38:04 <NightBlade> is the GOT in linux the same thing?
21:39:14 --- quit: sprocklem (Quit: [])
21:43:20 <klys> the "global offset table" isn't the "global descriptor table."
21:43:28 --- quit: drakonis (Remote host closed the connection)
21:43:32 <klys> nightblade, what's the date on that book?
21:43:38 <NightBlade> one sec
21:45:09 --- join: sprocklem (~sprocklem@unaffiliated/sprocklem) joined #osdev
21:45:49 <NightBlade> 2009
21:46:50 <klys> hmm, I guess that's about contemporary with "MicroSoft Windows Vista."
21:47:52 <NightBlade> it is actually, i figured half the fun would be seeing what works with 7 and 10
21:47:53 --- join: Goplat (~Goplat@reactos/developer/Goplat) joined #osdev
21:48:16 --- join: earlz (~earlz@earlz.net) joined #osdev
21:48:18 <NightBlade> i found 3 ways to sidestep DEP from ring 3 in an afternoon so i should be fine
21:49:01 <geist> hmm, what's going on here?
21:49:20 <klys> not much. how are you?
21:49:49 --- quit: sprocklem (Client Quit)
21:50:09 --- join: sprocklem (~sprocklem@unaffiliated/sprocklem) joined #osdev
21:51:33 <klys> just shootin' the breeze with nightblade here, whom appears to be a glutton for punishment.
21:51:44 <geist> apparently
21:51:53 <geist> i read a little bit of scrollback
21:51:55 <NightBlade> i learn pretty much everything the hard way
21:52:02 <NightBlade> it works for me
21:52:24 <NightBlade> when i have a new problem i usually try to solve it myself first
21:52:30 <NightBlade> good way to learn
21:52:44 <NightBlade> then i see how other people are doing it
21:55:16 <Lowl3v3l> actually its not that good of a way. it leads to bad solutions
21:55:58 <geist> sometimes
21:56:15 <geist> there's the whole problem of if you see a great solution it's hard to think of anything else
21:56:29 <NightBlade> thats exactly my thinking geist
21:56:31 <geist> so you dont get to really stress your design skills
21:56:39 <NightBlade> when you know a solution it biases you
21:56:58 <geist> right
21:57:00 <NightBlade> i hated falling into that
21:57:18 <NightBlade> sometimes i do get some useful solutions
21:57:27 <NightBlade> usually not, but oh well
21:57:36 <Lowl3v3l> i see it working the other way. Finding any solution, thinking it is great, missing the good solution
21:57:53 <NightBlade> i always check what the industry is using
21:58:02 <NightBlade> security concerns etc
21:58:06 <geist> well, sure the key is you have to then go back and measure what you came up with
21:58:17 <NightBlade> a lot of time i will just use a lib or something
21:58:32 <NightBlade> but i gained all that knowledge
21:58:39 <NightBlade> and it makes it WAY easier to work with
21:59:08 <NightBlade> i already have structures and relations in my head so i can understand what different parts are doing
21:59:47 <NightBlade> sometimes there isn't an optimal solution for my needs
22:02:03 --- quit: eremitah (Read error: Connection reset by peer)
22:03:00 --- join: eremitah (~int@unaffiliated/eremitah) joined #osdev
22:05:26 --- quit: freakazoid0223 (Remote host closed the connection)
22:06:32 <NightBlade> are all indirect far jmp/calls to bx?
22:06:58 <klys> no
22:10:27 <NightBlade> ok, thanks
22:10:42 <NightBlade> was wondering if it was one of those cases like stos
22:13:26 <doug16k> what is frame_dummy or register_tm_clones ?
22:14:36 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
22:15:16 --- join: Night_Blade (~user@ip-173-247-149-50.user.start.ca) joined #osdev
22:16:12 <doug16k> I'm building a user mode program and the .init_array contains a call to this nonsense -> https://gist.github.com/doug65536/37748e57d19b1ba5ad24370f025e8453
22:16:14 <bslsk05> ​gist.github.com: gist:37748e57d19b1ba5ad24370f025e8453 · GitHub
22:16:17 <doug16k> call 0 ???
22:16:52 <doug16k> .init_array contains a function pointer to*
22:17:27 <geist> is that pre-link?
22:17:42 --- quit: NightBlade (Ping timeout: 268 seconds)
22:17:45 <doug16k> no, it's the executable. that's from objdump -S
22:18:12 <geist> guess it's intended to be filled in by the loader then
22:18:31 <geist> look in the relocation entries and see if that's referring to an external symbol
22:18:46 <doug16k> ah... must be eh? checking
22:19:16 <doug16k> `x86_64-elf-objdump --reloc user-shell` has no relocations
22:19:31 <geist> looks like it takes two args, two references to something within the binary
22:19:40 <Night_Blade> you banned me?
22:19:58 <geist> probalby something like atexit()
22:20:53 <Night_Blade> :(
22:20:58 <geist> Night_Blade: hmm?
22:21:07 <Night_Blade> i got a blue screen
22:21:15 <doug16k> Night_Blade, all I see is a ping timeout
22:21:19 <geist> yep
22:21:20 <Night_Blade> i rebooted and my nick was still in use
22:21:27 <Night_Blade> so it used my alt
22:21:33 <geist> right
22:21:35 <Night_Blade> i tried /nick and got this
22:21:43 <Night_Blade> NightBlade ##asm Cannot change nickname while banned on channel
22:21:46 <geist> sure, your old one was still logged in, hadn't timed out
22:21:53 <geist> ##asm != #osdev
22:21:54 <Night_Blade> no i waited for timeout
22:22:04 <Night_Blade> i wasn't even talking there
22:22:12 <Night_Blade> i havent said a thing in a week
22:22:13 <geist> dunno
22:22:22 <Night_Blade> weird
22:22:27 <doug16k> it's normal to be unable to use the same nick right away after reconnecting
22:22:29 <Night_Blade> i didn't notice that
22:22:34 <Night_Blade> #asm lol
22:22:37 <Night_Blade> oops
22:22:59 <doug16k> note that some channels have bans for names with __ in them or whatever, to ban people with connection issues
22:23:10 <Night_Blade> orly
22:23:14 <Night_Blade> interesting
22:23:22 <doug16k> yeah, if you are told you are banned it is probably your name
22:23:27 --- nick: Night_Blade -> NightBlade
22:24:15 <NightBlade> neato, thanks doug
22:24:40 <NightBlade> i was thinking what did i do to bring the wrath of the banhammer
22:25:40 <NightBlade> interesting, i've played with IRC bot coding before so tell me, what kind of ban exactly is that?
22:25:57 <doug16k> bans can be a pattern match
22:26:05 <NightBlade> ahh ok
22:26:09 <doug16k> *__* or something like that
22:26:26 <NightBlade> how does it still let a user in the room?
22:26:48 <NightBlade> i've never seen that before and i've been using IRC since i was 13 and i'm in my 30's
22:28:15 <doug16k> I got "banned" from a room and I was totally innocent. I hardly even talked in that room. it had been weeks since I said a word. I asked freenode staff why I might be banned on that channel, they checked the bans and saw one of those patterns.
22:28:19 <doug16k> my nick was doug16k___ or something because I was screwing with my network previously
22:28:55 <NightBlade> gotcha
22:28:57 <klys> changing your nick in a certain channel while not registered with services.
22:29:32 <klys> has to do with channel modes.
22:29:41 <NightBlade> i used to use telnet to connect to irc on my iphone lol
22:29:49 <NightBlade> it's hardcore
22:30:35 <geist> forget how fast this network ping/pongs you
22:31:01 <NightBlade> yeah that would be inconvenient
22:31:18 <NightBlade> i havent seen one yet
22:32:53 <geist> guess it's not too fast then
22:33:29 <NightBlade> seems reasonable
22:33:44 <NightBlade> plus theres a window of like 2-3 pings usually before a disconnect
22:33:56 <NightBlade> you don't have to reply to the first one usually
22:34:20 <NightBlade> maybe it only happens if you are idle
22:34:32 <geist> oh that could be
22:34:42 <NightBlade> i've always found it superfluous to ping someone that was actively communication
22:34:46 <NightBlade> *communicating
22:35:27 <NightBlade> RFC's are fun to read
22:35:37 <NightBlade> kind of like fantasy or fairy tales lol
22:37:41 <NightBlade> i've heard USB is a horror story
22:39:21 <NightBlade> ugh, my hdd is on it's last legs, i really need a new one
22:40:35 <NightBlade> doesn't help that i salvaged it from electronics scrap either
22:40:50 <NightBlade> was still in half decent shape when i got it
22:41:04 <NightBlade> been using it about 3.5 years
22:41:32 <NightBlade> it's taken a few impacts tho
22:41:44 <NightBlade> much to my chagrin
22:42:29 <NightBlade> i keep getting KERNEL_INPAGE_DATA_ERROR bluescreens
22:42:54 <klange> coming out of EFI, I'm failing to get interrupts from my PCI devices - specifically e1000 as well as ac97, think I'm missing something at the PCI or interrupt level here...
22:43:30 <klange> put on a lot of debugging and the e1000 side in qemu is trying to set the interrupt, and PCI interrupts are not disabled - got lost around where qemu was sending things through the bus, haven't dug deeper
22:44:51 <NightBlade> i've always wanted to design a pci board
22:45:06 <NightBlade> i couldn't afford the diy kit though
22:45:29 <geist> klange: hmm, perhaps it was using MSI and you didn't undo the MSI setup?
22:45:45 <NightBlade> oh, i have a question about I2C
22:45:55 <NightBlade> could it be used to link cpus?
22:46:14 <klange> Is that a thing EFI is going to do and not fix on exit?
22:46:27 <geist> klange: should and does are two different things
22:46:29 <NightBlade> i played around with PICAXE chips and i was trying to figure out how to make a multi-cored system
22:46:51 <geist> we actually have an ongoing problem where our e1000 driver has trouble based on whether or not uefi messed with the nic
22:47:00 <geist> so it definitely doesn't reset it back to scratch, necessarily
22:48:54 --- join: booyah (~bb@193.25.1.157) joined #osdev
22:56:44 <doug16k> klange, maybe it enabled pci-x interrupts and you need to find the capability and turn off msi-x?
22:56:58 <doug16k> ah geist said pretty much same thing :)
22:59:44 <geist> yah got to at least know how to disable MSI
23:00:14 <doug16k> klange, do you have a thing to walk the pci capability chain in config space?
23:02:55 <doug16k> msi is capability id 5, msi-x is capability 0x11. both of those areas have a bit to set which shuts off pin interrupts and enables MSI/MSIX respectively
23:09:02 <klange> none of my pci devices report that the capabilities list is enabled
23:11:22 --- join: bemeurer (~bemeurer@c-24-6-228-111.hsd1.ca.comcast.net) joined #osdev
23:12:20 <doug16k> really? wow
23:13:19 <geist> that seems a bit fishy
23:13:41 <klange> bit 4 of status register? it's not set on any of these
23:14:25 <klange> I do see my interrupt status bit set, indicating the devices are trying to irq...
23:25:21 <klange> ah, pci told me the irq was 11, but adding more debugging on the pci bus side in qemu tells me it's firing irq 10, so something is remapped somewhere...
23:27:28 <geist> a little funny, but technically there's that whole redirection table in acpi
23:32:27 <doug16k> the one in ACPI is for the IOAPIC though isn't it?
23:33:15 <doug16k> klange, you're using PIC right?
23:38:59 <klange> ah, yeah, looks like ioapic is screwing me :(
23:40:18 <doug16k> the LAPIC is probably enabled when you boot with EFI. what if you disable it?
23:44:57 <doug16k> i.e. read MSR 0x1B, bitwise AND it with 0xFFFFFFFFFFFFF000, read 32 bits from that address + 0x3C, clear bit 8, and write it back
23:45:51 <doug16k> never tried it but it should shut off the LAPIC and put it back to legacy mode
23:46:38 <doug16k> oops, not bit 8. bit 11
23:47:07 <doug16k> and 10 for that matter, might as well turn off x2apic while you're there
23:51:21 <doug16k> re my weird startup code problem, I found register_tm_clones -> https://github.com/gcc-mirror/gcc/blob/master/libgcc/crtstuff.c#L296
23:51:24 <bslsk05> ​github.com: gcc/crtstuff.c at master · gcc-mirror/gcc · GitHub
23:51:33 <doug16k> tm = transactional memory
23:52:08 --- join: sixand (~Thunderbi@60.173.155.144) joined #osdev
23:53:20 <doug16k> "frame_dummy" (lol) is at line 451
23:55:33 <doug16k> why is the gcc startup code implementation such a mess?
23:57:18 --- quit: adam4813 (Quit: Connection closed for inactivity)
23:59:27 --- quit: zeus1 (Ping timeout: 268 seconds)
23:59:59 --- log: ended osdev/18.07.20