Linux Kernel设备驱动模型之class迭代设备

设备驱动模型之class迭代设备:
 

/**  * class_for_each_device - device iterator  * @class: the class we're iterating  * @start: the device to start with in the list, if any.  * @data: data for the callback  * @fn: function to be called for each device  *  * Iterate over @class's list of devices, and call @fn for each,  * passing it @data.  If @start is set, the list iteration will start  * there, otherwise if it is NULL, the iteration starts at the  * beginning of the list.  *  * We check the return of @fn each time. If it returns anything  * other than 0, we break out and return that value.  *  * @fn is allowed to do anything including calling back into class  * code.  There's no locking restriction.  */ int class_for_each_device(struct class *class, struct device *start,      void *data, int (*fn)(struct device *, void *)) {  struct class_dev_iter iter;  struct device *dev;  int error = 0;

 if (!class)   return -EINVAL;  if (!class->p) {   WARN(1, "%s called for class '%s' before it was initialized",        __func__, class->name);   return -EINVAL;  }

 class_dev_iter_init(&iter, class, start, NULL);  while ((dev = class_dev_iter_next(&iter))) {   error = fn(dev, data);   if (error)    break;  }  class_dev_iter_exit(&iter);

 return error; }

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值