netpoll的目的是让内核在网络和I/O子系统尚不能完整可用时,依然能发送和接收数据包。主要用于网络控制台(net console)和远程内核调试(KGDBoE)中。实现netpoll功能,主要是要实现kernel中的poll_controller函数,该函数定义:void (*poll_controller)(structnet_device *dev)。该函数的作用是在缺少设备中断的情况下,还能对控制器做出响应。几乎所有的poll_controller函数都定义成如下形式:
void my_poll_controller(structnet_device *dev) {
disable_device_interrupt();//
my_interrupt_handler();
enable_device_interrupt();
}
所以,poll_controller只是模拟了来自指定设备的中断。其实只是给netpoll机制提供调用中断函数处理的机会,实际的中断触发当然还是硬件。
下面的链接分析了netpoll
http://blog.csdn.net/lucien_cc/article/details/11731501
netconsole在内核/drivers/net下
netconsole.c文件,这个console主要是向远程端发送printk(用户层不行)打印信息。
在arm板上,你的内核要配置选上netpoll,也要加载netconsole.ko
下面看netconsole.ko装载:
http://linux.chinaunix.net/techdoc/system/2005/04/06/921980.shtml
在pc机上要配置syslogd可以用接收来自远程主机的消息
下面的链接给了设置方法: