---
name: "class_for_each_device"
section: "9"
platform: "linux"
package: "linux-manual-3.16"
version: "3.16.56-1+deb8u1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/class_for_each_device"
---

# class\_for\_each\_device(9)

device iterator

## NAME

class\_for\_each\_device - device iterator

## SYNOPSIS

**int class\_for\_each\_device(struct class \*** *class***, struct device \*** *start***, void \*** *data***, int (\****fn***) (struct device \*, void \*));**

## ARGUMENTS

*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

## DESCRIPTION

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.

## COPYRIGHT
