Hi.

Jeff Bailey wrote:

Oskit doesn't currently claim to have SMP support - You've got a steep curve ahead of you.


True, but I at least have a working SMP box to test things on.


Would perhaps sponsor me and I will start seriously hacking away at
OSKit-Mach again?


Being an advocate for a Developper is an exercise where I'm stating
that I've done some work with you and beleive that you've generally
got what it takes to help further the project.  I haven't done any
working actively with you, so I don't feel comfortable sponsoring you.


Hey thats cool. This is not a speed event and I'm not in any hurry here but I have always used Debian and I just think I should get some kind of official status. I want to be part of the team an in return I will devote some extra time back to the project. I want you guys to know that my main interest is in Hurd, not Linux. As an engineer, Hurd has *all the right stuff* and Linux is just a bit too ephemeral for my likings.

Here is a debugging log I posted a while back to refresh your meory.

Script started on Sat Mar 9 01:37:33 2002
<1>(mirage)[/usr/src/gnu/hurd-20020103/oskit-mach/build]
# i686-linux-gdb GNU gdb 5.0
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=hppa1.1-unknown-linux-gnu --target=i686-linux".
(gdb) file kernel-ide Reading symbols from kernel-ide...done.
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
0x0013d570 in main (argc=172448, argv=0x0) at ../oskit/x86/main.c:90
90 }
(gdb) l
85 machine_slot[mycpu].cpu_type = CPU_TYPE_PENTIUMPRO;
86 break;
87 }
88 machine_slot[mycpu].cpu_subtype = CPU_SUBTYPE_AT386;
89 machine_slot[mycpu].is_cpu = TRUE;
90 }
91
92 int
93 main (int argc, char **argv)
94 {
(gdb) s
main (argc=2, argv=0x1000000) at ../oskit/x86/main.c:95
95 oskit_clientos_init ();
(gdb) n
97 printf ("Welcome to %s!\r\n", version);
(gdb) Welcome to GNUmach 1.2.91-OSKit!


102 picinit();
(gdb) 109 linear_base_va = -LINEAR_MIN_KERNEL_ADDRESS;
(gdb) 112 pmap_bootstrap();
(gdb) 123 kernel_page_dir[lin2pdenum(0)] =
(gdb) 125 paging_enable((oskit_addr_t) kernel_page_dir);
(gdb) 126 set_cr0 (get_cr0 () | CR0_WP);
(gdb) 128 if (base_cpuid.feature_flags & CPUF_PAGE_GLOBAL_EXT) {
(gdb) 136 set_cr4 (get_cr4 () | CR4_PGE);
(gdb) 142 base_gdt_init(); /* reinitialize with linear_base_va */
(gdb) 143 gdt_init();
(gdb) 144 idt_init();
(gdb) s
idt_init () at ../i386/i386/idt.c:33
33 gate_init(base_idt, idt_inittab, KERNEL_CS);
(gdb) gate_init (dest=0x1bf820, src=0x1a0350, entry_cs=16) at ../../kern/x86/gate_init.c:23
23 {
(gdb) 25 while (src->entrypoint)
(gdb) 27 fill_gate(&dest[src->vector], src->entrypoint,
(gdb) 210 {
(gdb) 211 gate->offset_low = offset & 0xffff;
(gdb) 212 gate->selector = selector;
(gdb) 213 gate->word_count = word_count;
(gdb) display  /i $pc
1: x/i $eip 0x157fe7 <gate_init+39>: movb $0x0,0x4(%eax)
(gdb) ni  si
214 gate->access = access | ACC_P;
1: x/i $eip 0x157feb <gate_init+43>: or $0x80,%cl
(gdb) 0x00157fee 214 gate->access = access | ACC_P;
1: x/i $eip 0x157fee <gate_init+46>: mov %cl,0x5(%eax)
(gdb) 215 gate->offset_high = (offset >> 16) & 0xffff;
1: x/i $eip 0x157ff1 <gate_init+49>: shr $0x10,%edx
(gdb) 0x00157ff4 215 gate->offset_high = (offset >> 16) & 0xffff;
1: x/i $eip 0x157ff4 <gate_init+52>: mov %dx,0x6(%eax)
(gdb) 29 src++;
1: x/i $eip 0x157ff8 <gate_init+56>: add $0x8,%ebx
(gdb) 30 }
1: x/i $eip 0x157ffb <gate_init+59>: cmpl $0x0,(%ebx)
(gdb) 0x00157ffe 30 }
1: x/i $eip 0x157ffe <gate_init+62>: jne 0x157fd4 <gate_init+20>
(gdb) 27 fill_gate(&dest[src->vector], src->entrypoint,
1: x/i $eip 0x157fd4 <gate_init+20>: movzwl 0x4(%ebx),%eax
(gdb) 210 {
1: x/i $eip 0x157fd8 <gate_init+24>: lea (%edi,%eax,8),%eax
(gdb) 0x00157fdb 210 {
1: x/i $eip 0x157fdb <gate_init+27>: mov (%ebx),%edx
(gdb) 0x00157fdd 210 {
1: x/i $eip 0x157fdd <gate_init+29>: mov 0x6(%ebx),%cl
(gdb) 211 gate->offset_low = offset & 0xffff;
1: x/i $eip 0x157fe0 <gate_init+32>: mov %dx,(%eax)
(gdb) bt full
#0 gate_init (dest=0x1bf820, src=0x1a0350, entry_cs=16) at ../../oskit/x86/seg.h:211
dest = (struct x86_gate *) 0x1bf820
src = (struct gate_init_entry *) 0x1a0358
entry_cs = 16
#1 0x00151dae in idt_init () at ../i386/i386/idt.c:33
No locals.
#2 0x0013d5fe in main (argc=2, argv=0x1000000) at ../oskit/x86/main.c:144
No locals.
#3 0x001577d2 in multiboot_main (boot_info_pa=172448) at ../../kern/x86/pc/base_multiboot_main.c:96
argc = 2
argv = (char **) 0x1000000
i = 1
(gdb) info reg
eax 0x1bf828 1833000
ecx 0xc00f 49167
edx 0x156094 1400980
ebx 0x1a0358 1704792
esp 0x1b5f5c 0x1b5f5c
ebp 0x1b5f68 0x1b5f68
esi 0x10 16
edi 0x1bf820 1832992
eip 0x157fe0 0x157fe0
eflags 0x10102 65794
cs 0x11 17
ss 0x19 25
ds 0x1b0018 1769496
es 0x150018 1376280
fs 0x150000 1376256
gs 0x1b0000 1769472
fctrl 0x0 0
fstat 0x0 0
ftag 0x0 0
fiseg 0x0 0
fioff 0x0 0
foseg 0x0 0
fooff 0x0 0
fop 0x0 0
xmm0 0x00000000000000000000000000000000
xmm1 0x00000000000000000000000000000000
xmm2 0x00000000000000000000000000000000
xmm3 0x00000000000000000000000000000000
xmm4 0x00000000000000000000000000000000
xmm5 0x00000000000000000000000000000000
xmm6 0x00000000000000000000000000000000
xmm7 0x00000000000000000000000000000000
mxcsr 0x0 0
(gdb) / x/40i
0x157fe3 <gate_init+35>: mov %si,0x2(%eax)
0x157fe7 <gate_init+39>: movb $0x0,0x4(%eax)
0x157feb <gate_init+43>: or $0x80,%cl
0x157fee <gate_init+46>: mov %cl,0x5(%eax)
0x157ff1 <gate_init+49>: shr $0x10,%edx
0x157ff4 <gate_init+52>: mov %dx,0x6(%eax)
0x157ff8 <gate_init+56>: add $0x8,%ebx
0x157ffb <gate_init+59>: cmpl $0x0,(%ebx)
0x157ffe <gate_init+62>: jne 0x157fd4 <gate_init+20>
0x158000 <gate_init+64>: pop %ebx
0x158001 <gate_init+65>: pop %esi
0x158002 <gate_init+66>: pop %edi
0x158003 <gate_init+67>: leave 0x158004 <gate_init+68>: ret 0x158005 <Letext>: lea 0x0(%esi,1),%esi
0x158009 <Letext+4>: lea 0x0(%edi,1),%edi
0x158010 <query>: push %ebp
0x158011 <query+1>: mov %esp,%ebp
0x158013 <query+3>: push %edi
0x158014 <query+4>: push %esi
0x158015 <query+5>: push %ebx
0x158016 <query+6>: mov 0x8(%ebp),%edx
0x158019 <query+9>: mov 0xc(%ebp),%eax
0x15801c <query+12>: mov 0x10(%ebp),%ebx
0x15801f <query+15>: mov %eax,%esi
0x158021 <query+17>: mov $0x1906a0,%edi
0x158026 <query+22>: mov $0x10,%ecx
0x15802b <query+27>: cld 0x15802c <query+28>: test $0x0,%al
0x15802e <query+30>: repz cmpsb %es:(%edi),%ds:(%esi)
0x158030 <query+32>: je 0x158045 <query+53>
0x158032 <query+34>: mov %eax,%esi
0x158034 <query+36>: mov $0x190720,%edi
0x158039 <query+41>: mov $0x10,%ecx
0x15803e <query+46>: cld 0x15803f <query+47>: test $0x0,%al
0x158041 <query+49>: repz cmpsb %es:(%edi),%ds:(%esi)
0x158043 <query+51>: jne 0x158050 <query+64>
0x158045 <query+53>: incl 0x4(%edx)
0x158048 <query+56>: mov %edx,(%ebx)
(gdb) l
206 /* Fill a gate with particular values. */
207 OSKIT_INLINE void
208 fill_gate(struct x86_gate *gate, unsigned offset, unsigned short selector,
209 unsigned char access, unsigned char word_count)
210 {
211 gate->offset_low = offset & 0xffff;
212 gate->selector = selector;
213 gate->word_count = word_count;
214 gate->access = access | ACC_P;
215 gate->offset_high = (offset >> 16) & 0xffff;
(gdb) si
Interrupted while waiting for the program.
Give up (and stop debugging it)? (y or n) y
(gdb) quit
<2>(mirage)[/usr/src/gnu/hurd-20020103/oskit-mach/build]
# 
Script done on Sat Mar 9 01:41:14 2002

... end of attachment.



Jeff Bailey wrote:
Further, being a developper is orthoganol to software development.  If
you have the skills to hack SMP support into OSKit-Mach, I would
rather see you focus your time on system stability.  Even having
someone provide quite detailed bug reports to Roland, Marcus et al.,
would probably go a long way to getting Gnumach 2 released.


Do I have the skills to hack SMP support? Probably not. I'm a degree'd Mechanical Engineer, not a computer scientist. Sure I can solve differential equations in my head, and I probably know enough high end calculus that I'm not very human anymore, but I am not (yet) a complete CPU expert. I have written assembly programs, am plenty comfortable with C/C++ and I can slowly glean info from debugging logs and such, but I'm no Linus.

But I'm also a self proclaimed Debian wizard. I just hit this point a
few months back where it all clicked into place. Debian holds no mysteries
for me anymore. ...And I'm not likely to abandon it anytime soon.


I have already built an Arm -> X86 GDB serial cross debugger so I
can use my Netwinder to debug a running OSKit-Mach kernel and it
works nice.


Very cool.


I'd be happy to help out but I really think you should
upgrade me to a real developer.


Do you mean like Debian developer, or Hurd developer?  If you mean
Debian developper, your talent is wasted if you have the skills to fix
core Hurd problems.  If you mean Hurd developer, I suspect as soon as
you have a clever hack or two in the Hurd, you'll find that the title
has crept up on you unannounced. ;)

Tks,
Jeff Bailey



I already am a Hurd developer. I hacked GNU Pth to compile under Hurd
last spring providing the first ever pthread compatibility for Hurd.

- Doug




Reply via email to