kernel中bluetooth的初始化

本文深入探讨了Android内核启动时蓝牙初始化的过程,从`subsys_initcall(bt_init)`开始,详细解析了`bt_init`、`hci_sock_init`、`bt_sock_register`、`hci_register_notifier`以及`l2cap_init`等关键函数的实现,涉及蓝牙协议栈的注册与初始化,包括创建调试目录、添加协议族和向通知器注册回调函数等内容。
摘要由CSDN通过智能技术生成

我们大家都知道,Android其实是基于linux之上进行运行的。在Android系统的运行之初,首先是kernel层的一系列的初始化。今天晓东就先和大家来简单分析一下在开机之后,kernel中和bluetooth的初始化相关的内容有哪些。

         我们仍然还是才kernel/net/bluetooth下面的代码开始查看,搜索一下initcall相关的内容也就只有在af_bluetooth.c中看到了这样一句话:

         subsys_initcall(bt_init);

         毫无疑问,我们肯定要从这里开始看了,若是有同学要问晓东为什么会是这里,我就不给您详细解释了,若是您有打破砂锅问到底的精神,晓东推荐你去google或者百度一下这个函数,就会看到一堆讲解linux启动的文章,我想您一定会有所收获的。

         废话不多说了,直接看代码了:

1bt_init的实现。

static int __init bt_init(void)
{
	int err;
/*
*这会是在kernel中打印的第一个和蓝牙相关的内容,这里的版本是2.16
*/
	BT_INFO("Core ver %s", VERSION);	
/*
*新建两个目录,不深入去看了
*新建一个sys/kernel/debug/bluetooth
*新建一个sys/class/bluetooth
*这连个目录可以再adb shell的时间进去看到了
*/
	err = bt_sysfs_init();
	/*
	*向协议族数组中加入PF_BLUETOOTH=31
	*/
	err = sock_register(&bt_sock_family_ops);
	BT_INFO("HCI device and c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值