Hello everyone, i will try to be concise and precise a much as i can.

I'm experimenting with GNUMach and its internals, reading at the hurd code too. 
I want to realize a little project that is writing a 2 servers system on top of 
gnumach; they will not do so much but will be useful for next experiments i 
want to do with the kernel. I'm doing this for learning purpose mainly.

The Environment:

The kernel, a nameserver, a hello_custom_server. I imposed my self i can' t use 
any of the hurd syscalls, but just the common (standard) function in glibc 
(stdlib and so on).

What i did realize until now:

1) Grub starts the kernel and my nameserver as a module, I implemented a little 
library to parse the arguments given to the nameserver at the boot in a 
key-value linked map. So i can get the arguments passed to the main.

2) The nameserver starts and prints something to the screen using mach_print() 
showing it is working


What the name server should do:

The name server has the purpose to offer a registration service for othe 
servers. After booting it should be able to listen for other  servers that want 
to register to the name server publishing their ports. The server will store 
the ports in a key-value structure, probably by name and the port. In this way 
a client that want to send messages to a server will ask the needed ports to 
the name server, that will "establish" a connection, between the client and the 
server, providing the ports to the client. This is the basic project idea.

The problems:

Looking at the Hurd, startup.c (frob_kernel_process) line: 1092, it sets, as 
the comment says too, it installs the proc port to the kernel task as a 
bootstrap port making it visible to other Hurds.
Before doing that the code checks if the kernel_task is a valid port otherwise 
it will search it in the process list with HURD_PID_KERNEL ( defined as 3).

I'm having difficulties getting the kernel_task to do something similar but 
with my nameserver.

I want to set the nameserver port as bootstrap port to the kernel_task. How to 
get the kernel_task considering that i can just use the kernel, and the Hurd in 
that environment is not running?

I also saw there is an option to the command line at boot time 
--kernel-task='${kernel-task}', that gives me a number that depend of the 
position of the argument in the argument list, so probably
i'm using ot in the wrong way.

Also, if i misunderstanding the way to operate, please, correct me.

Thank you for the help,
Alex.

Reply via email to