Linux提供了对Bluetooth的支持,核心代码位于net/bluetooth
1. 初始化
主要由subsys_initcall调用函数bt_init()来完成
bt_init() -> bt_sysfs_init() -> sock_register(&bt_sock_family_ops) -> hci_sock_init() -> l2cap_init() -> sco_init()
bt_sock_family_ops包含了蓝牙套接字创建函数bt_sock_create()
hci_sock_initl(),2cap_init(),sco_init()则分别完成了hci/l2cap/sco类型传输协议的初始化
之后,module_init函数(Down Shows)初始化rfcomm/bnep/cmtp/hidp类型传输协议的初始化(avdtp未实现)
rfcomm_init(), bnep_init(), cmtp_init(), hidp_init()
其中sock_register()将PF_BLUETOOTH注册到协议族(net_families)