**** BEGIN LOGGING AT Sun Feb 11 13:17:12 2001 13:17:12 --> RobertFitzsimons (bob@194.125.56.12) has joined #jos 13:17:12 --- Topic for #jos is JOS - The Java Operating System (http://www.jos.org) 13:17:12 --- Topic for #jos set by jewel at Sun Feb 11 10:28:44 2001 13:17:27 Hi John. 14:01:26 hey 14:03:38 How's it going? 14:04:05 Quite well, I'm glad you're here I need some help with all the locking stuff 14:04:26 I hope all is well with you? 14:05:27 Yeah, I'm ok. 14:06:29 Are you at work now? 14:06:55 Yes. 14:07:55 I've been writing a lock suitable for the kernel build of teaseme 14:08:11 It's a recursive mutex that depends on a simpler lock (I'm thinking kspinlock) 14:11:52 Ok, what is this lock going to be used for in the teaseme? 14:12:36 The lock I'm writing will be used to implement Java monitors 14:12:46 It will also be used to lock internal teaseme structures 14:13:52 It will also require a mechanism to put a thread to sleep and reawaken it 14:16:29 I did write kmutex_lock and kmutex_unlock already which will yield if it can't get the lock. 14:16:58 Ah, excellent, so I don't have to implement that 14:16:58 kthread_sleep doesn't work yet. 14:17:52 Can you send me the code for that ? 14:18:18 Yes, I'll send it now. 14:19:52 Thanks 14:26:34 Ok, I've sent it now. 14:26:50 ok, got it 14:28:58 It shouldn't be too long before dynamic loading of a JVM is supported. I changed startup code to allow the loading of Grub modules but I can't jump to them yet. 14:31:10 Cool 14:31:32 How does that work, where does grub put everything in memory? 14:32:59 Grub gives a pointer to a data structure which contains the location, all I do with that information is set the memory as allocated so the VMM wont over write it. 14:33:19 The code is in init.c. 14:33:54 So one pointer per module? 14:36:10 Basically, the hard part will be figuring out which is the correct module to load, I will proably do something like grub does (have a header in the module). 14:38:08 And then how does the code for the module get it's jump targets adjusted / link to external symbols? 14:39:14 I'm sure yet, I'm going to look into it. 14:42:22 I need to borrow some the RJK code for the linux kernel bulid 14:42:46 (The atomic routines etc) 14:43:13 Do you think I should just copy it, or should we build a little library? 14:46:40 Which every way you want to do it, the code will be release under the GPL license. 14:47:54 of course, I've noticed that a lot of projects put a header at the top of each source file specifying what the license is 14:48:04 I think we should do this for RJK / teaseme etc 14:48:44 Yes, that's the plan for RJK. 14:49:28 Before I release I'm going to get my employer to sign a release on my code first. 14:51:11 Smart move 14:51:53 I just have to get around to doing something about it. ;) 14:53:28 Is your employer well-disposed to such things? (You writing public domain code) 14:56:11 I think so, but I don't think there will be a problem with it. 15:26:48 * jewel_ reboots the development box 15:35:27 * RobertFitzsimons goes to get some food. 16:14:02 * jewel_ is going to leave soon 16:14:33 Is there anything you would like me to work on in RJK? 16:14:53 * jewel_ thinks 16:15:20 Other then dynamic loading. 16:15:34 Um, not really 16:16:02 I don't know if you have, but it would be useful if you could test the locking and threads in RJK before we start porting teaseme 16:17:24 There currently being used by the kernel, but I'll do a bit more testing on them. 16:17:26 We should also have a chat (including Quinn) about how we're going to feed interrupts to the java code 16:18:11 I think we should use the real time spec for Java for this. 16:18:23 I'm going to be busy for an hour or two or three, but will come back to fix up the kernel build (segfaulting) 16:18:28 what is the real-time spe? 16:19:43 I belive Sun has a real-time spec for applications that require it, I don't know where the spec is I'll have to look for it. 16:20:29 ok 16:20:33 I'm looking on google 16:22:15 http://java.sun.com/aboutJava/communityprocess/jsr/jsr_001_real_time.html 16:22:23 Yes, that's the one. 16:26:48 http://www.javaseries.com/rtj.pdf 16:28:27 I have to download a pdf reader for Linux 5.5Mb. :( 16:28:47 Don't you have gv? 16:30:07 Doesn't look like it. 16:30:19 ... like I have it... 16:30:48 I was reading some news articles aobut the playstation 2 and 3 today 16:31:06 i was thinking that a port of JOS to a device like that would be really really cool 16:32:00 Yeah, I was thinking of porting RJK to my Agenda PDA next. :) 16:33:10 what is that? 16:33:48 http://www.agendacomputing.com/ 16:34:44 I tried evolution for the first time today 16:35:58 what is this agenda thing, what CPU does it have? Does it have infrared ? 16:37:51 It's a Linux Personal Digital Assistant with a MIPS processor, 16 Mb flash, 8 Mb Ram. Yes it's got infrared. 16:38:50 Does gcc compile to the NEC chipn? 16:39:16 what does it cost? 16:39:39 Yes, the GNU tools work, gcc, bintuils, etc. 16:40:10 You can get a dev unit for about 180 USD. 16:40:24 have you tried evolution? 16:40:48 No not yet, is that something to do with Gnome? 16:42:04 Yes, it's a helix gnome application, it's basically what Outlook is 16:42:16 Does email, contacts, calendar, scheduling etc 16:42:47 But how would you run new code on the agenda? Does it boot off flash rom? 16:43:04 Oh, yes I remember it now, I haven't used it before. 16:43:44 The developer units are only flash ram so you can load you own OS onto it. 16:43:54 super cool 16:44:06 the other's are ROM? they're cheaper? 16:44:41 No ROM units yet, but they should be cheaper. 16:45:56 Can you view that pdf? 16:46:03 How do you like it? 16:48:20 --> _Quinn (mysql@165-82-84-50.students.haverford.edu) has joined #jos 16:48:36 Ah I had to install gs-pdfencrypt and can see it now 16:48:38 hey _Quinn 16:49:00 <-- _Quinn has quit (Leaving) 16:49:26 --> _Quinn (mysql@165-82-84-50.students.haverford.edu) has joined #jos 16:49:36 _Quinn: http://www.javaseries.com/rtj.pdf 16:49:37 Yes, that's why I had to download 5.5 Mb. I'm now getting gv aswell. 16:49:39 * _Quinn wonders about ircii flaking out. 16:49:50 * jewel_ uses irssi 16:49:52 <_Quinn> jewel -- sorry, missed the first part of that. 16:50:03 <_Quinn> real-time-java? 16:51:13 yes 16:51:19 Yes, we might be able to use it for interrupts, etc. 16:51:19 dead-cat meeting ? 16:51:25 <_Quinn> ah. 16:51:31 <_Quinn> dead-cat? 16:52:05 it's in the doc :-) 16:52:12 <_Quinn> Ok :) 16:52:23 It doesn't seem to mention interrupts, let me see about exceptions ... 16:52:39 <_Quinn> How long will you two be here? I need to shower and eat soon. 16:52:58 Yeah check p28 16:53:07 I'm going to leave soon, maybe be back in 1 or 2 hours 16:53:24 <_Quinn> OK, that sounds good to me. I'll try to read the rtj.pdf by then. 16:54:03 I'm going to be here. 16:54:24 .. here for a few more hours. 16:54:56 Check the raw memory access on p32 16:55:31 see you guys later 16:55:38 <_Quinn> OK 16:55:45 <-- _Quinn has quit (Leaving) 16:58:45 <-- jewel_ has quit (Ping timeout for jewel_[pta-dial-196-31-186-205.mweb.co.za]) 17:51:59 --> _Quinn (tmiller@165-82-84-50.students.haverford.edu) has joined #jos 17:52:11 WB 17:52:20 <_Quinn> Good to be back :) 17:52:54 <_Quinn> Except that xpdf doesn't read encrypted PDFs. 17:53:03 <_Quinn> I think I need a new version... 17:54:27 You need to get acroread or gv with encrypt support. 17:54:51 xpdf doesn't have support for encrypted PDF's. 17:55:35 <_Quinn> As of 0.91, it's supposed to (according to foolabs.com/xpdf) 17:55:39 <_Quinn> we'll see :) 17:56:01 Ok, maybe. :) 17:58:51 * _Quinn goes merrily compiling 18:13:53 <_Quinn> I'll bbiab. 18:13:54 <-- _Quinn has quit (Leaving) 18:36:27 --> jewel (jewel@pta-dial-196-31-185-165.mweb.co.za) has joined #jos 18:36:57 Hi 18:37:07 is todd gone? 18:38:16 He was back in about half an hour ago, he said he'd be back "<_Quinn> I'll bbiab.". 18:38:40 What do you use your agenda for? 18:39:43 At the moment not much, it's still in beta stage. 18:40:03 I've got some notes and stuff in it. 18:40:20 But how do you enter any data without a keyboard? 18:42:24 It's got hand writing recognition software, and an on-screen keyboard. 18:45:37 wow, is it easy to enter data? 18:46:32 It's not that easy, but there is work being done to improve it. 18:47:16 Cool, and what desktop software does it interface with? 18:49:33 None yet, but there are plans for outlook support, etc. Also you can use ppp and rsync if you like. 18:52:16 But then you can only copy raw files 18:53:07 Yes, for the moment. 18:53:39 Cool, I suppose it's easiest to buy in the US 18:54:25 Do you think we could run a JVM in 8MB? 18:54:33 That were I got it but you can get it through Europe. 18:55:29 The Sony emotion-2 has something like 256MB dram on the chip 18:55:40 Sure, 8Mb no problem if you cut down on the class libraries. 18:56:57 We should think about it, we already have the linux kernel module, they've written a graphical library 18:57:21 we still need to write code to access the network interfaces though 18:59:06 Current teaseme might be a bit tight (remember my tests with the 8MB laptop), but we can work on it. 19:01:48 Yep, but currently we have little control over memory 19:02:06 The heap has to be about 1MB, although we could live with 0.5 MB 19:02:22 And the class structures just eat kernel memory and never get free'ed 19:02:28 I assume there's no swap on the device? 19:03:51 No, and there is only about 3MB ram free in normal mode. But if we had a custom kernel, etc we could get more. 19:26:19 --> _Quinn (tmiller@165-82-84-50.students.haverford.edu) has joined #jos 19:26:44 Wb again. ;) 19:26:45 <_Quinn> Sorry I took so long, guys, but I accidentally nuked X while diddling around with truetype fonts for xpdf. 19:27:02 wb _Quinn 19:27:07 hehe 19:27:12 why don't you use gv? 19:27:56 <_Quinn> because gv bombs on encrypted pdfs also :) 19:28:31 not if you install the other stuff (there is a debian pkg for it) 19:28:37 <_Quinn> shrug :) 19:30:00 RobertFitzsimons and I were discussing his little Agenda PDA and the possibilities of running Java on it 19:30:29 * _Quinn nods 19:30:58 I think with 16MB it would be cool, are there any plans to expand it? 19:31:58 Actualy the best (geek) thing about it is that it is a really linux system, you can telnet into it, nfs mount, remote X session, etc. 19:32:29 yeah, I see it can do routing, ppp and all that stuff too 19:32:44 I don't think there are any plan for the VR3 version, but the next one should have more. 19:44:23 <_Quinn> jewel, I was wondering about classpath and teaseme 19:44:36 <_Quinn> How much of classpath did you have to change to get it to work? 19:45:28 <_Quinn> We don't really have the manpower to maintain our own copy of it, and merging their changes in could be painful... 19:45:44 <_Quinn> You did your work on the native side of things? 19:47:45 To get classpath to work with kissme required quite a few changes 19:48:06 There was a problem with their exception-handling and trace mechanisms which i had to change 19:48:20 But this has change in classpath 0.02, so I don't know if it will be easier now 19:48:58 On the native side it's pretty much unchanged for kissme, but for teaseme I had to rip out all the user-side code 19:49:10 <_Quinn> Well, I guess we don't have to worry about upgrading until we find a problem with the version we've got now; I was just recalling the vm/ directory in classpath -- 19:49:27 <_Quinn> -- how much that could cover of what needs to happen. 19:49:39 The changes aren't that dramatic, they only affect a few files 19:49:51 The problem is that classpath keeps adding native methods to some of the core classes 19:49:59 <_Quinn> ah :) 19:50:11 Then I have to implement these to catch up, which is why I haven't kept current with the CP releases 19:50:58 <_Quinn> Could you -- this is speculative question -- wrap the equivalent kernel calls in user-space replacements and compile classpath's tree w/o -lc? 19:51:05 But they were probably just missing from earlier core classes, and are part of the JDK (or a new version of the JDK) 19:51:37 No, you can't make kernel calls from within the kernel 19:51:57 Many of the structures used by libc don't exist in kernel-space 19:52:51 <_Quinn> OK. I guess I'll just have to compare the classpath version and your version and see what I'm not getting. 19:53:04 Oh you mean the other way round? 19:53:55 Basically, when classpath does things like fopen, or even open(), fread, read, write etc 19:54:11 we have to make a fairly complex wrapper which uses kernel structures 19:54:18 <_Quinn> I was thinking about the way JJOS/decaf worked, which was to provide a 'fake' libc that used 'kernel' calls/code. 19:54:27 this means changing a fair amount of the classpath native code 19:55:31 <_Quinn> I was thinking maybe you could move all those wrappers out of the classpath tree, so we can just automagically suck up their updates. 19:55:55 <_Quinn> But I don't which one is easier -- doing the updates by hand, or moving the wrappers outside (maintaining a subset of libc). 19:56:18 <_Quinn> But like I said earlier, this isn't a big issue for now 19:56:35 A lot Classpath isn't going to work very well when we have a native build, i.e. when we have our own kernel, jvm, drivers. 19:56:46 --> jewel_ (jewel@pta-dial-196-31-185-165.mweb.co.za) has joined #jos 19:57:14 * _Quinn shrugs 19:57:22 server dropped me 19:57:24 _Quinn> I was thinking maybe you could move all those wrappers out of the classpath tree, so we can just automagically suck up their updates. 19:57:24 <_Quinn> But I don't which one is easier -- doing the updates by hand, or moving the wrappers outside (maintaining a subset of libc). 19:57:24 <_Quinn> But like I said earlier, this isn't a big issue for now 19:57:24 A lot Classpath isn't going to work very well when we have a native build, i.e. when we have our own kernel, jvm, drivers. 19:57:41 <_Quinn> I really don't know; I haven't looked closely enough at classpath. 19:57:42 <-- jewel has quit (Ping timeout for jewel[pta-dial-196-31-185-165.mweb.co.za]) 19:58:18 <_Quinn> It's just that a class library is a big enough project that even GNU is having a hard time with it, so we certianly don't have the manpower. 19:58:28 what is significant is that there is as little native code in classpath as possible 19:58:46 At least the pure Java part should be ok (I hope). 19:58:47 we also only depend on a subset of that (java.io / java.lang) 19:59:14 <_Quinn> jewel -- at some point, we'll want everything that's not pure java. 19:59:22 later we will have higher level java code doing the equivalent of what the java.io native code does now (ie open files, read/write to them, seek them etc) 19:59:22 <_Quinn> (the pure java bits people can get from sun, et. al.) 20:00:09 so I think it would be a waste to spend effort on integrating with that native code when ultimately we're not going to use it 20:00:27 <_Quinn> duh! 20:00:32 * _Quinn slaps himself in the head 20:00:38 <_Quinn> OK, I get what you're talking about now. 20:01:02 <_Quinn> We'll be rewriting everything below the class library level anyway, right... 20:01:19 I was reading a book I have the other day, Practical file system design with BeFS 20:01:31 Have you guys heard/read anything about BeFS? 20:01:49 <_Quinn> ... dispatching native calls from that library via BCNI, I guess... 20:01:51 <_Quinn> Nope. 20:03:52 Well it's a modern FS with some cool concepts 20:03:52 It's a journalling fs, they call it 64-bit because it supports huge files and partitions 20:03:52 In addition to that it supports extended attributes 20:03:52 This makes it more like a database than the traditional FS'es 20:04:07 --> jewel (jewel@pta-dial-196-31-185-165.mweb.co.za) has joined #jos 20:04:25 You can build indices on these attributes, making for very fast querying of info about files 20:04:45 it allows applications to use the FS for storage instead of some other mechanism 20:05:04 For example email can be stored in the FS, with attributes for the From, To, Subject headers etc 20:05:32 You can also establish persistent queries which are updated whenever the data they are watching changes 20:06:12 <_Quinn> Interesting... 20:06:22 Anyway, I was reading about the design of the v-nodes and the way different filesystems are managed in one namespace 20:06:44 <_Quinn> BeFS for linux? :) 20:06:52 <-- jewel_ has quit (Ping timeout for jewel_[pta-dial-196-31-185-165.mweb.co.za]) 20:07:03 Which is why I say that we won't be needing the java.io native code eventually 20:08:04 There is some befs attempt for linux 20:08:10 Don't know how far it got 20:08:33 <_Quinn> right. 20:13:34 We should just implement ext2 and fat first and let some else do the rest, we can get around to the other when we have a full running system. 20:13:47 <_Quinn> Yup. 20:14:01 of course 20:14:12 even implementing those two is a massive task 20:14:45 I think we could write the java VFS structure, but just have the native linux implementation underneath 20:14:48 as a starting point 20:14:58 <_Quinn> Of course, we should sit on filesystem drivers for a while yet. 20:15:07 <_Quinn> (In some fashion or another.) 20:15:20 <_Quinn> Until we'll sure that our architecture is ready. 20:15:41 <_Quinn> or s/architecture/design, s/ready/good 20:16:25 What does this error mean: storage class specified for parameter `kint' 20:16:48 What we should be thinking about is do we want to continue with teaseme on Linux or teaseme on RJK? 20:17:17 Personally I think both 20:17:38 The type kint isn't defined, look in kimplementation.h. 20:18:16 I was thinking to save effort just port the kinterface to the Linux kernel. 20:18:16 doesn't kinterface include kimplementation.h ? 20:18:27 yes, I was thinking the same 20:18:31 <_Quinn> Having another kernel couldn't hurt, but I would prefer it if teaseme on Linux weren't 'held back' by compabality with RJK. 20:19:01 It should, is that the only error? 20:20:26 I don't think it will be held back 20:20:41 Rather some features just won't be available on RJK (as it is now with user-mode) 20:20:42 RJK should have most if not all the features required within the next few weeks, the only disadvanage I can see having to reboot instead of insmod/rmmod. 20:20:57 RobertFitzsimons: there is another error above which I'm looking at now 20:21:19 RobertFitzsimons: and the FS support, although we don't write to the FS yet in teaseme 20:21:54 Quinn, would you like a copy of the lastest version of RJK? 20:23:14 <_Quinn> Sure. 20:23:43 <_Quinn> Well, having to reboot and not having any fs write abilites could be an advantage for certain kinds of debugging :) 20:24:00 But we can have Grub load a FS type image into memory that we can use. 20:25:56 Or write a Java memfs or something 20:26:37 I find the best way to do testing with RJK is with bochs, read the kernel from a floppy image and setting break points etc. 20:29:49 Building gcc -c -D__KERNEL__ -DMODULE -O -Wall -DKISSME_LINUX_KERNEL -c -I/usr/src/linux/include -I. -Ivm ./vm/sys_linux_kernel/locks.c -o ./vm/sys_linux_kernel/locks.o 20:29:51 In file included from kinterface.h:8, 20:29:53 from ./vm/sys_linux_kernel/locks.c:7: 20:29:56 kimplementation.h: In function `sys_mutex_create_inplace': 20:29:57 kimplementation.h:12: storage class specified for parameter `kint' 20:32:58 I email the source to you Quinn. 20:33:28 * _Quinn scurries over to his email 20:33:30 why am I getting the error? 20:33:39 I'm not sure. 20:34:51 I'm confused by "storage class specified" 20:35:19 Is there something wrong with this "typedef signed long int kint;"? 20:36:38 <_Quinn> OK, well egcs likes it just fine. 20:37:17 yes it worked with me before (and I can compile RJK standalone no problem) 20:37:25 <_Quinn> And so does gcc-2.95.2 20:37:54 i wonder what is conflicting ... 20:37:54 <_Quinn> Oh... how do I do the combo-build/ 20:38:04 <_Quinn> er, s\/\?\ 20:40:37 Is that vaild C or C++ code? 20:41:26 The "typedef ... " ? 20:41:29 Yes. 20:41:31 or my code ? 20:41:36 Yes it is 20:42:32 Ok I'm compiling successfully now 20:42:43 <_Quinn> Is it a single floppy I'm supposed to be making for RJK? 20:43:20 Yes. 20:43:48 It's just a fat formated/grub bootable disk image. 20:44:19 Jewel, what did you change? 20:44:23 <_Quinn> oh! 20:44:31 <_Quinn> So I un-gz first, then? 20:44:36 Yes. 20:44:40 <_Quinn> OK, thanks :) 20:45:48 I was trying to declare a structure that had a kuint in it 20:46:05 And was then using that structure in prototypes for functions in headers 20:46:10 Somehow this caused a lot of problems 20:46:51 Maybe you were using in before it was declared? 20:48:28 <_Quinn> RF: what does the boot floppy do (now that I've got set up)? 20:48:56 RobertFitzsimons: I think i was, the header dependencies were quite complex 20:51:08 * jewel bounces the box 20:51:37 Grub will load a file called kernel.elf, then the kernel will set it's self, up start two threads which will print some text, and loop forever. 20:51:48 <_Quinn> OK. Did you want me to try it out? 20:52:42 It's up to you. If you have a second computer give it a good, if not you should problaly leave it until later. 20:53:34 I've tried it on a few different types of computer without any problems. 20:55:23 <_Quinn> Well, it worked on my laptop :) 20:59:23 * jewel builds teaseme 21:04:17 * jewel builds teaseme again 21:10:33 * jewel bounces the box 21:14:08 <_Quinn> Do either of you know much about HTTP? 21:14:25 a little bit 21:14:37 * jewel blasphemes when he discovers his favourite tea has run out 21:15:00 A bit, I've read the RFC docs, etc. 21:15:01 <_Quinn> the 'Location' header will cause the browser to stop loading the current page and get the new one, right? 21:15:41 Urm, I remember something like that, it has a timeout too 21:16:00 But does that have to do with http or html? 21:16:49 There is something like that in html, but I'm not sure about http. 21:16:53 <_Quinn> OK. Because I'm having this problem with authenticating a user with PHP -- I use the location header to redirect after they've posted a valid username/password, but the page that I direct them to won't recognize the stored auth. until it's reloaded. Which is just bizarre. 21:17:32 <_Quinn> Maybe it's legal not to propogate stuff atfter the '?'? 21:18:51 I'm not sure. 21:19:02 <_Quinn> Hmmm.... 21:19:16 * _Quinn will ponder this 21:23:31 * _Quinn has other things to do. see you around. 21:23:33 <-- _Quinn has quit (Leaving) 21:26:54 * jewel traces the segfault 21:37:53 * jewel realises how stupid C compilers are 21:42:28 * jewel performs self-flagellation when he realises what a silly mistake he's made 21:43:36 me learn't during the week that the problem is almost always with his new code. 21:45:01 yes, in this case too 21:45:13 but I copied the same code into two places and only debugged the first piece 21:46:16 What is the maximum pid in linux? 21:47:29 I think it's 32768. 21:48:03 It was only changed recently to use the full 32 bits. 21:49:20 Hah! No segfault 21:52:26 I was masking out the high two bits of the pid number in the thin lock word 21:52:37 The pid was 11000 something, so it was getting modified 21:55:14 but there's still another bug 21:55:19 I'll leave it for tomorrow 21:55:30 anything else you want to discuss before I go? 21:55:39 No not at the moment. 21:57:09 Ok, I borrowed another monitor to replace the one that died on my other box, so I'll try compile some stuff with RJK and see what happens 21:57:53 Yeah, I hope to work on dynamic loading over the next week. 21:58:17 It will be very exciting if we can get teaseme booting on RJK 21:59:14 It would boot using three different systems, Linux host, Linux kernel and RJK, that would be cool. 21:59:46 yes, it gives a lot of scope for debugging (different environments == stressing the code in different ways) 22:00:35 and allows us to play with a variety of different things (RJK, raw hardware access, linux - already has routing and network stuff, userspace - good debugging and stable file and network support) 22:02:26 Yes, it would be great. 22:02:42 ok, see you later 22:02:46 Bye. 22:02:57 <-- jewel has quit (sleeping) 22:37:13 --- You have left channel #jos **** ENDING LOGGING AT Sun Feb 11 22:37:13 2001