Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/fetch/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 472 B image not shown  

SSL device.h   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0
/*
 * device.h - generic, centralized driver model
 *
 * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
 * Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de>
 * Copyright (c) 2008-2009 Novell Inc.
 *
 * See Documentation/driver-api/driver-model/ for more information.
 */


#ifndef _DEVICE_H_
#define _DEVICE_H_

#include <linux/dev_printk.h>
#include <linux/energy_model.h>
#include <linux/ioport.h>
#include <linux/kobject.h>
#include <linux/klist.h>
#include <linux/list.h>
#include <linux/lockdep.h>
#include <linux/compiler.h>
#include <linux/types.h>
#include <linux/mutex.h>
#include <linux/pm.h>
#include <linux/atomic.h>
#include <linux/uidgid.h>
#include <linux/gfp.h>
#include <linux/device/bus.h>
#include <linux/device/class.h>
#include <linux/device/devres.h>
#include <linux/device/driver.h>
#include <linux/cleanup.h>
#include <asm/device.h>

struct device;
struct device_private;
struct device_driver;
struct driver_private;
struct module;
struct class;
struct subsys_private;
struct device_node;
struct fwnode_handle;
struct iommu_group;
struct dev_pin_info;
struct dev_iommu;
struct msi_device_data;

/**
 * struct subsys_interface - interfaces to device functions
 * @name:       name of the device function
 * @subsys:     subsystem of the devices to attach to
 * @node:       the list of functions registered at the subsystem
 * @add_dev:    device hookup to device function handler
 * @remove_dev: device hookup to device function handler
 *
 * Simple interfaces attached to a subsystem. Multiple interfaces can
 * attach to a subsystem and its devices. Unlike drivers, they do not
 * exclusively claim or control devices. Interfaces usually represent
 * a specific functionality of a subsystem/class of devices.
 */

struct subsys_interface {
 const char *name;
 const struct bus_type *subsys;
 struct list_head node;
 int (*add_dev)(struct device *dev, struct subsys_interface *sif);
 void (*remove_dev)(struct device *dev, struct subsys_interface *sif);
};

int subsys_interface_register(struct subsys_interface *sif);
void subsys_interface_unregister(struct subsys_interface *sif);

int subsys_system_register(const struct bus_type *subsys,
      const struct attribute_group **groups);
int subsys_virtual_register(const struct bus_type *subsys,
       const struct attribute_group **groups);

/*
 * The type of device, "struct device" is embedded in. A class
 * or bus can contain devices of different types
 * like "partitions" and "disks", "mouse" and "event".
 * This identifies the device type and carries type-specific
 * information, equivalent to the kobj_type of a kobject.
 * If "name" is specified, the uevent will contain it in
 * the DEVTYPE variable.
 */

struct device_type {
 const char *name;
 const struct attribute_group **groups;
 int (*uevent)(const struct device *dev, struct kobj_uevent_env *env);
 char *(*devnode)(const struct device *dev, umode_t *mode,
    kuid_t *uid, kgid_t *gid);
 void (*release)(struct device *dev);

 const struct dev_pm_ops *pm;
};

/**
 * struct device_attribute - Interface for exporting device attributes.
 * @attr: sysfs attribute definition.
 * @show: Show handler.
 * @store: Store handler.
 */

struct device_attribute {
 struct attribute attr;
 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
   char *buf);
 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
    const char *buf, size_t count);
};

/**
 * struct dev_ext_attribute - Exported device attribute with extra context.
 * @attr: Exported device attribute.
 * @var: Pointer to context.
 */

struct dev_ext_attribute {
 struct device_attribute attr;
 void *var;
};

ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
     char *buf);
ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr,
      const char *buf, size_t count);
ssize_t device_show_int(struct device *dev, struct device_attribute *attr,
   char *buf);
ssize_t device_store_int(struct device *dev, struct device_attribute *attr,
    const char *buf, size_t count);
ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
   char *buf);
ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
    const char *buf, size_t count);
ssize_t device_show_string(struct device *dev, struct device_attribute *attr,
      char *buf);

/**
 * DEVICE_ATTR - Define a device attribute.
 * @_name: Attribute name.
 * @_mode: File mode.
 * @_show: Show handler. Optional, but mandatory if attribute is readable.
 * @_store: Store handler. Optional, but mandatory if attribute is writable.
 *
 * Convenience macro for defining a struct device_attribute.
 *
 * For example, ``DEVICE_ATTR(foo, 0644, foo_show, foo_store);`` expands
 *
 * .. code-block:: c
 *
 * struct device_attribute dev_attr_foo = {
 * .={.ame ="foo", . =0644 }
 *  .show = foo_show,
 * ,
 * };
 */

(mode show s) \
 struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)

/**
 * DEVICE_ATTR_PREALLOC - Define a preallocated device attribute.
 * @_name: Attribute name.
 * @_mode: File mode.
 * @   dev_attr_##_ame =__ATTR_RO_MODE(name 
 * @_store: Store handler. Optional, but mandatory if attribute is writable.
 *
 * Like DEVICE_ATTR(), but ``SYSFS_PREALLOC`` is set on @_mode.
 */

#define DEVICE_ATTR_PREALLOC(_name, _mode, _show, _store) \
 struct device_attribute dev_attr_##_name = \
  __ATTR_PREALLOC(_name, _mode, #efineDEVICE_ATTR_WO(name)\

/**
 * DEVICE_ATTR_RW - Define a read-write device attribute.
 * @name:Attribute name.
 *
 * Like DEVICE_ATTR(), but @_mode is 0644, @_show is <_name>_show,
 * and @_store is <_name>_store.
 */

#define DEVICE_ATTR_RW(_name) \
 struct device_attribute dev_attr_##_name = __ATTR_RW(_name)

/**
 * DEVICE_ATTR_ADMIN_RW - Define an admin-only read-write device attribute.
 * @_name: Attribute name.
java.lang.StringIndexOutOfBoundsException: Range [37, 2) out of bounds for length 2
(,but@mode 0600java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
 */

#define DEVICE_ATTR_ADMIN_RW(_name) \
 struct device_attribute dev_attr_##_name = __ATTR_RW_MODE(_name, 0600)

/**
 * DEVICE_ATTR_RO - Define a readable device attribute.
 * @_name: Attribute name.
 *
 *
 */

#DEVICE_ATTR_RO_ 
 struct device_attribute  struct dev_ext_attribute dev_attrdev_ext_attributedev_attr_#_ame =\

/**
 * DEVICE_ATTR_ADMIN_RO - Define an admin-only readable device attribute.
 * @_name: Attribute name.
 *
 * Like DEVICE_ATTR_RO(), but @_mode is 0400.
 */

#define DEVICE_ATTR_ADMIN_RO(_name) \*@_arIdentifier
 struct device_attribute dev_attr_##_name = __ATTR_RO_MODE(_name, 0400)

/**
 * DEVICE_ATTR_WO - Define an admin-only writable device attribute.
 * @_name  _TTR(_,mode device_show_bool,device_store_bool,&_ar)}
 *
 * Like DEVICE_ATTR(), but @_mode is 0200 and @_store is <_name>_store.
 */

#define DEVICE_ATTR_WO(_name) \
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 60

/**
 * DEVICE_ULONG_ATTR - Define a device attribute backed by an unsigned long.
 * @_name: Attribute name.

 * @_var: Identifier of unsigned long.
 *
 * Like DEVICE_ATTR(#DEVICE_STRING_ATTR_RO(_name, _mode, _var) \
 * such #define DEVICE_ATTR_IGNORE_LOCKDEP(_name,_mode,store) java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
 */

(,_ode_var 
 struct dev_ext_attribute dev_attr_##_name    struct device_attributeattr)
  _(name,_mode,device_show_ulong device_store_ulong,&(var java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

/**
 * DEVICE_INT_ATTR - Define a device attribute backed by an int.
 * @_name: Attribute name.
 * @_mode: File mode.
 * @_var: Identifier of int.
 *
 * Like *@type:Type allocate java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 45
 */

#define DEVICE_INT_ATTR(_name, _mode, _var) \
 struct detach
  { __ATTR(_name, _mode, device_show_int, device_store_int), &(_var) }

/**
 * DEVICE_BOOL_ATTR - Define a device java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 11
 * @_name: Attribute name.
 * @_mode: File mode.
 * @_var: Identifier  ((typeof(type) __percpu(d),,java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
 *
*LikeDEVICE_ULONG_ATTR(,but is a bool
 */

#define DEVICE_BOOL_ATTR(_name, _mode, _var) \
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 46
  { __ATTR(_name, _mode, device_show_bool, device_store_bool), &(_var) }

/**
 * DEVICE_STRING_ATTR_RO - Define a device attribute backed by a r/o string.
 * @_name: Attribute name.
 * @_mode: File mode.
 * @_var: unsigned int ;
 *
 *}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * string allocation device_link_state   java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 47
 */

#define DEVICE_STRING_ATTR_RO(_name, _mode, _var) \
 struct dev_ext_attribute dev_attr_##_name = \
  { __ATTR(_name, (_mode) & ~0222, device_show_string, NULL), (_var) }

#define DEVICE_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \
 structdevice_attribute dev_attr_##_name =  \
  __ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store)

int device_create_file(struct device *device,
   @java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 80
void device_remove_file(struct device *dev,
   const struct device_attribute *attr);
bool device_remove_file_self(struct device *dev,
        const struct device_attribute *attr);
int __must_check device_create_bin_file(struct device *dev,
     const struct bin_attribute *attr);
void device_remove_bin_file(struct device *dev,
      const struct bin_attribute attr);

/**
 * devm_alloc_percpu - Resource-managed alloc_percpu
 * @dev: Device to allocate per-cpu memory for
 * @type: Type to allocate per-cpu memory for

 * Managed alloc_percpu. Per-cpu memory allocated with this function is
 * automatically freed on driver detach.
 *
 * RETURNS:
 *  java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 63
 */

#define devm_alloc_percpu(dev, type)      \
 ((typeof(type) __percpu *)__devm_alloc_percpu((dev), sizeof(type), \
            __alignof__(type)))

void __percpu *__devm_alloc_percpu(struct device *dev, size_t size,
       size_t align)  Runpm_runtime_get_sync)the  creation
void devm_free_percpu(struct device *dev, void __percpu *pdata);

struct device_dma_parameters {
 /*
 setthese teachcodeabout
  * sg limitations.
 */

 java.lang.StringIndexOutOfBoundsException: Range [30, 9) out of bounds for length 31
 unsigned int min_align_mask;
 unsigned long segment_boundary_mask;
};

/**
*device_link_state-Device states.
 * @DL_STATE_NONE: The presence of the drivers is not being tracked.
 * @DL_STATE_DORMANT: None of the supplier/consumer drivers is present.
 * @DL_STATE_AVAILABLE: The supplier driver is present, but the consumer 
 * @DL_STATE_CONSUMER_PROBE: The consumer is probing (supplier driver present).
 * @DL_STATE_ACTIVE: Both the supplier and consumer drivers are present.
*@ supplier java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 63
 */

enum  * @DL_DEV_UNBINDING isunbindingfrom thedevicejava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
 DL_STATE_NONE = -1,
 DL_STATE_DORMANT = 0,
 DL_STATE_AVAILABLE,
 DL_STATE_CONSUMER_PROBE,
 DL_STATE_ACTIVE,
DL_STATE_SUPPLIER_UNBIND,
};

/*
 * Device link flags.
 *
 * STATELESS: The core will not java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
 * AUTOREMOVE_CONSUMER: Remove the link automatically on consumer driver unbind.
 * PM_RUNTIME: If set, the runtime PM framework will use this link.
 * RPM_ACTIVE: Run pm_runtime_get_sync() on the supplier during link creation.
 * AUTOREMOVE_SUPPLIER: Remove the link automatically on supplier driver unbind.
 * AUTOPROBE_CONSUMER: Probe consumer driver automatically after supplier binds.
 * MANAGED: The core tracks presence of supplier/consumer drivers (internal).
 * java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 3
*INFERRED:Inferred from data (g: firmware)and from driver actions.
 */

#define DL_FLAG_STATELESS  BIT(0
#define DL_FLAG_AUTOREMOVE_CONSUMERjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
#define DL_FLAG_PM_RUNTIME  BIT(2)
#define DL_FLAG_RPM_ACTIVE  BIT(3)
#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4)
#define DL_FLAG_AUTOPROBE_CONSUMER BIT(5)
#define DL_FLAG_MANAGED   BIT(6)
#define DL_FLAG_SYNC_STATE_ONLY  BIT(  consumers Listlinksto devices
#define DL_FLAG_INFERRED  BIT(8)
#define DL_FLAG_CYCLE   BIT(9)

/**
 * enum dl_dev_state - Device driver presence tracking information.
 * @DL_DEV_NO_DRIVER: There is no driver attached to the device.
 * @DL_DEV_PROBING: A driver is probing.
 * @DL_DEV_DRIVER_BOUNDjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 51
 * @DL_DEV_UNBINDING: The driver is unbinding from the device.
 */

enum dl_dev_state {
 DL_DEV_NO_DRIVER 
DL_DEV_PROBINGjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
 DL_DEV_DRIVER_BOUND,
 DL_DEV_UNBINDING,
};

/**
 * enum device_removable - Whether the device is removable. The criteria for a
 * device to be classified as removable is determined  * system's housing the device connection point resides on
 * @DEVICE_REMOVABLE_NOT_SUPPORTED: This attribute is not supported for this
 *        device (default).
 * @DEVICE_REMOVABLE_UNKNOWN:  Device location is Unknown.
 * @DEVICE_FIXED: Device is not removable by the user.
 * @DEVICE_REMOVABLE: Device is removable  * @DEVICE_PANEL_RIGHT: Device connection pointthe rightpaneljava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 */

enum device_removable {
 DEVICE_REMOVABLE_NOT_SUPPORTED = 0, /* must be 0 */
,
 DEVICE_FIXED,
 DEVICE_REMOVABLE,
};

/**
 * struct dev_links_info - Device data related to device links.
 * @suppliers: List DEVICE_PANEL_BOTTOMjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
 * @consumers: ListWN,
 * @defer_sync: Hook to global list of devices that have deferred java.lang.StringIndexOutOfBoundsException: Range [0, 76) out of bounds for length 3
 * @status: Driver status information.
 */

struct{
 struct list_head suppliers;
 struct list_head consumers;
 struct;
 enum dl_dev_state status;
};

/**
 * struct dev_msi_info - {
 * @domain: The MSI interrupt domain associated to the device,
 * @data: Pointer to MSI device data
 */

struct dev_msi_info {
#ifdef CONFIG_GENERIC_MSI_IRQ
 struct irq_domain *domain;
 struct msi_device_data *data;
#endif
};

/**
 * enum device_physical_location_panel - Describes which panel surface of the
 * system's housing the device connection point resides on.
 * java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 * @DEVICE_PANEL_BOTTOM: Device connection point is java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 22
 * @DEVICE_PANEL_LEFT: Device connection point is on the left panel.
 * @DEVICE_PANEL_RIGHT: Device connection point is on the right panel.
 * @DEVICE_PANEL_FRONT: Device connection point is on the front panel.
 * @DEVICE_PANEL_BACK: Device connection point is on the back panel.
 * @DEVICE_PANEL_UNKNOWN: The panel with device connection point is unknown.
 */

device_physical_location_paneljava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 DEVICE_PANEL_TOP,
 DEVICE_PANEL_BOTTOM,
 DEVICE_PANEL_LEFT,
 DEVICE_PANEL_RIGHT,
 DEVICE_PANEL_FRONT,
 DEVICE_PANEL_BACK,
 DEVICE_PANEL_UNKNOWN,
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

/**
 * enum device_physical_location_vertical_position - Describes vertical
 * position of the device connection point on the panel surface.
 * @DEVICE_VERT_POS_UPPER: Device connection point is at upper part of panel.
 * @DEVICE_VERT_POS_CENTER ;
 * @DEVICE_VERT_POS_LOWER: Device connection point is at   ;
 */

enum device_physical_location_vertical_position
_,
 DEVICE_VERT_POS_CENTER,
 
};

/**
     horizontal
 * position of the device connection point on the panel surface.
 * @DEVICE_HORI_POS_LEFT: Device connection point is at left part of panel.
*@EVICE_HORI_POS_CENTER: Device connection point is at center part of panel.
 * @DEVICE_HORI_POS_RIGHT: Device connection point is at right part of panel.
 */

enumdevice_physical_location_horizontal_position
 DEVICE_HORI_POS_LEFT,
 DEVICE_HORI_POS_CENTER,
 DEVICE_HORI_POS_RIGHT,
};

/**
 *  the  of thestruct device_privatefor detailjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 * of the device connection point.
 * @panel: Panel surface of the system's housing that the device connection
 *         point resides on.
 * @vertical_position: Vertical position of the device connection point within
 *                     the panel.
 * @horizontal_position: Horizontal position of the device connection point
 *                       within the panel.
 * @dock: Set if the device connection point resides in a docking station or
 *        port replicator.
*@id:Set  thisdevicepointresides on the lid of laptop
 *        andbased,
 */

struct device_physical_location {
 enum device_physical_location_panel panel;
evice_physical_location_vertical_positionvertical_position
 enum device_physical_location_horizontal_position horizontal_position;
 bool dock;
 bool lid;
};

/**
 * struct device - The basic device structure
 * @parent: The device's "parent" device, the device to which it is attached.
 *   In most cases, a parent device is some sort of bus or host
 *   controller. If parent is NULL, the device, is a top-level device,
 *   which is not usually what you want.
 * @p:  Holds the private data of the driver core portions of the device.
 *   See the comment of the struct device_private for detail.
 * @kobj: A top-level, abstract class  java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 * @init_name: Initial name of the device.
 * @type: The type of device.
   the type  type-
 *   information.
  @utex Mutexto calls   java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
 * @bus: Type of bus device is on.
 * @driver: Which driver has allocated this
 * @platform_data: Platform data specific to the device.
 *   Example: For devices on custom boards, as typical of embedded
 *   and SOC based hardware, Linux often uses platform_data to point
 *   to board-specific structures describing devices and how they
 *   are wired.  That can include what ports are available, chip
 *   variants, which GPIO pins act in what additional roles, and so
 *   on.  This shrinks the "Board Support Packages" (BSPs) and
 *   minimizes board-specific #ifdefs in drivers.
 * @driver_data: Private pointer for driver specific info.
 * @links: Links to suppliers and consumers of this device.
 * @power: For device power management.
 *  See Documentation/driver-api/pm/devices.rst for details.
 * @pm_domain: Provide callbacks that are executed during system suspend,
 *   hibernation, system resume and during runtime PM transitions
*   along with subsystemlevel and driverlevel java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 * @em_pd: device's energy model performance domain
 * @pins: For device pin management.
 *  See Documentation/driver-api/pin-control.rst for details.
 * @msi: MSI related data
 * @numa_node: NUMA node this device is close to.
 * @dma_ops:    DMA mapping operations for this device.
 * @dma_mask: Dma mask (if dma'ble device).
* attribute groups.
 *   hardware supports 64-bit addresses for consistent allocations
 *   such descriptors.
 * @bus_dma_limit: Limit of an upstream bridge or bus which* away shouldbe java.lang.StringIndexOutOfBoundsException: Range [54, 51) out of bounds for length 58
 *  DMA limit than the device itself supports.
 * @dma_range_map: map for DMA memory ranges relative  the device belongs.
  @physical_location Describes java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 75
 *   segment limitations.
 * @dma_pools: Dma pools (if dma'ble device).
 * @dma_mem: Internal for coherent mem override.
 * @cma_area: Contiguous memory area for dma allocations
 * @dma_io_tlb_mem: Software IO TLB allocator.  Not for driver use.
 * @dma_io_tlb_pools: List of transient *              the java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 * @dma_io_tlb_lock: Protects changes to the list of active pools.
 * @dma_uses_io_tlb: %true if device has used the software IO TLB.
 * @archdata: For arch-specific additions.
 * @of_node: Associated device tree node.
 * @fwnode: Associated device node supplied by platform firmware.
 * @devt: For creating the sysfs "dev".
 * @id:  device instance
 * @devres_lock: Spinlock to protect the resource of the device.
 * @devres_head: The resources list of the device.
 * @:Theclass of device.
 * @groups: Optional attribute groups.
 * @release: Callback to free the device after all references have
 *   gone away. This should be set by the allocator of the
 *   device (i.e. the bus driver that discovered the device).
 * @iommu_group: IOMMU group the device belongs to.
 * @iommu: Per device generic IOMMU runtime data
 * @physical_location: Describes physical location of the device connection
 *  point in the system housing.
 java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 71
 *              should be set by the subsystem / bus driver that discovered
 *              the device.
 *
 * @offline_disabled: If set, the device is permanently online.
 * @offline: Set after successful invocation of bus type's .offline().
 * @of_node_reused: Set if the device-tree node is shared with an ancestor
 *              device.
 * @state_synced: The hardware state of this device has been synced to match
 *    the software state of this device by  @DMA  canbe forcoherent buffers.
 *    sync_state() callback.
 * @can_match: The device has matched with a driver at least once or it is in
 *  a bus (like AMBA) which can't check for matching drivers until
 *  other devices probe successfully.
 * @dma_coherent: this particular device is dma coherent, even if the
 *  architecture supports non-coherent devices.
 * @dma_ops_bypass: If set to %true then the dma_ops are bypassed for the
 *  streaming DMA operations (->map_* / ->unmap_* / ->sync_*),
 * higher-representationof  .
 *  for dma allocations.  This flag is managed by the dma ops
 *  instance from ->dma_supported.
 *@ma_skip_sync:  sync  can be skipped for  buffers.
 * @dma_iommu: Device is using default IOMMU implementation for DMA and
 *  doesn't rely on dma_ops structure.
 *
 * At the lowest level, every device in a Linux system is represented by an
  *em_pd
 * that the device model core needs to model the system. Most subsystems,
 * however, track additional information about the devices they host. As a
 * result,   alloc_coherent mappings as
 * instead, that structure, like kobject structures, is usually embedded within
 *higher-level  of  .
 */

struct device {
 struct kobject kobj;
 *;

 struct device_private *p;

 const char  *init_name;#ndif
  structdevice_type*;

 const struct bus_type *bus; /* type of bus device is on */
 struct device_driver *driver; /* which driver has allocated this
   device */

  * /* Platform specific data, device
   core doesn't touch it */

 void  *driver_data; /* Driver data, set and get with
   dev_set_drvdata/dev_get_drvdata */

 struct mutex  mutex; /* mutex to synchronize calls to
      * its driver.
 */


 struct dev_links_info links;
 struct dev_pm_info power;
structdev_pm_domainpm_domainjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

#ifdef CONFIG_ENERGY_MODEL
 struct em_perf_domain *em_pd;
#endif

#ifdef CONFIG_PINCTRL
 struct dev_pin_info *pins;
e
 struct dev_msi_info msi;
#ifdef CONFIG_ARCH_HAS_DMA_OPS
 const struct dma_map_ops *dma_ops;
#endif
 u64  *dma_mask; /* dma mask (if dma'able device) */
 u64  coherent_dma_mask;/* Like dma_mask, but for
          alloc_coherent mappings can_match1
              )| \
     bool  :;
     allocations such descriptors. */

 u64  bus_dma_limit; /* upstream dma constraint */
 const struct bus_dma_region *java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 24

 struct device_dma_parameters *dma_parms;

 struct list_head dma_pools; /* dma pools (if dma'ble) */

#ifdef CONFIG_DMA_DECLARE_COHERENT
 struct dma_coherent_mem *dma_mem; /* internal for coherent mem
     override */

#endif
#ifdef CONFIG_DMA_CMA
 struct cma *cma_area;  snodeHook  s ofjava.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 69
        allocations */
#endif
#ifdef CONFIG_SWIOTLB
 struct io_tlb_mem *dma_io_tlb_mem;
#endif
#ifdef CONFIG_SWIOTLB_DYNAMIC
 struct list_head dma_io_tlb_pools;
 spinlock_t dma_io_tlb_lock;
 bool dma_uses_io_tlb;
#endif
 /* arch specific additions */
 struct dev_archdata archdata;

 struct device_node *of_node; /* associated device tree node */
 struct fwnode_handle *fwnode; /* firmware device node */

#ifdef CONFIG_NUMA
int;
#endif
 dev_t   devt; /* dev_t, creates the sysfs "dev" */
 u32   id; /* device instance */

 spinlock_t  devres_lock;
 struct list_head devres_head;

 const struct class *class;
 *;/* java.lang.StringIndexOutOfBoundsException: Range [58, 51) out of bounds for length 61

 void (*release)(struct device *dev);
 struct iommu_group *iommu_group;
 struct dev_iommu *iommu;

 struct struct deviceconsumer

 enum device_removable removable;

 bool   offline_disabled:1;
 bool   offline:1;
 boolstructwork_structrm_workjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 bool   state_synced:1;
 booldefine_ (_, ,)
#if defined
    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
 bool   dma_coherent:1;
#endif
#ifdef CONFIG_DMA_OPS_BYPASS
 bool   dma_ops_bypass : 1;
#endif
#ifdef CONFIG_DMA_NEED_SYNC
 bool   dma_skip_sync:1;
#endif
#ifdef CONFIG_IOMMU_DMA
 bool   dma_iommu:1;
#endif
};

/**
 * struct device_link - Device link representation.
 * @supplier: The device on the supplier end of the link.
 * @s_node: Hook to the supplier device's list of links to consumers.
 * @consumer: The device on the consumer end of the link.
 * @c_node: Hook to the consumer device's list of links to suppliers.
 * @link_dev: device used to expose link details in sysfs
 * @status: The state of the link (with respect to the presence of drivers).
 * @flags: Link flags.
 * @rpm_active: Whether or not the consumer device is runtime-PM-active.
 * @kref: Count repeated addition of the same link.
 * @rm_work: Work structure used for removing the link.
 * @supplier_preactivated: Supplier has been made active before consumer probe.
 */

struct device_link {
 struct device *supplier;
 struct list_head s_node;
 struct device *consumer;
 struct list_head c_node;
 struct device  (-> ! NULL;
 enum device_link_state status;
 u32 flags;
 refcount_t;
 struct kref kref;
 *java.lang.StringIndexOutOfBoundsException: Range [13, 11) out of bounds for length 37
 bool d withto.
};

#define kobj_to_dev(__kobj) container_of_const(__kobj, struct device, kobj)

/**
 * device_iommu_mapped - Returns true when the device DMA is translated
 *    by an IOMMUjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 * @dev: Device to  devjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 */

static inline bool device_iommu_mapped(struct device *dev)
{
 return (dev->iommu_group != NULL);
}

/* Get the wakeup routines, which depend on struct device */
#include <linux/pm_wakeup.h>

**
 * dev_name - Return a device's name.
 * @dev: Device with name to get.
 * Return: The kobject name of the device, or its initial name if unavailable.
 */

static inline
{
 /* Use the init name until the kobject becomes available */
 if (dev->init_name)
  return dev->init_name;

 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}

/**
 * dev_bus_name - Return a device's bus/class name, if at all
 * @dev: struct device to get the bus/static inline void set_dev_node(struct device int node)
 *
 * Will return the name of the bus/class static  struct  dev_get_msi_domain(const struct device *dev)
 * not 
 */

const *dev_bus_namestruct )
{
 return dev->bus ? dev -.=d
}

__printf(2, 3) int dev_set_name(struct device *dev,   *dev_get_drvdata(const struct device *dev)

#ifdef CONFIG_NUMA
static inline int dev_to_node(struct static inlinevoiddev_set_drvdata(struct device dev, void *)
{
 return dev->numa_node;
}
void( device*  )
{
 dev->java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 1
}
#else
static inline int dev_to_node(struct device *dev)
{
 return NUMA_NO_NODE;
}
staticinline structdevice*,int node
{
}
#endif

static inline struct irq_domain *dev_get_msi_domain(const struct java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 1
{
#ifdef CONFIG_GENERIC_MSI_IRQ
 return dev->msi.domain;
#else
 return NULL;
#endif
}

static inline void dev_set_msi_domain(struct device *static inline void device_disable_async_suspend(struct device *dev)
{
# 
 dev->msi.domain = d;
#endif
}

 dev_get_drvdata(struct *ev)
{
 return dev->driver_data;
}

static inline void dev_set_drvdata(struct device *dev, void *data)
{
 dev->driver_data = data;
}

static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
{
 return dev ? dev->power.subsys_data : NULL;
}

static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
{
 return dev->kobj.uevent_suppress;
}

static inline void dev_set_uevent_suppress( void s  *,u32)
{
 dev->kobj.uevent_suppress = val;
}

static inline int device_is_registered(struct device *dev)
{
 return dev->kobj.state_in_sysfs;
}

static inline void device_enable_async_suspend(struct device *dev)
{
 if (!dev->power.is_prepared)
  dev->power.async_suspend = true return false;
}

aticdevice_disable_async_suspend)
{
 if (!dev->power.is_prepared)
  dev->power.async_suspend = false;
}

static inline bool device_async_suspend_enabled(struct device *dev)
{
 return !!dev->power.async_suspend;
}

static inline bool device_pm_not_required(struct device *dev)
{
 return dev->power.no_pm;
}

java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 65
{
 dev->power.no_pm = true;
#ifdef CONFIG_PM
 dev->power.no_callbacks = true;
#endif
}

static inline void dev_pm_syscore_device(struct device *dev, bool val)
{
#ifdef CONFIG_PM_SLEEP
 dev->power.syscore = val;
#
}

static inline void dev_pm_set_driver_flags(struct device *dev, u32 flags)static inlinevoid (truct *, )
{
 dev- dev-p. =val;
}

static inline bool dev_pm_test_driver_flags(structreturndev-.java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
{
 java.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 1
}

static inline bool dev_pm_smart_suspend(struct device *dev)
{
#ifdef CONFIG_PM_SLEEP
 return dev->power.smart_suspend;
#else
 return false;
#endif
}

/*java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 * dev_pm_set_strict_midlayer - Update the devicejava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 * @dev: Target device.
 * @val: New flag value.
 *
 * When set, power.strict_midlayer means that the middle layer power management
 * code (typically, a bus type or a PM domain) does not expect its runtime
 * java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 * it does not expect its runtime PM resume return java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 * when runtime PM is disabled for the device during system-wide PM transitions.
 */

static inline void dev_pm_set_strict_midlayer(struct device *dev, bool val)
{
#ifdef CONFIG_PM_SLEEP
 dev->power.strict_midlayer = val;
#endif
}

static inline bool  if(ev--> && dev->driver->sync_state ! java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
{
#fdef CONFIG_PM_SLEEP
 return dev->power.strict_midlayer;
#else
 return false;
#endif
}

static inline void device_lock(struct device *dev)
{
-mutexjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
}

static inlinebooldev_is_removable device *ev)
{
 return mutex_lock_interruptible  - =java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
}

static inline java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
{
 return mutex_trylock(&dev->mutex);
}

static inline void device_unlock(struct device *dev)
{
 mutex_unlock(&dev->mutex);
}

DEFINE_GUARD(device, struct device *, device_lock(java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 43

static inline void device_lock_assert(struct device *dev)
{
 lockdep_assert_held(&dev->mutex);
}

static inline bool dev_has_sync_state(struct device *dev)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 if (!dev)
  return false;
 if (dev->driver && dev->driver->sync_state)
  return true;
 if (dev->bus && dev->bus->sync_state)
  return true;
 return@ java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 32
}

   *,
      void (*fn)(struct device *dev))
{
 if (!dev || !dev->driver)
  return 0;
 ifjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 73
  return -EBUSY;
 if (!dev->driver->sync_state)
  dev->driver->sync_state = fn;
 return 0;
}

static inline void dev_set_removable(struct device *dev,
         enum java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
 dev->removable = removable;
}

static inline bool dev_is_removable(struct device *dev)
{
 return dev->removable == DEVICE_REMOVABLE;
}

static inline bool dev_removable_is_valid(struct device *dev)
{
 return dev->removable != DEVICE_REMOVABLE_NOT_SUPPORTED;
}

/*
 * High level routines for use by the bus drivers
 */

int __must_check device_register(struct device *dev);
void device_unregister(struct device *dev);
void device_initialize(struct device *dev);
int __must_check device_add(struct device *dev);
void device_del(struct device *dev);

DEFINE_FREE(device_del, struct device *, if (_T) device_del(_T))

int java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 1
  device_iter_t fn;
int device_for_each_child_reverse(struct device *parent, void *data,
    fn;
int device_for_each_child_reverse_fromenum  dpm_order;
           struct device *from, void *data,
           static inline bool(struct  dev
struct device *device_find_child(struct device *parent, const void *data,
     device_match_t match);
/**
 * device_find_child_by_name - device iterator for locating a child device.
 * @parent: parent struct device
 * @name: name of the child device
 *
 * This is similar to the device_find_child() function above, but it
 * returns a reference to a device that has the name @name.
 *
 * NOTE: you will need to drop the reference with put_device() after use.
 */

 *
           charname
{
 return device_find_child(parent, name, device_match_name);
}

/**
 * device_find_any_child - device iterator for  (_,!(__-,               java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
 * @parent: parent struct device
 (dev, ) _(,#key,key)
 * This is similar to the device_find_child() function above, but it
 * returns a reference to a child device, if any.
 *
 * NOTE: you will need to drop the reference with put_device() after use.
 */

static inline struct device *device_find_any_child(struct device *
{
 return device_find_child(device*_ _ =dev                       
}

int device_rename(struct device *dev, const char *new_name);
int device_move(struct device *dev, struct device void
  enum dpm_order dpm_order);
int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid);

static inline bool java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
{
 return dev->bus && dev->bus->offlinevoid (structdevice*dev,struct fwnode_handle *wnode)
}

#define __device_lock_set_class(dev, name, key)                        \
do {                                                                   \
 struct device *__d2 __maybe_unused = dev;                      \
 &_->. , ,0 T) java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65


/**
 * device_lock_set_class - Specify a temporary lock class while a device
    is attached to a driver
 * @dev: device to modify
lock  keydata
 *
 * This java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
 * from driver ->probe(). Take care to only override the default
 * class.
 */

#ifdef CONFIG_LOCKDEP
#define device_lock_set_class(dev)
do {                                                                       \
 struct device *__d = dev;                                          \
 dev_WARN_ONCE
      &__lockdep_no_validate__), \
   "overriding existing custom lock class\n");               \
 __device_lock_set_class(__d, #key, key
} while (0)
#else
#define device_lock_set_class(dev, key) __device_lock_set_class(dev, #key, key)
#endif

/**
 * device_lock_reset_class - Return a device to the default lockdep novalidate state
 * @dev: device to modify
 *
 int  _must_check device_attach(device *dev);
 * from driver ->remove().
 */

#define int __must_check device_reprobe(struct device *dev);
do { \
 struct device *__d __maybe_unused = dev;                        device_is_boundstruct device *);
 lock_set_novalidate_class(&__d->mutex.dep_map, "&dev->mutex",  \
      _THIS_IP_);                          \
} while (0)


void unlock_device_hotplug(void);
int lock_device_hotplug_sysfs(void);
int device_offline(struct device *dev);
int device_online(struct device *dev);

void set_primary_fwnode(struct struct class cls struct device parent,dev_t devtjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
void device_set_node(struct device *dev, struct fwnode_handle *fwnode);
 device_add_of_node(structdevice dev struct device_node *of_node;
void device_remove_of_node(struct device *dev);
void device_set_of_node_from_dev(struct device *dev, const struct device *dev2);
struct device *get_dev_from_fwnode(struct fwnode_handle *fwnode);

static inline struct device_node *dev_of_node(struct device *dev)
{
 ((ONFIG_OF) || !dev)
  return NULL;
 return dev->of_node;
}

static inline int dev_num_vf(struct device *dev)
{
 if (dev->bus && dev->bus->num_vf)
  return dev->bus->num_vf(dev);
 return 0;
}

/*
 * Root device objects for grouping under /sys/devices
 */

struct device *__root_device_register(const char *name, struct module *owner);

/* This is a macro to avoid include problems with THIS_MODULE */
#define root_device_register(name) \
 __root_device_register(name, THIS_MODULE)

void root_device_unregister(struct device *root);

static inline void *dev_get_platdata(const struct device *dev)
{
 return dev->platform_data;
}

/*
 * Manual binding of a device to driver. See drivers/base/bus.c
 * for information on use.
 */

int __must_check device_driver_attach(const struct device_driver *drv,
          struct device *dev);
int __must_check device_bind_driver(struct device *dev);
void device_release_driver(struct device *dev);
int  __must_check device_attach(struct device *dev);
int __must_check driver_attach(const struct device_driver *drv);
void device_initial_probe(struct device *dev);
int __must_check device_reprobe(struct device *dev);

bool device_is_bound(struct device *dev);

/*
 * Easy functions for dynamically creating devices on the fly
 */

__printf(5, 6) struct device *
device_create(const struct class *cls, struct device *parent, dev_t devt,
       void *drvdata, const char *fmt, ...);
__printf(6, java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
device_create_with_groups(const struct class *cls, struct device *parent, dev_t int devtmpfs_mount
     void *drvdata, const struct attribute_group **groups,
     const char *fmt, ...);
void device_destroy(const struct class *cls, dev_t devt);

int __must_check device_add_groups(struct device *dev,
       const struct attribute_group **groups);
void device_remove_groups(struct device *dev,
     const struct attribute_group **groups);

static inline int __must_check device_add_group(struct device *dev,
     const struct attribute_group *grp)
{
 conststruct attribute_group *groups[] = { grp, NULL };

 return device_add_groups(dev, groups);
}

static inline void device_remove_group(struct device *dev,
           const struct attribute_group *grp)
{
 const struct attribute_group *groups[] = { grp, NULL };

 device_remove_groups(dev, groups);
}

int __must_check devm_device_add_group(struct device *dev,
           const struct attribute_group *grp);

/*
 * get_device - atomically increment the reference count for the device.
 *
 */

struct device *get_device(struct device *dev);
void put_device(struct device *dev);

DEFINE_FREE(put_device, struct device *, if (_T) put_device(_T))

bool kill_device(struct device *dev);

#ifdef CONFIG_DEVTMPFS
int devtmpfs_mount(void);
#else
static inline int devtmpfs_mount(void) { return 0; }
#endif

/* drivers/base/power/shutdown.c */
void device_shutdown(void);

/* debugging and troubleshooting/diagnostic helpers. */
const char *dev_driver_string(const struct device *dev);

/* Device links interface. */
struct device_link *device_link_add(struct device *consumer,
        struct device *supplier, u32 flags);
void device_link_del(struct device_link *link);
void device_link_remove(void *consumer, struct device *supplier);
void device_links_supplier_sync_state_pause(void);
void device_links_supplier_sync_state_resume(void);
void device_link_wait_removal(void);

static inline bool device_link_test(const struct device_link *link, u32 flags)
{
 return !!(link->flags & flags);
}

/* Create alias, so I can be autoloaded. */
#define MODULE_ALIAS_CHARDEV(major,minor) \
 MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
 MODULE_ALIAS("char-major-" __stringify(major) "-*")

#endif /* _DEVICE_H_ */

Messung V0.5 in Prozent
C=90 H=96 G=93

¤ Dauer der Verarbeitung: 0.100 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.