这是更清洁的方式来获得一个指向Linux的struct device的?

我需要获得一个指向在linux注册的特定设备。 简单地说,该装置表示mii_bus对象。 问题是,这个装置似乎不属于总线(它dev->busNULL ),所以我不能例如功能使用bus_for_each_dev 。 该装置是由开放固件层但是注册的,我可以看到相对of_device (即设备我感兴趣的母公司)在/sys/bus/of_platform 。 我的设备也注册了class ,所以我可以找到它/sys/class/mdio_bus 。 现在的问题:

  1. 这是能够得到使用的指针的指针of_device这是我们希望的设备的父?
  2. 我怎么能只用名字得到一个指向已经实例化的类?如果有可能,我可以遍历这个类的设备。

任何其他意见将是非常有用! 谢谢你们。

--------------解决方案-------------

我找到了方法。 我简单介绍一下吧,也许它可能是有用的。 我们可以使用的方法是device_find_child 。 该方法将作为第三个参数的指针,以实现比较逻辑的功能。 如果该功能时与特定设备作为第一个参数调用返回不为零, device_find_child将返回指针。

#include <linux/device.h>
#include <linux/of_platform.h>

static int custom_match_dev(struct device *dev, void *data)
{
/* this function implements the comaparison logic. Return not zero if device
pointed by dev is the device you are searching for.
*/
}

static struct device *find_dev()
{
struct device *ofdev = bus_find_device_by_name(&of_platform_bus_type,
NULL, "OF_device_name");
if (ofdev)
{
/* of device is the parent of device we are interested in */

struct device *real_dev = device_find_child(ofdev,
NULL, /* passed in the second param to custom_match_dev */
custom_match_dev);
if (real_dev)
return real_dev;
}
return NULL;
}

分类:linux内核 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.435 (s). 10 q(s)