ioctl MEDIA_IOC_ENUM_ENTITIES
&manvol;

# MEDIA_IOC_ENUM_ENTITIES

Enumerate entities and their properties

    	int ioctl
    	int fd
    	int request
    	struct media_entity_desc *argp

## Arguments

`fd`

  File descriptor returned by `open()`.

`request`

  MEDIA_IOC_ENUM_ENTITIES

`argp`

## Description

To query the attributes of an entity, applications set the id field of a &media-entity-desc; structure and call the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this structure. The driver fills the rest of the structure or returns an &EINVAL; when the id is invalid.

Entities can be enumerated by or'ing the id with the `MEDIA_ENT_ID_FLAG_NEXT` flag. The driver will return information about the entity with the smallest id strictly larger than the requested one ('next entity'), or the &EINVAL; if there is none.

Entity IDs can be non-contiguous. Applications must not try to enumerate entities by calling MEDIA_IOC_ENUM_ENTITIES with increasing id's until they get an error.

Two or more entities that share a common non-zero group_id value are considered as logically grouped. Groups are used to report

- ALSA, VBI and video nodes that carry the same media stream

- lens and flash controllers associated with a sensor

### struct media_entity_desc

__u32 | id |  |  | Entity id, set by the application. When the id is or'ed with `MEDIA_ENT_ID_FLAG_NEXT`, the driver clears the flag and returns the first entity with a larger id.
char | name[32] |  |  | Entity name as an UTF-8 NULL-terminated string.
__u32 | type |  |  | Entity type, see for details.
__u32 | revision |  |  | Entity revision in a driver/hardware specific format.
__u32 | flags |  |  | Entity flags, see for details.
__u32 | group_id |  |  | Entity group ID
__u16 | pads |  |  | Number of pads
__u16 | links |  |  | Total number of outbound links. Inbound links are not counted in this field.
union
| struct | v4l |  | Valid for V4L sub-devices and nodes only.
|  | __u32 | major | V4L device node major number. For V4L sub-devices with no device node, set by the driver to 0.
|  | __u32 | minor | V4L device node minor number. For V4L sub-devices with no device node, set by the driver to 0.
| struct | fb |  | Valid for frame buffer nodes only.
|  | __u32 | major | Frame buffer device node major number.
|  | __u32 | minor | Frame buffer device node minor number.
| struct | alsa |  | Valid for ALSA devices only.
|  | __u32 | card | ALSA card number
|  | __u32 | device | ALSA device number
|  | __u32 | subdevice | ALSA sub-device number
| int | dvb |  | DVB card number
| __u8 | raw[180] |  |

### Media entity types

`MEDIA_ENT_T_DEVNODE` | Unknown device node
`MEDIA_ENT_T_DEVNODE_V4L` | V4L video, radio or vbi device node
`MEDIA_ENT_T_DEVNODE_FB` | Frame buffer device node
`MEDIA_ENT_T_DEVNODE_ALSA` | ALSA card
`MEDIA_ENT_T_DEVNODE_DVB` | DVB card
`MEDIA_ENT_T_V4L2_SUBDEV` | Unknown V4L sub-device
`MEDIA_ENT_T_V4L2_SUBDEV_SENSOR` | Video sensor
`MEDIA_ENT_T_V4L2_SUBDEV_FLASH` | Flash controller
`MEDIA_ENT_T_V4L2_SUBDEV_LENS` | Lens controller

### Media entity flags

`MEDIA_ENT_FL_DEFAULT` | Default entity for its type. Used to discover the default audio, VBI and video devices, the default camera sensor, ...

&return-value;

EINVAL

  The &media-entity-desc; id references a non-existing entity.