- 论坛徽章:
- 0
|
红帽2.8版本内核。
我自己设置的INET套接字,和传输层协议。套接字叫做SOCK_MYUDP,协议叫做MyUDP。
也就是,SOCK_MYUDP跟SOCK_STREAM同一级别,MyUDP跟TCP一个级别。
然后把MyUDP.c放在 linux-2.6.8.1/net/ipv4/目录下。
我的协议中有的数据结构是共用原始套接字的,
如传输协议操作集:struct proto raw_prot
我修改了MyUDP.c所在目录的makefile跟kconfig
makefile中,如下:obj-$(CONFIG_IP_MYUDP) +=MyUDP.o
kconfig中,如下:config IP_MYUDP
tristate "MY SOCKET"
depends on INET
然后make menuconfig时把其配置成 “模块”。
然后make,make module_install,make install,reboot
这期间没有提示错误,不过感觉make module_install时间好像有点短。
从新内核启动时,出错。
这是不是跟内核冲突了啊?
如果我要把其作为模块加载的话,该怎样修改呢?是不是MyUDP.c中不能与TCP/IP协议共用相同的数据结构和函数?
然后,我重新make menuconfig配置内核时,把它选为: “y” ,就是直接编译进内核。
接下来所有一切很正常,新设置的套接字也能用。
但是我在根目录下:find -name MyUDP.o 时,就是找不到 MyUDP.o 。不晓得咋回事啊?
另外事实上,我只把MyUDP.c这个文件放在linux-2.6.8.1/net/ipv4/目录下,makefile,kconfig都不用修改。
然后直接编译,从新内核启动。然后调用新设置的套接字也能用。
当然,find -name MyUDP.o 时,也找不到 MyUDP.o
这个咋回事呢?是不是只要放在内核目录下,编译内核时,它就会自动被编译进去? |
|