赞
踩
device0 :: deviceNode {
policy = 2;
priority = 60;
preload = 0;
permission = 0666;
moduleName = "HDF_AUDIO";
deviceMatchAttr = "hdf_audio_driver_0";
serviceName = "hdf_audio_codec_primary_dev0";
}
policy:服务策略,控制对谁提供驱动服务
moduleName 这个名称和驱动实现的HdfDriverEntry 结构体中的moduleName 相同。
deviceMatchAttr :驱动的私有配置信息。
serviceName :这个是服务名称,最终会在/dev/节点下生成serviceName 的节点(生成节点的前提条件policy 配置为大于等于1)。
2. 实现与device_info.hcs文件中配置moduleName匹配的驱动
/* HdfDriverEntry definitions */
struct HdfDriverEntry g_audioDriverEntry = {
.moduleVersion = 1,
.moduleName = "HDF_AUDIO",
.Bind = AudioDriverBind,
.Init = AudioDriverInit,
.Release = AudioDriverRelease,
};
HDF_INIT(g_audioDriverEntry);
当g_audioDriverEntry中的moduleName 和device_info.hcs文件中的配置信息相同时,系统启动时就会执行Bind 函数,当Bind 函数执行成功时就会接着执行Init 函数。
当Bind 函数或和Init 执行失败时,系统会执行Release 函数。
Bind 函数内部实现服务的绑定。
Init 函数内部实现驱动模块的初始化。
Release 函数内部实现内存的释放。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。