IRC log started Wed Nov 3 00:00:00 1999 [msg(TUNES)] permlog 1999.1103 12:10am -:- SignOff smkl: #TUNES (changing servers) YES!!!!! brix runs on real machines now kick ass 12:30am What was the problem? when i setup the gdt pseudo-descriptor i put the base into di and then moved edi into it But why did taht work in bochs?? on a real processor there was some crap in the upper part of edi that wasnt there in bochs i just changed it so the base was loaded into edi to clear that crap Ohh Thats the kind of bug that makes you want to go to Intel and... hehe i did find another bug tho What was that? if u dont type anything for a couple minutes brix will lockup Thats weird and if u type alot it will gpf Have you found the squash for that yet? no not planning on looking either Heh its not consistent Listen here son... you better type you command FAST! And it better be a SHORT command! This is on real machines or bochs? i have typed 450 to 700 characters before it gpf's 12:40am * lar1/#tunes wonders what the hell air was doing typing 700 characters? it was on real machines bochs is way to slow to type that many keys i did notice something funny on bochs tho being that its so slow if i press 2 keys really fast it will print the second key first Heh Why is bochs _so_ slow it emulates the code But other emulators arent that slow... NES, SNES, hell even PSX all run fine even on slower comptuers in brix it says its a pentium 6mhz Hmm I better be off I am tired and before i upgraded to cpu level 5 it said 386 20mhz and 486 6mhz me too Later all -:- SignOff lar1: #TUNES (Leaving) -:- SignOff air: #TUNES (BRiX [http://www.qzx.com/brix] :: sleep) -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes 12:50am -:- SignOff hcf: #TUNES (Leaving) -:- hcf [nef@me-portland-us240.javanet.com] has joined #tunes -:- SignOff abi: #TUNES (dying by hcf's request) -:- Hal [hal@chaosdev.org] has joined #tunes Hello. * Hal/#tunes used to call himself Crimson Where is abi? ;) being cleaned -:- Fare [fare@quatramaran.ens.fr] has joined #Tunes 06:50am -:- Hal is now known as Crimson checked out chaosdev.org lately? FYI, chaos (the ipv4-server of chaos) now replies to ping requests. 07:00am -:- SignOff Crimson: #TUNES ("Woman who wear G-string, high on crack!") -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us240.javanet.com]) -:- hcf [nef@me-portland-us1009.javanet.com] has joined #tunes -:- hcf has changed the topic on channel #tunes to: Free Reflective Computing System || abi is down for cleaning and such -:- SignOff smkl: #TUNES (Ping timeout for smkl[glubimox.yok.utu.fi]) -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- binEng [bineng@e161.ryd.student.liu.se] has joined #tunes hi bin hello hcf hmm, I should be going again :P -:- SignOff binEng: #TUNES (Leaving) 09:20am -:- RasKass [user7628@209.174.150.132] has joined #tunes hey whats up peole nothing much hmm hmm..... iam in school hah were are you at smkl at home or work home 11:10am ohh how old are you ??...........?? 20 11:20am hhhaha your old you in your prime ummm at least Fare is much older than me hehe -:- buridan [buridan@cddc2.psci.vt.edu] has joined #tunes 11:30am -:- buridan [buridan@cddc2.psci.vt.edu] has left #tunes [] -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us1009.javanet.com]) -:- hcf [nef@me-portland-us919.javanet.com] has joined #tunes -:- RasKass [user7628@209.174.150.132] has left #tunes [] -:- SignOff Fare: #TUNES (Ping timeout for Fare[quatramaran.ens.fr]) -:- eihrul [lee@usr5-ppp114.lvdi.net] has joined #tunes -:- AlonzoTG [Alonzo@209-122-203-70.s324.tnt6.lnhva.md.dialup.rcn.com] has joined #tunes -:- abi [nef@bespin.dhs.org] has joined #tunes -:- SignOff abi: #TUNES (dying by hcf's request) -:- abi [nef@bespin.dhs.org] has joined #tunes -:- hcf has changed the topic on channel #tunes to: Free Reflective Computing System -:- SignOff hcf: #TUNES (Leaving) -:- hcf [nef@me-portland-us841.javanet.com] has joined #tunes -:- SignOff hcf: #TUNES (Leaving) -:- air [brand@p0wer.qzx.com] has joined #tunes anyone know howto forward all email that is already in a mailbox? 06:40pm -:- SignOff eihrul: #TUNES (Ping timeout for eihrul[usr5-ppp114.lvdi.net]) -:- eihrul [lee@usr5-ppp114.lvdi.net] has joined #tunes -:- eihrul_ [lee@usr5-ppp48.lvdi.net] has joined #tunes -:- eihrul_ is now known as eihrul__ -:- SignOff eihrul: #TUNES (Ping timeout for eihrul[usr5-ppp114.lvdi.net]) -:- eihrul__ is now known as eihrul -:- lar1 [LarMan@dialup-209.245.132.73.SanJose1.Level3.net] has joined #tunes Hey hey air: Do you like godsmack? ya air: Do you know what the differences between the edit and orignal are? I assume mine is orignal because I didn't get it at k-mart :) 07:40pm dont know, dont care Heh... you dont care if you have the edited one? i dont buy that shit You don't like it but it is shit... Ok... err s/don't/do 07:50pm ahhh, i just made my stacks all mapped so my scheduler and thread_create dont have to invalidate the tlb that saved 3000 cycles 3000 cycles to invalidate the TLB? umm... what the hell are yoi doing? er were you doing? invlpg is 25 cycles, plus i was able to remove the code that loaded the stack base into the page table, about 30 cycles the scheduler is called 100 times per second 3000 cycles per second saved, or a .003% increase on a p100 don't see why you mapped stacks in the same place in the first place :) well i have limited the number of threads to 1024 so im able to fit a stack for each into a single page table now. soft limits suck man i no longer need entries for a billion threads like i did before cuz threads now do direct calls instead of thread calls when was the last time u had 1000 processes active? om soft limits make the system faster Why does each thread need a stack??? nevermind That was stupid++ lar1: duh :) hey u should write a language and call it that 08:00pm make it a really really good language * eihrul/#tunes laughs. i thought your language was good? :) * lar1/#tunes announces RavenOS's language to be s++ :) air: we're not talking processes air: we're talking threads.... eihrul: it is but im not gonna call it that so? so, there's apps that need more than 1024 threads :) we are talking short threads that's your problem :) 90% of the threads shouldnt live past one timeslice Uh, no Not my timeslices 10ms Mine are 5ms Well, they can be adjusted I came up with that idea and I was like CRAP that is neat-o lar1: i picked 10ms cuz linux uses it and linux is a good OS Heh air what cpu is minimum for 4 MB page sizes? pentium hmm.... maybe i'll make my OS pentium specific then :) why? because, <= 486s are too limited and there's already good OSes for them 486s are the coolest! gah, they're dinosaurs already I _love_ the i486! Its is powerful but not comples fine, you can but its hell for an OS :) if u write for a slow 386 then u will be highly motivated to optimize better eh.... which benefits faster cpus the pentium allows much better optimization :) and there are plenty of cycles to go around eihrul: im talking about overall code optimization i don't think anyone really is going to care whether you're fast or you're really-fast overall code optimization is easy to do Yes, I do I went really-fast you don't; know what you want If its isn't ludicrius speed it ins't good enough air: i can optimize regardless of a pentium or a 386 or a supercomputer eihrul: no u cant * eihrul/#tunes yawns. eihrul: if u code for a 386 u will find yer OS too slow and keep tweaking the code to make it smaller and faster that's optimization of slow ideas i prefer more optimized ideas than optimized implementations if you need to optimize an implementation, you're barking up the wrong idea 08:10pm oh and yer placing limits on yer code too :) limits suck man eh? who put the 1024 thread limit? HEh who put the pentium limit because i want 4 MB page size it cuts down on a lot of memory usage my 1024 thread limit cuts down on memory too and it makes it faster 4 MB page size makes things faster too.... sure less TLB overhead pages are 4k right? eihrul: On some 386s you might be lucky to have 4MB _total_ irrelevent i just need it for address space optimizations :P * AlonzoTG/#tunes 386 has 4mb... gonna upgrade it to 8 this weekend... I hope... and if you're pentium specific, no problem :) when the OS boots u should check for 4meg pages and then use them when mapping but u shouldnt depend on them phuck x86 air: can if i want to :) i doubt anybody'll really care when available i use 4meg pages but i dont require them yer just fscking all old computers yes anything earlier than a ppro. =( AlonzoTG: didnt i tell u to leave? *air* SHUT THE FUCK UP ASSHOLE!!! *air* SHUT THE FUCK UP ASSHOLE!!! *air* SHUT THE FUCK UP ASSHOLE!!! -:- lar2 [LarMan@dialup-209.245.142.9.SanJose1.Level3.net] has joined #tunes Dammit 08:20pm When ever my voice line rings my modem line disconnects! call waiting? -:- SignOff lar1: #TUNES (Ping timeout for lar1[dialup-209.245.132.73.SanJose1.Level3.net]) -:- lar2 is now known as lar1 -:- SignOff smkl: #TUNES (Ping timeout for smkl[glubimox.yok.utu.fi]) No, they are 2 totally seprate lines If the phone rings once, the modem makes the constant tone... like carrier intrupted or somting, and if it keeps ringing the modem just drops But if I pick the phone up before it rings ~4 times I am OK om air: intel advertising/propaganda ensures i don't have to worry about forsaking old computers -:- SignOff AlonzoTG: #TUNES (Have Nice Day :)) What does foresake mean? abandoning, of sorts and its forsake :) 08:30pm Hmm, that makes the phrase 'the future is forsaken' confusing... how can one abandon what has not yet occured? it does not mean that verbatim.... the "future is abandoned"... lemme find a good definition :) Would that mean the person saying that has an apathetic view? www.dictionary.com: forsake the "future is forsaken" is not entirely correct it sounds funny to me :) but i guess it could mean abandoned, barren, desolate, etc :) without hope It was on a commerical for the game forsaken atleast in that game but the phrasing is still awkward methinks Yes, it has to be taken figuritvly well, i think its just an incorrectly used word :) figurative speech sucks Why? because, its information hiding :) people aren't saying what they mean they're saying what they don't mean and you must second-guess what they mean such that there are many valid meanings many of which aren't what the speaker may intend thus gives rise to ambiguity :) Figurate speech is like a woman? figurative * lar1/#tunes can't spell.. besides its IRC ;) and no, i will not go so as low as to debase a large class of humanity i think gender is irrelevent 08:40pm I was just joking there are just as many men who commit the crime as women well its a serious subject :) I am all for gender irrevelence i don't see why figurative language is so highly prized It jives with many peoples imagination it doesn't convey any meaning nor does it have any outside the speaker's mind yet many people take it as conveying a specific meaning (i.e. my english teacher) and that any other interpretation is wrong which is perhaps the greater crime than figurative language itself Yes, that I do aggree with You are in HS? yes i.e. you can tell me to all code something :) but you'll get different implementations from each one s/me/people very similar to water's pet philosophy, contructivism :) the same concept means different things to different people Everything is relitive Including thought ya, relative to whatever context the action takes place er in which the action.... My english teacher is stupid... she tells us to "get quiet" and "get working" agg.... how can you get a concept? :) those are states.... you transition to them you don't just gobble them up Become quiet would be proper I belive yes... 08:50pm or be Oh, get this... she is gonna be a collage prefessor as you can be in a state :) Yah or estar * eihrul/#tunes wishes english had a separate word for representing state and qualities like spanish. Oh, and she almost locked her self out. And she uses the _dry erase_ eraser to clean a board that she soaked with windex... -:- Zhivago [brian@th.merddin.com.au] has joined #tunes heh Now, I would tell you her hair color, but I am afriad you would misinterpet it as a bias on my part ;) double heh I am not biased though, I know some smart blonds I treat everyone as equal (or at least try hard to) Zhivago: there? 09:00pm hmmm eihrul: Have anything to discuss? capability systems What are those? things just references local to a domain, basically domain/context/whatever Like a pointer? not quite.... more like a closure * lar1/#tunes just got lost although a pointer when complemented with virtual memory is basically a kind of capability 09:10pm Did you see the poop on 3Dwm?? nah, i'm happy with my 2d-wm But this is so... cool! Ohh I like this concept What is an n dimetional window manager? nevermind lar.brain.stupidCommentCounter++; 09:20pm * lar1/#tunes needs to test his switch but doesn't want too cause he is too nervous... I don't like holding 15 volts @ 14.5 amps o' potental with 2 little wires trying to his 2 small contacts oh crap now that i map each stack i lost the overflow/underflow buffers Heh crap fooey oh, talking sorry, was elsewhere Zhivago: i was wondering if you knew much about capability systems :) ok, i got it. i'll increase it to 2 page tables and add a dead page entry between each stack eihrul: a far bit, capability based seucrity is what I'm looking at myself Zhivago: i seem to remember you talking about something similar for your project air: hmm, well, you should have a dead-table at the top of each stack anyhow, for growth Zhivago: right now i'm trying to find a good way to implement capabilities in a /protected/ environment... :) -:- td [x@1Cust182.tnt3.wilmington.nc.da.uu.net] has joined #tunes ei: well, for vapour w'ere looking at non-forgable references ei: for your system, have the os map in a couple of pages read-only into the region i can't decide on how best to implement them though.... ei: and have the kenerl update them in order to provide caps ei: its a bit limited though, but should give the functionality. i've decided either to have the kernel map all capability tables into the shared kernel space ei: then reveal those pages on demand or allow the user to specify where in the address space and what page to put capabilities on ei: yeah, sounds like the usual approach ei: you don't need to have the caps tables visible at all but.... i don't necessarily like the latter because it limits a protection domain to atleast the size of an address space ei: you can just provide a syscall interface to query them but hard part is maintaining all the icky capability tables :) ei: hoever for efficiency being able to map in _an arnitrary_ process' caps table into your address space at an arbitrary address would be useful because they take up quite a bit of memory.... ei: then you could do quick lookup yourself which is why i pondered the latter solution because the capabilities would be truly local well, you get size limits that way, but its probably a reasonable solution Zhivago: i just want to reduce the amount of shared address space i use to map the capabilities in.... well, the thing is, you can scatter your caps as well a caps entry can be along the lines of 'scatter'? [pid, cap, value] which can be just 3 32 bit integers for example i'm trying to reduce the size of capabilities though 09:40pm since every object in the system (including mapped pages, ect) well, that takes a cap down to 96 bytes needs a capability and say, 96 bytes, for every page is expensive :) yaeh, well, that's why I use the address of an object as capabilities. yes, but how do you control who can see the object? :) since an address is kinda global that's the whole point of capabilities well, the point is that you can't see anything but objects * lar1/#tunes decieds to test switch but then chickens out which means that you need to be given a pointer to the object in order to use it eihrul: you could look toward a probabilistic caps solution eihrul: use, say, physical memory addresses as caps well, that's almost another idea i had eihrul: but penalise invalid caps excessively map kernel object into user specified pages eihrul: which means that they _might_ guess a cap, but it should take them a long time to do so there is a drawback in that physical memory addresses for some structures are probably highly predictable well, i'd like it to be secure :) not just mostly secure ok, well, the first thing to do is to work out exactly what a Capability means to you its just that would make object allocation more fragmented because i use a slab allocator there are a couple of ways to use caps based ideas a capability is a reference to an object local to a protection domain... or rather only accessable so far as i desire to use it hmm, I'm not sure I undersatnd what do you mean by local to a protection domain? only visible :) or only acessable protection domain being those things that can view it so the cap doesn't give the ability to view something? you might want to give an example of a cap in your system as you envision it the cap gives the ability to view something but to a specific domain okay, simple example: you have a few contexts of execution that belong to domain A, and a few contexts of execution that belong to domain B you have a given page, and a capability for anyone in domain A to map that page into an address space visible to them anyone in domain B can't map the page because it isn't visible to them ok, so a capability lets you map pages more than that... it determines whether you can use any kernel object this was just an example with a specific kernel object (a page of memory) here a page being akernel object? ok where do you get capabilities from? 09:50pm you mean how do you create them in the system? well, more how does A give B a cap when an object is created initially a capability is granted to the domain in which it was created how are caps transferred? a specific capability is held by some other domain that allows it to manage a certain target domain anyone holding said capability can give away capabilities or clone them to some other domain they have access to ok, well, it sounds like you can just have [id, cap, kind] tripplets in a protected page that's what i have so far :) but they are not cheap and have the application manage how it stores these things itself why not? well, every mapped page in the same needs one :) so they have to be size minimal er in the system hmm, do you need a cap for a page that's already mapped to you? a capability represents the right to map a page er atleast wrt to a page yes, but that's for a _particular_ page I should be able to simply request for a general page to be mapped to me, without a cap ie, to get a new blank page in which case I only need caps in order to get a specific page (ie to share it off someone else) well, i guess.... which should short circuit that problem nicely, since these should be rare i was thinking the creator merely gets a capability for that domain and doing what you say requirs special cases in the code :) yeah, or a capability for a page constructor for that domain hmm, I'm not sure that it does how do you vent pages? er vend well, that's under fire right now :) also, i'm trying to figure out how to easily destroy a domain oh, well, I was assuming that you jus had a cap to a kernel object which vended pages into your space since when a domain is destroyed... all such capabilities [id, *, *] must be destroyed well, not necessarily, but they do become useless anyhow if you hav ea table of tripples then you can just walk though it and zap them by id but that can be a long and exhaustive process to just scan through a big table of them welll you can do that in daed time looking for a certain id i don't think there's too much dead time in the system :) and in cases where there aren't there almost always is, assuming that you're dealing with io you run the risk of exhausting capabilities however, remember hta tyou have4 billion ids to cycle though not necessarily that means i have to keep a hash table of domains :) hash tables are not very fun to manage just means you need to keep a list of domains-to-be-collected the id is just a pointer to the domain's record and you can just walk though and find the first applicable entry, and then replace that hmm, fair enough i pondering a linked list of capabilities within a domain but things get fairly complex and expensive at that point 10:00pm hmm, all of these things are why I moved toward a non-forgable reference system define such :) well, a reference is a pointer that necessarily refers to a legal object they're non-forgable, because you cannot create a reference, only assign the value of a reference to a variable which bypasses all of your problems nicely I need no tables but that requires language support well, this is true :) -:- hcf [nef@me-portland-us321.javanet.com] has joined #tunes Zhivago: i might as well make a totally insecure exokernel, then plop a secure language on top of it :) might as well ditch the kernel alltogether :) which is basically the line I went down well, insecurity removes any protection rings its value is in multiplexing things at that point yes, a good thing again :) so you can have many language personalities :) well, you don't need a kernel for that its not so much a kernel as an executive library :) yes maybe i'll just make SmalltalkOS already :) 10:10pm but that's already been done twice over hahahaha thrice if you count brix kiss my but butt -:- SignOff lar1: #TUNES (Ping timeout for lar1[dialup-209.245.142.9.SanJose1.Level3.net]) i told u that u would see the light afaik, i've been seeing light so long as i could see I don't think brix counts as a smalltalk os :) sure, but its a wannabe smalltalk os I'm not sure what brix is actually looks a bit like an off-the-shelf microkernel hrmm, maybe i will make smalltalk OS :) Zhivago: my kernel has a single address space Zhivago: it has no checking in the syscalls air: most kernels have a single address space abi: brix? brix is probably at http://www.qzx.com/brix or not unique * hcf/#tunes points at the 'not unique' part :P whatever hmm, what's the not unique part about? Zhivago: hcf being a prick oh well, I'm intersting in finding out what brix is doing that's different since I can't see anything obvious. well for one it has no processes everything is like a library call s/call/function/ ok 10:20pm so u can tweak it better u piece together code to make bigger stuff and u can swap out any function with another function of yer choice so, what is security provided by? the language ok, so its a secure language system ya what kind of language? my own heh, that's not a kind ya it is :) it looks like logo sorta or lisp without () hmm, lisp without () sounds like backward forth or logo exactly ugh :) do you have a compiler? i have a parser and a compiler book im looking at porting qlogo it has a vm and compiler fair enough we have a working native low-level lisp compiler really? but it still requires significant work air: yeah, I can give you an example program compiled by it it compiles to machine? air: it is still somewhat primitive, I'm working on raising instructions to the call level yes, it compiles to x86 machine code at the moment who else is working with u? well, there's demoncrat, and aly, and voidptr, but most of us are busy on paying work at the moment so progress is slow. hmm, strange heh http://203.21.132.200/vapour should have them there now beer.elf, and beer.x86b 10:30pm the first is a linux x86 elf bin, the second is an x86 boot-image of the same program what does it do? prints out a song about beer :) not very exciting why are u making bootable and elf binaries? shouldnt u be making binaries that run inside a bootable OS? Zhivago: gonna add the src to http://www.ionet.net/~timtroyr/funhouse/beer.html? hcf: no :) this is just a test program air: in this sytem there is no inside. air: those binaries are the os. just not a very interesting one :) if i have a C function how do i make it compile to a flat binary? i dont use any libs air: depends on the system, and what you mean by flat binary can gcc do that depends on what 'flat binary' means u dont know what it means? there are any number of things which it could refer to if you mean a raw binary image, then yes ya raw binary ld -oformat binary c.o -o c is there anything i have to do in the code no, but you'll find that global variables will not fare well 10:40pm do u know how the first local variable, say its an int, is accessed in asm? [ebp-+ what] use gcc -E to dump the produced asm it depends on the optimisation level well if it was doing no optimization er gcc -S I mean, not -E well, write some code, and check the produced asm in a brix thread the first local variable is at [ebp-4] in vapour we don't have a standard layout maybe ill just code the language in asm we pass though random registers, or spills ah crap, i think qlogo uses bytecode and not binary like the page suggests 10:50pm anyhow, we're a fair way of self-hosting the compiler which is the critical step I need to get these instructions raised soon though what instructions? hmm, machine-code instructions how do u do machine code? do u translate to asm and then to machine oh, we have a lisp assembly form but we're looking at raising that into te lisp level so that we can just say (let ((a (register %eax)) (b (register %ebx))) (mov a b) ... ) for a silly example. but do u translate the lisp to asm and use an assembler or do u translate directly to machine? well, we have a lispy asm form at the moment and it assembles them into machine-code yer lispy asm form is no different than inline asm in C but since this is part of the same program as the compiler... but C translates to asm and has gas assemble it air: that's why I'm raising the instructions see the above example. oh u have no lisp commands right now? um, what? yer not making yer self clear 11:00pm ok, at the moment we have a system of primitive operations which are defined at the assembly lelve what I'm doing is to raise the instructions to the level of functions so that they're directly callable, like any other function so u have a lisp compiler with inline asm and no lisp right? like u dont have an IF and WHILE or the lisp versions of those um, I have primitives at the moment if, and while are not at a primitive level, but + - * / fetch-word store-word are if/while control flow I'm looking to replace the primitives though with direct calls to instructions but this will require the register-allocator to be clever, etc. im gonna start out with a simple compiler that keeps everything stored on the stack and plugs data into chunks of machine code fair enough 11:10pm we want to make function calls as cheap as possible well the key is to rush something that works to market, get ppls money for stuff still in developement (like beos) and then u can have money to quit yer day job and optimize the os but yer goal is not to make lots of money just enuf to live on long enuf to destroy M$ 11:20pm damn, i shoulda stuck with mapping all stacks into the same spot. too much to debug now re well, I don't intend to sell it so its not a priority and I dont' see myself competing effectively with linux let along M$ so that's not a concern either but I do see myself using such an os for various money making ventures especially secure servers, embedded systems, etc hmm, I thought you only had one address space. i do then how can you map stacks to the same address? each thread has its own stack and when the scheduler switches threads it maps the current threads stack to 0x181000 hmm, I'm not sure why this is a useful thing? i didnt have to allocate memory for a page table to map the stacks to :) 11:30pm but it was costing me 30 cycles to invalidate the tlb entry well, um, why not just scatter stacks though memory? well its fixed now which will cost nothing i just have to debug it for some strange reason its crashing hard when it gets an irq nasty well, I'm off, I'll see if I can get something done on vapour tonight although I have commercial work I should do instead :) cya heh 11:40pm ahh brix works again and its 0.003% faster now * eihrul/#tunes ponders why that's important. 11:50pm cuz now im adding my parser to it and in a few days brix will have its own language and you'll have reinvented SqueakOS whatever [msg(TUNES)] newlog 1999.1104 IRC log ended Thu Nov 4 00:00:01 1999