The Linux Kernel
  • Linux Kernel Documentation
    • Introduction
    • Sphinx Build
    • Writing Documentation
    • Including kernel-doc comments
    • Writing kernel-doc comments
    • DocBook XML [DEPRECATED]
  • Linux Kernel Development Documentation
    • A guide to the Kernel Development Process
  • Development tools for the kernel
    • Coccinelle
    • Sparse
    • kcov: code coverage for fuzzing
    • Using gcov with the Linux kernel
    • The Kernel Address Sanitizer (KASAN)
    • The Undefined Behavior Sanitizer - UBSAN
    • Kernel Memory Leak Detector
    • Getting started with kmemcheck
    • Debugging kernel and modules via gdb
  • The Linux driver implementer’s API guide
    • Driver Basics
    • Device drivers infrastructure
    • Message-based devices
    • Sound Devices
    • Frame Buffer Library
    • Input Subsystem
    • Serial Peripheral Interface (SPI)
    • I2C and SMBus Subsystem
    • High Speed Synchronous Serial Interface (HSI)
    • Parallel Port Devices
    • 16x50 UART Driver
    • Pulse-Width Modulation (PWM)
  • Linux Media Subsystem Documentation
    • Linux Media Infrastructure userspace API
    • Media subsystem kernel internal API
    • Linux Digital TV driver-specific documentation
    • Video4Linux (V4L) driver-specific documentation
  • Linux GPU Driver Developer’s Guide
    • Introduction
    • DRM Internals
    • DRM Memory Management
    • Kernel Mode Setting (KMS)
    • Mode Setting Helper Functions
    • Userland interfaces
    • drm/i915 Intel GFX Driver
    • VGA Switcheroo
    • VGA Arbiter
  • Linux 802.11 Driver Developer’s Guide
    • Introduction
    • cfg80211 subsystem
    • mac80211 subsystem (basics)
    • mac80211 subsystem (advanced)
  • Hardware vulnerabilities
    • L1TF - L1 Terminal Fault
    • MDS - Microarchitectural Data Sampling
    • TAA - TSX Asynchronous Abort
    • iTLB multihit
  • x86 architecture specifics
    • Microarchitectural Data Sampling (MDS) mitigation
    • TSX Async Abort (TAA) mitigation
 
The Linux Kernel
  • Docs »
  • Linux Media Subsystem Documentation »
  • Linux Media Infrastructure userspace API »
  • Part IV - Media Controller API »
  • 4. Function Reference »
  • 4.8. ioctl MEDIA_IOC_SETUP_LINK
  • View page source

4.8. ioctl MEDIA_IOC_SETUP_LINK¶

4.8.1. Name¶

MEDIA_IOC_SETUP_LINK - Modify the properties of a link

4.8.2. Synopsis¶

int ioctl(int fd, MEDIA_IOC_SETUP_LINK, struct media_link_desc *argp)¶

4.8.3. Arguments¶

fd
File descriptor returned by open().

argp

4.8.4. Description¶

To change link properties applications fill a struct media_link_desc with link identification information (source and sink pad) and the new requested link flags. They then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that structure.

The only configurable property is the ENABLED link flag to enable/disable a link. Links marked with the IMMUTABLE link flag can not be enabled or disabled.

Link configuration has no side effect on other links. If an enabled link at the sink pad prevents the link from being enabled, the driver returns with an EBUSY error code.

Only links marked with the DYNAMIC link flag can be enabled/disabled while streaming media data. Attempting to enable or disable a streaming non-dynamic link will return an EBUSY error code.

If the specified link can’t be found the driver returns with an EINVAL error code.

4.8.5. Return Value¶

On success 0 is returned, on error -1 and the errno variable is set appropriately. The generic error codes are described at the Generic Error Codes chapter.

EINVAL
The struct media_link_desc references a non-existing link, or the link is immutable and an attempt to modify its configuration was made.
Next Previous

© Copyright 2016, The kernel development community.

Sphinx theme provided by Read the Docs