rough-draft VKERNEL host-initiated shutdown patch
Matthew Dillon
dillon at apollo.backplane.com
Sun May 20 15:00:56 PDT 2007
:Disclaimer: MESSY!
:
:Took a quick attempt at getting the VKERNEL to shutdown cleanly against
:1.8,
:and it seems to work just fine as suggested with mailbox signals, etc.
:
:Attached is my 'cumulative' 1.8 vkernel patch against 1.8_Release
:/usr/src/sys/platform/vkernel including the previous multi-vk changes.
:...
:status:
: - OK for simple shutdown case with init already fork()'ed.
Looks good.
: - VK is too fast for me to catch the 'no init yet' shutdown case..
Heh.
: - need to merge against Preview, as things have changed there,
: and re-submit. patch here includes previous multivkd work.
Yup, I was just going to say that... multi-vk is already in HEAD.
:changes in:
: - platform/vkernel/include/globaldata.h : maibox slot
: - platform/vkernel/include/md_var.h : vk_shutdown prototype
: - platform/vkernel/platform/kqueue.c : mailbox hook
: - platform/vkernel/platform/init.c : vk_shutdown function
:
:questions/notes:
: - I didn't think I really needed a separate sigaction in
: kqueue_setup..
: - should shutdown mailbox handler dispatch happen higher up
: (e.g. in platform/vkernel/i386/trap.c)
: - should this actually follow
: 'vke_intr(void *xsc, struct intrframe *frame __unused)' conventions?
: - we're not really checking for FD related IO kevents() ..
: - this implies a more 'full device' kind of thing , with a struct,
: etc.
The sigaction initialization for SIGTERM doesn't really belong
in init_kqueue(). Put it in platform/vkernel/i386/exception.c
instead.
Now the question is: should it be a signal mailbox or a real signal?
That's a good question. Well, we have an issue with the small size
of the kernel thread stack, so I think it should be a mailbox.
Now... when to check for and call the function! There are two places
where it needs to be checked:
(1) in go_user().
(2) in cpu_idle().
Check for the mailbox and call a function specific to the shutdown
(which you can also put in platform/vkernel/i386/exception.c). Don't
integrate it into signalmailbox().
: - should the other init(8) signals for e.g. single user, etc. be
: implemented? Currently, these are not implement as shutdown is
: ~90% of cases, and wanted to verify I'm taking the proper direction.
single-user mode on the master host will send a HUP or a TERM
(I forget which) to all processes, including the vkernel. They
should probably be treated as a shutdown by the vkernel.
: - mailbox signals aren't really documented in the manual at the
: moment..
I'll do a quick fix to the sigaction manual page. hmm. I thought
I had documented it.
:Comments / Questions / feedback welcome.
:
:Thanks!
:
: - Chris
More information about the Submit
mailing list