[openbeosnetteam] Re: Website questions

> The main reason (nad BTW why the hell are ew talking about this now 
when the
> code is still some weeks away from being needed) is that the stack 
becomes
> part of the kernel. I envisage that unless you say you want NO 
networking,
> it gets loaded the same way the other parts of the kernel do. What 
you then
> do with them is your concern...
> 
> Also, one big reason for being able to unload protocols is to allow 
fo on
> the fly upgrades (if we can get it to work correctly) which would be 
very
> cool. Anyway, can we regard this as finished and move onto actually 
fixing
> bugs?

Being able to unload any kernel modules, "core" included, could greatly 
reduce the number of reboot, KDL trip apart obviously, and could 
increase the 
code/debug/test cycle:

Here what I get by this night:

From one Terminal, stack not being started yet:
$ echo start > /dev/net/stack (yep, starting/stopping a "stack" make 
more sense than a "socket")

KERN 'sh'[323]: net_stack_driver: init_driver, built Apr 25 2002 
02:56:24
KERN 'sh'[323]: core: B_MODULE_INIT [module built Apr 25 2002 03:18:05]
KERN 'sh'[323]: net_stack_driver: init_driver: core = 0x603a0c00
KERN 'sh'[323]: net_stack_driver: net_stack_open(net/stack, O_WRONLY)
 
return this cookie: 0x0245e110
KERN 'sh'[323]: net_stack_driver: net_stack_write(0x0245e110, 0, 
0x80087f20, 6)
KERN 'sh'[323]: net_stack_driver: keep_driver_loaded: internaly opening
 
/dev/net/stack to stay loaded in memory...
KERN 'sh'[323]: net_stack_driver: net_stack_open(net/stack, O_RDONLY)
 
return this cookie: 0x0245e190
KERN 'sh'[323]: net_stack_driver: net_stack_close(0x0245e110)
KERN 'sh'[323]: net_stack_driver: net_stack_free(0x0245e110)
> Notice that the driver is not uninit_driver()'ed here: "core" is 
still loaded (and working) 
...

From another Terminal, sometime after...

$ echo stop > /dev/net/stack

KERN 'sh'[334]: net_stack_driver: net_stack_open(net/stack, O_WRONLY)
 
return this cookie: 0x02912fa8
KERN 'sh'[334]: net_stack_driver: net_stack_write(0x02912fa8, 0, 
0x80087f20, 7)
KERN 'sh'[334]: net_stack_driver: unload_driver: unload requested.
KERN 'sh'[334]: net_stack_driver: net_stack_close(0x0245e190)
KERN 'sh'[334]: net_stack_driver: net_stack_free(0x0245e190)
KERN 'sh'[334]: net_stack_driver: net_stack_close(0x02912fa8)
KERN 'sh'[334]: net_stack_driver: net_stack_free(0x02912fa8)
KERN 'sh'[334]: net_stack_driver: uninit_driver
KERN 'sh'[334]: core: B_MODULE_UNINIT

All the kernel modules on this test were build WITHOUT the 
B_KEEP_LOADED flag, "core" included.
That means, in no KDL crash case , you just have to exit all network 
apps still using the stack (if any), run "echo stop /dev/net/stack" 
to unload all the kernel stack from memory, and you'll be able to 
update ANY part of the kernel stack, the driver, any modules.
Without rebooting.

Okay, maybe some memory leak will stay in kernel space until we fix all 
of them in stack code :-(

To add this support, I've made some big change to the driver (yep, even 
the name of the driver), tell me if you want this support in CVS?

-Philippe


--
Fortune Cookie Says:

As Will Rogers would have said, "There is no such things as a free
variable."


Other related posts: