From: Jeff D. <jd...@ka...> - 2000-01-13 02:34:11
|
ced...@in... said: > Actually, I wondered too if uml could be ported to Windows NT, but > after just running strace on uml-linux, I still don't understand > perfectly how it works :-) Really? I don't know what more information you could ask for :-) Actually, you only straced the input thread, which probably the least interesting thread in the whole thing. It just sits in a select waiting for input on file descriptors that the other threads think are interesting and sending it to them > Did you post some information about it somewhere (kernel list, > newsgroup) ? I had some lame information on my old web site, but it got out of date pretty quickly. I'm much better at writing code than writing down explanations of it (or at least much more interested) :-( And if any of the slackers out there are interested in doing something useful, and can write this stuff up by reading sketchy explanations from me and the code, I'd be happy to put the results up on the web site... > Ok, a quick look at /proc/*/maps, shows that maybe you allocated a > file for the physical memory and mmaped it at the right places in each > thread (this is how I suggested to make a user-space freemware, using > also a main process that ptraces another to catch exceptions, software > interrupts, emulate specific instructions... and setting the proper > memory map at each context switch). Right, except that big chunk at 0x50000000 also includes the kernel virtual memory. The "physical" memory gets mmaped appropriately into the kernel vm area and into process vm areas. > - NT debugging process receives an exception_event when you execute > an "int 0x80". I made a test program: parent+child, where the child > would execute an int 0x80, the parent would see this, get the eip > address, change the "int 0x80" to "nop ; nop", and have the child > going on. This works. Are you sure that the int 0x80 didn't execute? You nulled it out, but it kind of seems to me that you nulled it out after the fact. > - My Windows 98 locks instantly _sometimes_ when running the same > program executing "int 0x80". According to Lars, Win98 is a lost cause because of lack of mmap (or at least lack of it in the cygwin libraries). From what you've said, it looks like NT has everything needed. Go for it :-) Jeff |