[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-driver-devel
Subject:    [driver-core:driver-core-testing 9/17] htmldocs: include/linux/device.h:1336: warning: Function para
From:       kbuild test robot <lkp () intel ! com>
Date:       2019-07-31 18:12:26
Message-ID: 201908010222.HWFtzyBa%lkp () intel ! com
[Download RAW message or body]

tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/gregkh/driver-core.git \
                driver-core-testing
head:   90eb808c54acbacfb76b408036dc0fc287b46901
commit: d4d28915bc4a5db5370387e2622b2cb5502d229a [9/17] driver core: Add edit_links() \
                callback for drivers
reproduce: make htmldocs

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   Warning: The Sphinx 'sphinx_rtd_theme' HTML theme was not found. Make sure you \
have the theme installed to produce pretty HTML output. Falling back to the default \
theme.  WARNING: dot(1) not found, for better output quality install graphviz from \
http://www.graphviz.org  WARNING: convert(1) not found, for SVG to PDF conversion \
install ImageMagick (https://www.imagemagick.org)  include/linux/w1.h:272: warning: \
Function parameter or member 'of_match_table' not described in 'w1_family'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member 'quotactl' not \
described in 'security_list_options'  include/linux/lsm_hooks.h:1811: warning: \
Function parameter or member 'quota_on' not described in 'security_list_options'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member \
'sb_free_mnt_opts' not described in 'security_list_options'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member \
'sb_eat_lsm_opts' not described in 'security_list_options'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member 'sb_kern_mount' \
not described in 'security_list_options'  include/linux/lsm_hooks.h:1811: warning: \
Function parameter or member 'sb_show_options' not described in \
'security_list_options'  include/linux/lsm_hooks.h:1811: warning: Function parameter \
or member 'sb_add_mnt_opt' not described in 'security_list_options'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member 'd_instantiate' \
not described in 'security_list_options'  include/linux/lsm_hooks.h:1811: warning: \
Function parameter or member 'getprocattr' not described in 'security_list_options'  \
include/linux/lsm_hooks.h:1811: warning: Function parameter or member 'setprocattr' \
not described in 'security_list_options'  lib/genalloc.c:1: warning: \
'gen_pool_add_virt' not found  lib/genalloc.c:1: warning: 'gen_pool_alloc' not found
   lib/genalloc.c:1: warning: 'gen_pool_free' not found
   lib/genalloc.c:1: warning: 'gen_pool_alloc_algo' not found
   include/linux/i2c.h:337: warning: Function parameter or member 'init_irq' not \
described in 'i2c_client'  fs/direct-io.c:258: warning: Excess function parameter \
'offset' description in 'dio_complete'  fs/libfs.c:496: warning: Excess function \
parameter 'available' description in 'simple_write_end'  fs/posix_acl.c:647: warning: \
Function parameter or member 'inode' not described in 'posix_acl_update_mode'  \
fs/posix_acl.c:647: warning: Function parameter or member 'mode_p' not described in \
'posix_acl_update_mode'  fs/posix_acl.c:647: warning: Function parameter or member \
'acl' not described in 'posix_acl_update_mode'  \
include/linux/regulator/machine.h:196: warning: Function parameter or member \
'max_uV_step' not described in 'regulation_constraints'  \
include/linux/regulator/driver.h:223: warning: Function parameter or member 'resume' \
not described in 'regulator_ops'  include/linux/spi/spi.h:190: warning: Function \
parameter or member 'driver_override' not described in 'spi_device'  \
drivers/usb/typec/bus.c:1: warning: 'typec_altmode_register_driver' not found  \
drivers/usb/typec/bus.c:1: warning: 'typec_altmode_unregister_driver' not found  \
drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found  \
drivers/usb/typec/class.c:1: warning: 'typec_altmode_unregister_notifier' not found  \
include/linux/device.h:248: warning: Function parameter or member 'bus' not described \
in 'bus_find_next_device'  include/linux/device.h:248: warning: Function parameter or \
member 'cur' not described in 'bus_find_next_device'  include/linux/device.h:465: \
warning: Function parameter or member 'drv' not described in \
'driver_find_device_by_name'  include/linux/device.h:465: warning: Excess function \
parameter 'driver' description in 'driver_find_device_by_name'  \
include/linux/device.h:478: warning: Function parameter or member 'drv' not described \
in 'driver_find_device_by_of_node'  include/linux/device.h:478: warning: Excess \
function parameter 'driver' description in 'driver_find_device_by_of_node'  \
include/linux/device.h:491: warning: Function parameter or member 'drv' not described \
in 'driver_find_device_by_fwnode'  include/linux/device.h:491: warning: Excess \
function parameter 'driver' description in 'driver_find_device_by_fwnode'  \
include/linux/device.h:503: warning: Function parameter or member 'drv' not described \
in 'driver_find_device_by_devt'  include/linux/device.h:503: warning: Excess function \
parameter 'driver' description in 'driver_find_device_by_devt'  \
include/linux/device.h:523: warning: Function parameter or member 'drv' not described \
in 'driver_find_device_by_acpi_dev'  include/linux/device.h:523: warning: Excess \
function parameter 'driver' description in 'driver_find_device_by_acpi_dev'
> > include/linux/device.h:1336: warning: Function parameter or member \
> > 'has_edit_links' not described in 'device'
   include/linux/input/sparse-keymap.h:43: warning: Function parameter or member 'sw' \
not described in 'key_entry'  include/linux/skbuff.h:893: warning: Function parameter \
or member 'dev_scratch' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member 'list' not described in 'sk_buff'  \
include/linux/skbuff.h:893: warning: Function parameter or member 'ip_defrag_offset' \
not described in 'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter \
or member 'skb_mstamp_ns' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'  \
include/linux/skbuff.h:893: warning: Function parameter or member 'head_frag' not \
described in 'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter or \
member '__pkt_type_offset' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member 'encapsulation' not described in 'sk_buff'  \
include/linux/skbuff.h:893: warning: Function parameter or member 'encap_hdr_csum' \
not described in 'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter \
or member 'csum_valid' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member '__pkt_vlan_present_offset' not described in \
'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter or member \
'vlan_present' not described in 'sk_buff'  include/linux/skbuff.h:893: warning: \
Function parameter or member 'csum_complete_sw' not described in 'sk_buff'  \
include/linux/skbuff.h:893: warning: Function parameter or member 'csum_level' not \
described in 'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter or \
member 'inner_protocol_type' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'  \
include/linux/skbuff.h:893: warning: Function parameter or member 'sender_cpu' not \
described in 'sk_buff'  include/linux/skbuff.h:893: warning: Function parameter or \
member 'reserved_tailroom' not described in 'sk_buff'  include/linux/skbuff.h:893: \
warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'  \
include/net/sock.h:233: warning: Function parameter or member 'skc_addrpair' not \
described in 'sock_common'  include/net/sock.h:233: warning: Function parameter or \
member 'skc_portpair' not described in 'sock_common'  include/net/sock.h:233: \
warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'  \
include/net/sock.h:233: warning: Function parameter or member 'skc_net_refcnt' not \
described in 'sock_common'  include/net/sock.h:233: warning: Function parameter or \
member 'skc_v6_daddr' not described in 'sock_common'  include/net/sock.h:233: \
warning: Function parameter or member 'skc_v6_rcv_saddr' not described in \
'sock_common'  include/net/sock.h:233: warning: Function parameter or member \
'skc_cookie' not described in 'sock_common'  include/net/sock.h:233: warning: \
Function parameter or member 'skc_listener' not described in 'sock_common'  \
include/net/sock.h:233: warning: Function parameter or member 'skc_tw_dr' not \
described in 'sock_common'  include/net/sock.h:233: warning: Function parameter or \
member 'skc_rcv_wnd' not described in 'sock_common'  include/net/sock.h:233: warning: \
Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'  \
include/net/sock.h:515: warning: Function parameter or member 'sk_rx_skb_cache' not \
described in 'sock'  include/net/sock.h:515: warning: Function parameter or member \
'sk_wq_raw' not described in 'sock'  include/net/sock.h:515: warning: Function \
parameter or member 'tcp_rtx_queue' not described in 'sock'  include/net/sock.h:515: \
warning: Function parameter or member 'sk_tx_skb_cache' not described in 'sock'  \
include/net/sock.h:515: warning: Function parameter or member 'sk_route_forced_caps' \
not described in 'sock'  include/net/sock.h:515: warning: Function parameter or \
member 'sk_txtime_report_errors' not described in 'sock'  include/net/sock.h:515: \
warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock'  \
include/net/sock.h:515: warning: Function parameter or member 'sk_bpf_storage' not \
described in 'sock'  include/net/sock.h:2439: warning: Function parameter or member \
'tcp_rx_skb_cache_key' not described in 'DECLARE_STATIC_KEY_FALSE'  \
include/net/sock.h:2439: warning: Excess function parameter 'sk' description in \
'DECLARE_STATIC_KEY_FALSE'  include/net/sock.h:2439: warning: Excess function \
parameter 'skb' description in 'DECLARE_STATIC_KEY_FALSE'  \
include/linux/netdevice.h:2040: warning: Function parameter or member \
'gso_partial_features' not described in 'net_device'  include/linux/netdevice.h:2040: \
warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member 'xfrmdev_ops' \
not described in 'net_device'  include/linux/netdevice.h:2040: warning: Function \
parameter or member 'tlsdev_ops' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member \
'name_assign_type' not described in 'net_device'  include/linux/netdevice.h:2040: \
warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member 'mpls_ptr' not \
described in 'net_device'  include/linux/netdevice.h:2040: warning: Function \
parameter or member 'xdp_prog' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member \
'gro_flush_timeout' not described in 'net_device'  include/linux/netdevice.h:2040: \
warning: Function parameter or member 'nf_hooks_ingress' not described in \
'net_device'  include/linux/netdevice.h:2040: warning: Function parameter or member \
'____cacheline_aligned_in_smp' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member 'qdisc_hash' \
not described in 'net_device'  include/linux/netdevice.h:2040: warning: Function \
parameter or member 'xps_cpus_map' not described in 'net_device'  \
include/linux/netdevice.h:2040: warning: Function parameter or member 'xps_rxqs_map' \
not described in 'net_device'  include/linux/phylink.h:56: warning: Function \
parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in \
'phylink_link_state'  include/linux/phylink.h:56: warning: Function parameter or \
member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in \
'phylink_link_state'  drivers/net/phy/phylink.c:593: warning: Function parameter or \
member 'config' not described in 'phylink_create'  drivers/net/phy/phylink.c:593: \
warning: Excess function parameter 'ndev' description in 'phylink_create'  \
include/net/mac80211.h:2006: warning: Function parameter or member 'txpwr' not \
described in 'ieee80211_sta'  include/linux/mod_devicetable.h:822: warning: Function \
parameter or member 'context' not described in 'wmi_device_id'  \
include/linux/device.h:464: warning: Excess function parameter 'driver' description \
in 'driver_find_device_by_name'  include/linux/device.h:477: warning: Excess function \
parameter 'driver' description in 'driver_find_device_by_of_node'  \
include/linux/device.h:490: warning: Excess function parameter 'driver' description \
in 'driver_find_device_by_fwnode'  include/linux/device.h:502: warning: Excess \
function parameter 'driver' description in 'driver_find_device_by_devt'  \
include/linux/device.h:522: warning: Excess function parameter 'driver' description \
in 'driver_find_device_by_acpi_dev'  include/linux/clk.h:381: warning: Function \
parameter or member 'num_clks' not described in 'devm_clk_bulk_get_optional'  \
mm/util.c:1: warning: 'get_user_pages_fast' not found  mm/slab.c:4215: warning: \
Function parameter or member 'objp' not described in '__ksize'  \
include/net/cfg80211.h:1092: warning: Function parameter or member 'txpwr' not \
described in 'station_parameters'  include/net/mac80211.h:4043: warning: Function \
parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:142: warning: Function parameter or member \
'blockable' not described in 'amdgpu_mn_read_lock'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:347: warning: cannot understand function \
prototype: 'struct amdgpu_vm_pt_cursor '  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:348: \
warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:494: warning: Function parameter or member \
'start' not described in 'amdgpu_vm_pt_first_dfs'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member \
'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member \
'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member \
'start' not described in 'for_each_amdgpu_vm_pt_dfs_safe'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member \
'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member \
'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:823: warning: Function parameter or member \
'level' not described in 'amdgpu_vm_bo_param'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'params' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'bo' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'level' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'pe' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'addr' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'count' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'incr' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1285: warning: Function parameter or member \
'flags' not described in 'amdgpu_vm_update_flags'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:2822: warning: Function parameter or member \
'pasid' not described in 'amdgpu_vm_make_compute'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:378: warning: Excess function parameter \
'entry' description in 'amdgpu_irq_dispatch'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Function parameter or member \
'ih' not described in 'amdgpu_irq_dispatch'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Excess function parameter \
'entry' description in 'amdgpu_irq_dispatch'  \
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:1: warning: no structured comments found  \
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1: warning: no structured comments found  \
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c:1: warning: 'pp_dpm_sclk pp_dpm_mclk \
pp_dpm_pcie' not found  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:131: \
warning: Incorrect use of kernel-doc format:          * @atomic_obj  \
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:237: warning: Incorrect use of \
kernel-doc format:          * gpu_info FW provided soc bounding box struct or 0 if \
not  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:242: warning: Function \
parameter or member 'atomic_obj' not described in 'amdgpu_display_manager'

vim +1336 include/linux/device.h

^1da177e4c3f415 Linus Torvalds         2005-04-16 @1336  
a4232963757e62b Lars-Peter Clausen     2012-07-03  1337  static inline struct device \
*kobj_to_dev(struct kobject *kobj) a4232963757e62b Lars-Peter Clausen     2012-07-03  \
1338  { a4232963757e62b Lars-Peter Clausen     2012-07-03  1339  	return \
container_of(kobj, struct device, kobj); a4232963757e62b Lars-Peter Clausen     \
2012-07-03  1340  } a4232963757e62b Lars-Peter Clausen     2012-07-03  1341  
dbba197edf32209 Joerg Roedel           2018-11-30  1342  /**
dbba197edf32209 Joerg Roedel           2018-11-30  1343   * device_iommu_mapped - \
Returns true when the device DMA is translated dbba197edf32209 Joerg Roedel           \
2018-11-30  1344   *			 by an IOMMU dbba197edf32209 Joerg Roedel           2018-11-30 \
1345   * @dev: Device to perform the check on dbba197edf32209 Joerg Roedel           \
2018-11-30  1346   */ dbba197edf32209 Joerg Roedel           2018-11-30  1347  static \
inline bool device_iommu_mapped(struct device *dev) dbba197edf32209 Joerg Roedel      \
2018-11-30  1348  { dbba197edf32209 Joerg Roedel           2018-11-30  1349  	return \
(dev->iommu_group != NULL); dbba197edf32209 Joerg Roedel           2018-11-30  1350  \
} dbba197edf32209 Joerg Roedel           2018-11-30  1351  
9a3df1f7de0ecaf Alan Stern             2008-03-19  1352  /* Get the wakeup routines, \
which depend on struct device */ 9a3df1f7de0ecaf Alan Stern             2008-03-19  \
1353  #include <linux/pm_wakeup.h> 9a3df1f7de0ecaf Alan Stern             2008-03-19  \
1354   bf9ca69fc8d19d4 Jean Delvare           2008-07-30  1355  static inline const \
char *dev_name(const struct device *dev) 06916639e2fed9e Kay Sievers            \
2008-05-02  1356  { a636ee7fb35b731 Paul Mundt             2010-03-09  1357  	/* Use \
the init name until the kobject becomes available */ a636ee7fb35b731 Paul Mundt       \
2010-03-09  1358  	if (dev->init_name) a636ee7fb35b731 Paul Mundt             \
2010-03-09  1359  		return dev->init_name; a636ee7fb35b731 Paul Mundt             \
2010-03-09  1360   1fa5ae857bb14f6 Kay Sievers            2009-01-25  1361  	return \
kobject_name(&dev->kobj); 06916639e2fed9e Kay Sievers            2008-05-02  1362  }
06916639e2fed9e Kay Sievers            2008-05-02  1363  
b9075fa968a0a43 Joe Perches            2011-10-31  1364  extern __printf(2, 3)
b9075fa968a0a43 Joe Perches            2011-10-31  1365  int dev_set_name(struct \
device *dev, const char *name, ...); 413c239fad68258 Stephen Rothwell       \
2008-05-30  1366   873481367edb18a Christoph Hellwig      2006-12-06  1367  #ifdef \
CONFIG_NUMA 873481367edb18a Christoph Hellwig      2006-12-06  1368  static inline \
int dev_to_node(struct device *dev) 873481367edb18a Christoph Hellwig      2006-12-06 \
1369  { 873481367edb18a Christoph Hellwig      2006-12-06  1370  	return \
dev->numa_node; 873481367edb18a Christoph Hellwig      2006-12-06  1371  }
873481367edb18a Christoph Hellwig      2006-12-06  1372  static inline void \
set_dev_node(struct device *dev, int node) 873481367edb18a Christoph Hellwig      \
2006-12-06  1373  { 873481367edb18a Christoph Hellwig      2006-12-06  1374  \
dev->numa_node = node; 873481367edb18a Christoph Hellwig      2006-12-06  1375  }
873481367edb18a Christoph Hellwig      2006-12-06  1376  #else
873481367edb18a Christoph Hellwig      2006-12-06  1377  static inline int \
dev_to_node(struct device *dev) 873481367edb18a Christoph Hellwig      2006-12-06  \
1378  { 98fa15f34cb3798 Anshuman Khandual      2019-03-05  1379  	return \
NUMA_NO_NODE; 873481367edb18a Christoph Hellwig      2006-12-06  1380  }
873481367edb18a Christoph Hellwig      2006-12-06  1381  static inline void \
set_dev_node(struct device *dev, int node) 873481367edb18a Christoph Hellwig      \
2006-12-06  1382  { 873481367edb18a Christoph Hellwig      2006-12-06  1383  }
873481367edb18a Christoph Hellwig      2006-12-06  1384  #endif
873481367edb18a Christoph Hellwig      2006-12-06  1385  
f1421db8ca4c110 Marc Zyngier           2015-07-28  1386  static inline struct \
irq_domain *dev_get_msi_domain(const struct device *dev) f1421db8ca4c110 Marc Zyngier \
2015-07-28  1387  { f1421db8ca4c110 Marc Zyngier           2015-07-28  1388  #ifdef \
CONFIG_GENERIC_MSI_IRQ_DOMAIN f1421db8ca4c110 Marc Zyngier           2015-07-28  1389 \
return dev->msi_domain; f1421db8ca4c110 Marc Zyngier           2015-07-28  1390  \
#else f1421db8ca4c110 Marc Zyngier           2015-07-28  1391  	return NULL;
f1421db8ca4c110 Marc Zyngier           2015-07-28  1392  #endif
f1421db8ca4c110 Marc Zyngier           2015-07-28  1393  }
f1421db8ca4c110 Marc Zyngier           2015-07-28  1394  
f1421db8ca4c110 Marc Zyngier           2015-07-28  1395  static inline void \
dev_set_msi_domain(struct device *dev, struct irq_domain *d) f1421db8ca4c110 Marc \
Zyngier           2015-07-28  1396  { f1421db8ca4c110 Marc Zyngier           \
2015-07-28  1397  #ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN f1421db8ca4c110 Marc Zyngier   \
2015-07-28  1398  	dev->msi_domain = d; f1421db8ca4c110 Marc Zyngier           \
2015-07-28  1399  #endif f1421db8ca4c110 Marc Zyngier           2015-07-28  1400  }
f1421db8ca4c110 Marc Zyngier           2015-07-28  1401  
a996d010b648788 Jean Delvare           2014-04-14  1402  static inline void \
*dev_get_drvdata(const struct device *dev) a996d010b648788 Jean Delvare           \
2014-04-14  1403  { a996d010b648788 Jean Delvare           2014-04-14  1404  	return \
dev->driver_data; a996d010b648788 Jean Delvare           2014-04-14  1405  }
a996d010b648788 Jean Delvare           2014-04-14  1406  
a996d010b648788 Jean Delvare           2014-04-14  1407  static inline void \
dev_set_drvdata(struct device *dev, void *data) a996d010b648788 Jean Delvare          \
2014-04-14  1408  { a996d010b648788 Jean Delvare           2014-04-14  1409  \
dev->driver_data = data; a996d010b648788 Jean Delvare           2014-04-14  1410  }
a996d010b648788 Jean Delvare           2014-04-14  1411  
5c095a0e0d600d5 Rafael J. Wysocki      2011-08-25  1412  static inline struct \
pm_subsys_data *dev_to_psd(struct device *dev) 5c095a0e0d600d5 Rafael J. Wysocki      \
2011-08-25  1413  { 5c095a0e0d600d5 Rafael J. Wysocki      2011-08-25  1414  	return \
dev ? dev->power.subsys_data : NULL; 5c095a0e0d600d5 Rafael J. Wysocki      \
2011-08-25  1415  } 5c095a0e0d600d5 Rafael J. Wysocki      2011-08-25  1416  
f67f129e519fa87 Ming Lei               2009-03-01  1417  static inline unsigned int \
dev_get_uevent_suppress(const struct device *dev) f67f129e519fa87 Ming Lei            \
2009-03-01  1418  { f67f129e519fa87 Ming Lei               2009-03-01  1419  	return \
dev->kobj.uevent_suppress; f67f129e519fa87 Ming Lei               2009-03-01  1420  }
f67f129e519fa87 Ming Lei               2009-03-01  1421  
f67f129e519fa87 Ming Lei               2009-03-01  1422  static inline void \
dev_set_uevent_suppress(struct device *dev, int val) f67f129e519fa87 Ming Lei         \
2009-03-01  1423  { f67f129e519fa87 Ming Lei               2009-03-01  1424  \
dev->kobj.uevent_suppress = val; f67f129e519fa87 Ming Lei               2009-03-01  \
1425  } f67f129e519fa87 Ming Lei               2009-03-01  1426  
d305ef5d2a4e77b Daniel Ritz            2005-09-22  1427  static inline int \
device_is_registered(struct device *dev) d305ef5d2a4e77b Daniel Ritz            \
2005-09-22  1428  { 3f62e5700b2a679 Greg Kroah-Hartman     2008-03-13  1429  	return \
dev->kobj.state_in_sysfs; d305ef5d2a4e77b Daniel Ritz            2005-09-22  1430  }
d305ef5d2a4e77b Daniel Ritz            2005-09-22  1431  
5af84b82701a96b Rafael J. Wysocki      2010-01-23  1432  static inline void \
device_enable_async_suspend(struct device *dev) 5af84b82701a96b Rafael J. Wysocki     \
2010-01-23  1433  { f76b168b6f117a4 Alan Stern             2011-06-18  1434  	if \
(!dev->power.is_prepared) 5af84b82701a96b Rafael J. Wysocki      2010-01-23  1435  \
dev->power.async_suspend = true; 5af84b82701a96b Rafael J. Wysocki      2010-01-23  \
1436  } 5af84b82701a96b Rafael J. Wysocki      2010-01-23  1437  
5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1438  static inline void \
device_disable_async_suspend(struct device *dev) 5a2eb8585f3b38e Rafael J. Wysocki    \
2010-01-23  1439  { f76b168b6f117a4 Alan Stern             2011-06-18  1440  	if \
(!dev->power.is_prepared) 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1441  \
dev->power.async_suspend = false; 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  \
1442  } 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1443  
5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1444  static inline bool \
device_async_suspend_enabled(struct device *dev) 5a2eb8585f3b38e Rafael J. Wysocki    \
2010-01-23  1445  { 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1446  	return \
!!dev->power.async_suspend; 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1447  \
} 5a2eb8585f3b38e Rafael J. Wysocki      2010-01-23  1448  
85945c28b5a8880 Sudeep Holla           2019-02-14  1449  static inline bool \
device_pm_not_required(struct device *dev) 85945c28b5a8880 Sudeep Holla           \
2019-02-14  1450  { 85945c28b5a8880 Sudeep Holla           2019-02-14  1451  	return \
dev->power.no_pm; 85945c28b5a8880 Sudeep Holla           2019-02-14  1452  }
85945c28b5a8880 Sudeep Holla           2019-02-14  1453  
85945c28b5a8880 Sudeep Holla           2019-02-14  1454  static inline void \
device_set_pm_not_required(struct device *dev) 85945c28b5a8880 Sudeep Holla           \
2019-02-14  1455  { 85945c28b5a8880 Sudeep Holla           2019-02-14  1456  \
dev->power.no_pm = true; 85945c28b5a8880 Sudeep Holla           2019-02-14  1457  }
85945c28b5a8880 Sudeep Holla           2019-02-14  1458  
feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1459  static inline void \
dev_pm_syscore_device(struct device *dev, bool val) feb70af0e3ac681 Rafael J. Wysocki \
2012-08-13  1460  { feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1461  #ifdef \
CONFIG_PM_SLEEP feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1462  \
dev->power.syscore = val; feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1463  \
#endif feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1464  }
feb70af0e3ac681 Rafael J. Wysocki      2012-08-13  1465  
08810a4119aaebf Rafael J. Wysocki      2017-10-25  1466  static inline void \
dev_pm_set_driver_flags(struct device *dev, u32 flags) 08810a4119aaebf Rafael J. \
Wysocki      2017-10-25  1467  { 08810a4119aaebf Rafael J. Wysocki      2017-10-25  \
1468  	dev->power.driver_flags = flags; 08810a4119aaebf Rafael J. Wysocki      \
2017-10-25  1469  } 08810a4119aaebf Rafael J. Wysocki      2017-10-25  1470  
08810a4119aaebf Rafael J. Wysocki      2017-10-25  1471  static inline bool \
dev_pm_test_driver_flags(struct device *dev, u32 flags) 08810a4119aaebf Rafael J. \
Wysocki      2017-10-25  1472  { 08810a4119aaebf Rafael J. Wysocki      2017-10-25  \
1473  	return !!(dev->power.driver_flags & flags); 08810a4119aaebf Rafael J. Wysocki  \
2017-10-25  1474  } 08810a4119aaebf Rafael J. Wysocki      2017-10-25  1475  
8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1476  static inline void \
device_lock(struct device *dev) 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  \
1477  { 3142788b7967ccf Thomas Gleixner        2010-01-29  1478  \
mutex_lock(&dev->mutex); 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1479  }
8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1480  
7dd9cba5bb90ffa Oliver Neukum          2016-01-21  1481  static inline int \
device_lock_interruptible(struct device *dev) 7dd9cba5bb90ffa Oliver Neukum          \
2016-01-21  1482  { 7dd9cba5bb90ffa Oliver Neukum          2016-01-21  1483  	return \
mutex_lock_interruptible(&dev->mutex); 7dd9cba5bb90ffa Oliver Neukum          \
2016-01-21  1484  } 7dd9cba5bb90ffa Oliver Neukum          2016-01-21  1485  
8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1486  static inline int \
device_trylock(struct device *dev) 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  \
1487  { 3142788b7967ccf Thomas Gleixner        2010-01-29  1488  	return \
mutex_trylock(&dev->mutex); 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1489  \
} 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1490  
8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1491  static inline void \
device_unlock(struct device *dev) 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  \
1492  { 3142788b7967ccf Thomas Gleixner        2010-01-29  1493  \
mutex_unlock(&dev->mutex); 8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1494  }
8e9394ce2412254 Greg Kroah-Hartman     2010-02-17  1495  
ac8010221d3fa86 Konrad Rzeszutek Wilk  2014-12-03  1496  static inline void \
device_lock_assert(struct device *dev) ac8010221d3fa86 Konrad Rzeszutek Wilk  \
2014-12-03  1497  { ac8010221d3fa86 Konrad Rzeszutek Wilk  2014-12-03  1498  \
lockdep_assert_held(&dev->mutex); ac8010221d3fa86 Konrad Rzeszutek Wilk  2014-12-03  \
1499  } ac8010221d3fa86 Konrad Rzeszutek Wilk  2014-12-03  1500  
e8a51e1b51ee573 Benjamin Herrenschmidt 2015-02-17  1501  static inline struct \
device_node *dev_of_node(struct device *dev) e8a51e1b51ee573 Benjamin Herrenschmidt \
2015-02-17  1502  { 1b833924e5b3cea Stephen Boyd           2019-04-12  1503  	if \
(!IS_ENABLED(CONFIG_OF) || !dev) e8a51e1b51ee573 Benjamin Herrenschmidt 2015-02-17  \
1504  		return NULL; e8a51e1b51ee573 Benjamin Herrenschmidt 2015-02-17  1505  	return \
dev->of_node; e8a51e1b51ee573 Benjamin Herrenschmidt 2015-02-17  1506  }
e8a51e1b51ee573 Benjamin Herrenschmidt 2015-02-17  1507  
1f21782e63da81f Adrian Bunk            2006-12-19  1508  void driver_init(void);
1f21782e63da81f Adrian Bunk            2006-12-19  1509  
^1da177e4c3f415 Linus Torvalds         2005-04-16  1510  /*
^1da177e4c3f415 Linus Torvalds         2005-04-16  1511   * High level routines for \
use by the bus drivers ^1da177e4c3f415 Linus Torvalds         2005-04-16  1512   */
4a7fb6363f2d1a6 Andrew Morton          2006-08-14  1513  extern int __must_check \
device_register(struct device *dev); ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1514  extern void device_unregister(struct device *dev); ^1da177e4c3f415 \
Linus Torvalds         2005-04-16  1515  extern void device_initialize(struct device \
*dev); 4a7fb6363f2d1a6 Andrew Morton          2006-08-14  1516  extern int \
__must_check device_add(struct device *dev); ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1517  extern void device_del(struct device *dev); d462943afee8bff Greg \
Kroah-Hartman     2008-01-24  1518  extern int device_for_each_child(struct device \
*dev, void *data, d462943afee8bff Greg Kroah-Hartman     2008-01-24  1519  		     int \
(*fn)(struct device *dev, void *data)); 3d060aeb72113cd Andy Shevchenko        \
2015-07-27  1520  extern int device_for_each_child_reverse(struct device *dev, void \
*data, 3d060aeb72113cd Andy Shevchenko        2015-07-27  1521  		     int \
(*fn)(struct device *dev, void *data)); d462943afee8bff Greg Kroah-Hartman     \
2008-01-24  1522  extern struct device *device_find_child(struct device *dev, void \
*data, d462943afee8bff Greg Kroah-Hartman     2008-01-24  1523  				int \
(*match)(struct device *dev, void *data)); dad9bb017865ae7 Heikki Krogerus        \
2019-05-31  1524  extern struct device *device_find_child_by_name(struct device \
*parent, dad9bb017865ae7 Heikki Krogerus        2019-05-31  1525  						const char \
*name); 6937e8f8c0135f2 Johannes Berg          2010-08-05  1526  extern int \
device_rename(struct device *dev, const char *new_name); ffa6a7054d172a2 Cornelia \
Huck          2009-03-04  1527  extern int device_move(struct device *dev, struct \
device *new_parent, ffa6a7054d172a2 Cornelia Huck          2009-03-04  1528  		       \
enum dpm_order dpm_order); e454cea20bdcff1 Kay Sievers            2009-09-18  1529  \
extern const char *device_get_devnode(struct device *dev, 4e4098a3e08783c Greg \
Kroah-Hartman     2013-04-11  1530  				      umode_t *mode, kuid_t *uid, kgid_t \
*gid, 3c2670e6515cf58 Kay Sievers            2013-04-06  1531  				      const char \
**tmp); ^1da177e4c3f415 Linus Torvalds         2005-04-16  1532  
4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1533  static inline bool \
device_supports_offline(struct device *dev) 4f3549d72d1b5c9 Rafael J. Wysocki      \
2013-05-02  1534  { 4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1535  	return \
dev->bus && dev->bus->offline && dev->bus->online; 4f3549d72d1b5c9 Rafael J. Wysocki  \
2013-05-02  1536  } 4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1537  
4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1538  extern void \
lock_device_hotplug(void); 4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1539  \
extern void unlock_device_hotplug(void); 5e33bc4165f3edd Rafael J. Wysocki      \
2013-08-28  1540  extern int lock_device_hotplug_sysfs(void); 4f3549d72d1b5c9 Rafael \
J. Wysocki      2013-05-02  1541  extern int device_offline(struct device *dev); \
4f3549d72d1b5c9 Rafael J. Wysocki      2013-05-02  1542  extern int \
device_online(struct device *dev); 97badf873ab60e8 Rafael J. Wysocki      2015-04-03  \
1543  extern void set_primary_fwnode(struct device *dev, struct fwnode_handle \
*fwnode); 97badf873ab60e8 Rafael J. Wysocki      2015-04-03  1544  extern void \
set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode); \
4e75e1d7dac9d7c Johan Hovold           2017-06-06  1545  void \
device_set_of_node_from_dev(struct device *dev, const struct device *dev2); \
97badf873ab60e8 Rafael J. Wysocki      2015-04-03  1546   9af15c38254d81c Phil Sutter \
2017-01-18  1547  static inline int dev_num_vf(struct device *dev) 9af15c38254d81c \
Phil Sutter            2017-01-18  1548  { 9af15c38254d81c Phil Sutter            \
2017-01-18  1549  	if (dev->bus && dev->bus->num_vf) 9af15c38254d81c Phil Sutter      \
2017-01-18  1550  		return dev->bus->num_vf(dev); 9af15c38254d81c Phil Sutter         \
2017-01-18  1551  	return 0; 9af15c38254d81c Phil Sutter            2017-01-18  1552  \
} 9af15c38254d81c Phil Sutter            2017-01-18  1553  
^1da177e4c3f415 Linus Torvalds         2005-04-16  1554  /*
0aa0dc41bfd9934 Mark McLoughlin        2008-12-15  1555   * Root device objects for \
grouping under /sys/devices 0aa0dc41bfd9934 Mark McLoughlin        2008-12-15  1556   \
*/ 0aa0dc41bfd9934 Mark McLoughlin        2008-12-15  1557  extern struct device \
*__root_device_register(const char *name, 0aa0dc41bfd9934 Mark McLoughlin        \
2008-12-15  1558  					     struct module *owner); eb5589a8f0dab7e Paul Gortmaker     \
2011-05-27  1559   33ac1257ff0dee2 Tejun Heo              2014-01-10  1560  /* This \
is a macro to avoid include problems with THIS_MODULE */ eb5589a8f0dab7e Paul \
Gortmaker         2011-05-27  1561  #define root_device_register(name) \ \
eb5589a8f0dab7e Paul Gortmaker         2011-05-27  1562  \
__root_device_register(name, THIS_MODULE) eb5589a8f0dab7e Paul Gortmaker         \
2011-05-27  1563   0aa0dc41bfd9934 Mark McLoughlin        2008-12-15  1564  extern \
void root_device_unregister(struct device *root); 0aa0dc41bfd9934 Mark McLoughlin     \
2008-12-15  1565   a5b8b1ada6dd765 Mark Brown             2009-07-17  1566  static \
inline void *dev_get_platdata(const struct device *dev) a5b8b1ada6dd765 Mark Brown    \
2009-07-17  1567  { a5b8b1ada6dd765 Mark Brown             2009-07-17  1568  	return \
dev->platform_data; a5b8b1ada6dd765 Mark Brown             2009-07-17  1569  }
a5b8b1ada6dd765 Mark Brown             2009-07-17  1570  
0aa0dc41bfd9934 Mark McLoughlin        2008-12-15  1571  /*
^1da177e4c3f415 Linus Torvalds         2005-04-16  1572   * Manual binding of a \
device to driver. See drivers/base/bus.c ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1573   * for information on use. ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1574   */ f86db396ff455ed Andrew Morton          2006-08-14  1575  extern \
int __must_check device_bind_driver(struct device *dev); ^1da177e4c3f415 Linus \
Torvalds         2005-04-16  1576  extern void device_release_driver(struct device \
*dev); 4a7fb6363f2d1a6 Andrew Morton          2006-08-14  1577  extern int  \
__must_check device_attach(struct device *dev); f86db396ff455ed Andrew Morton         \
2006-08-14  1578  extern int __must_check driver_attach(struct device_driver *drv); \
765230b5f084863 Dmitry Torokhov        2015-03-30  1579  extern void \
device_initial_probe(struct device *dev); f86db396ff455ed Andrew Morton          \
2006-08-14  1580  extern int __must_check device_reprobe(struct device *dev); \
d4d28915bc4a5db Saravana Kannan        2019-07-29  1581  extern int \
driver_edit_links(struct device *dev); ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1582   6b9cb42752dafba Tomeu Vizoso           2016-01-07  1583  extern \
bool device_is_bound(struct device *dev); 6b9cb42752dafba Tomeu Vizoso           \
2016-01-07  1584   23681e479129854 Greg Kroah-Hartman     2006-06-14  1585  /*
23681e479129854 Greg Kroah-Hartman     2006-06-14  1586   * Easy functions for \
dynamically creating devices on the fly 23681e479129854 Greg Kroah-Hartman     \
2006-06-14  1587   */ 8db1486065141e6 Nicolas Iooss          2015-07-17  1588  extern \
__printf(5, 0) 8db1486065141e6 Nicolas Iooss          2015-07-17  1589  struct device \
*device_create_vargs(struct class *cls, struct device *parent, 8db1486065141e6 \
Nicolas Iooss          2015-07-17  1590  				   dev_t devt, void *drvdata, \
8db1486065141e6 Nicolas Iooss          2015-07-17  1591  				   const char *fmt, \
va_list vargs); b9075fa968a0a43 Joe Perches            2011-10-31  1592  extern \
__printf(5, 6) b9075fa968a0a43 Joe Perches            2011-10-31  1593  struct device \
*device_create(struct class *cls, struct device *parent, 4e10673944a5c38 Greg \
Kroah-Hartman     2008-07-21  1594  			     dev_t devt, void *drvdata, \
b9075fa968a0a43 Joe Perches            2011-10-31  1595  			     const char *fmt, \
...); 39ef311204941dd Guenter Roeck          2013-07-14  1596  extern __printf(6, 7)
39ef311204941dd Guenter Roeck          2013-07-14  1597  struct device \
*device_create_with_groups(struct class *cls, 39ef311204941dd Guenter Roeck          \
2013-07-14  1598  			     struct device *parent, dev_t devt, void *drvdata, \
39ef311204941dd Guenter Roeck          2013-07-14  1599  			     const struct \
attribute_group **groups, 39ef311204941dd Guenter Roeck          2013-07-14  1600  \
const char *fmt, ...); 23681e479129854 Greg Kroah-Hartman     2006-06-14  1601  \
extern void device_destroy(struct class *cls, dev_t devt); ^1da177e4c3f415 Linus \
Torvalds         2005-04-16  1602   a7670d425b75f9e Dmitry Torokhov        2017-07-19 \
1603  extern int __must_check device_add_groups(struct device *dev, a7670d425b75f9e \
Dmitry Torokhov        2017-07-19  1604  					const struct attribute_group **groups); \
a7670d425b75f9e Dmitry Torokhov        2017-07-19  1605  extern void \
device_remove_groups(struct device *dev, a7670d425b75f9e Dmitry Torokhov        \
2017-07-19  1606  				 const struct attribute_group **groups); a7670d425b75f9e Dmitry \
Torokhov        2017-07-19  1607   e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  \
1608  static inline int __must_check device_add_group(struct device *dev, \
e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1609  					const struct \
attribute_group *grp) e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1610  {
e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1611  	const struct \
attribute_group *groups[] = { grp, NULL }; e323b2dddc1ce7e Dmitry Torokhov        \
2017-07-19  1612   e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1613  	return \
device_add_groups(dev, groups); e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  \
1614  } e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1615  
e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1616  static inline void \
device_remove_group(struct device *dev, e323b2dddc1ce7e Dmitry Torokhov        \
2017-07-19  1617  				       const struct attribute_group *grp) e323b2dddc1ce7e \
Dmitry Torokhov        2017-07-19  1618  { e323b2dddc1ce7e Dmitry Torokhov        \
2017-07-19  1619  	const struct attribute_group *groups[] = { grp, NULL }; \
e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1620   e323b2dddc1ce7e Dmitry \
Torokhov        2017-07-19  1621  	return device_remove_groups(dev, groups); \
e323b2dddc1ce7e Dmitry Torokhov        2017-07-19  1622  } e323b2dddc1ce7e Dmitry \
Torokhov        2017-07-19  1623   57b8ff070f9897b Dmitry Torokhov        2017-07-19  \
1624  extern int __must_check devm_device_add_groups(struct device *dev, \
57b8ff070f9897b Dmitry Torokhov        2017-07-19  1625  					const struct \
attribute_group **groups); 57b8ff070f9897b Dmitry Torokhov        2017-07-19  1626  \
extern void devm_device_remove_groups(struct device *dev, 57b8ff070f9897b Dmitry \
Torokhov        2017-07-19  1627  				      const struct attribute_group **groups); \
57b8ff070f9897b Dmitry Torokhov        2017-07-19  1628  extern int __must_check \
devm_device_add_group(struct device *dev, 57b8ff070f9897b Dmitry Torokhov        \
2017-07-19  1629  					const struct attribute_group *grp); 57b8ff070f9897b Dmitry \
Torokhov        2017-07-19  1630  extern void devm_device_remove_group(struct device \
*dev, 57b8ff070f9897b Dmitry Torokhov        2017-07-19  1631  				     const struct \
attribute_group *grp); 57b8ff070f9897b Dmitry Torokhov        2017-07-19  1632  
^1da177e4c3f415 Linus Torvalds         2005-04-16  1633  /*
^1da177e4c3f415 Linus Torvalds         2005-04-16  1634   * Platform "fixup" \
functions - allow the platform to have their say ^1da177e4c3f415 Linus Torvalds       \
2005-04-16  1635   * about devices and actions that the general device layer doesn't \
^1da177e4c3f415 Linus Torvalds         2005-04-16  1636   * know about. \
^1da177e4c3f415 Linus Torvalds         2005-04-16  1637   */ ^1da177e4c3f415 Linus \
Torvalds         2005-04-16  1638  /* Notify platform of device discovery */ \
^1da177e4c3f415 Linus Torvalds         2005-04-16  1639  extern int \
(*platform_notify)(struct device *dev); ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1640   ^1da177e4c3f415 Linus Torvalds         2005-04-16  1641  extern \
int (*platform_notify_remove)(struct device *dev); ^1da177e4c3f415 Linus Torvalds     \
2005-04-16  1642   ^1da177e4c3f415 Linus Torvalds         2005-04-16  1643  
880ffb5c6c5c8c8 Wanlong Gao            2011-05-05  1644  /*
^1da177e4c3f415 Linus Torvalds         2005-04-16  1645   * get_device - atomically \
increment the reference count for the device. ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1646   * ^1da177e4c3f415 Linus Torvalds         2005-04-16  1647   */
^1da177e4c3f415 Linus Torvalds         2005-04-16  1648  extern struct device \
*get_device(struct device *dev); ^1da177e4c3f415 Linus Torvalds         2005-04-16  \
1649  extern void put_device(struct device *dev); ^1da177e4c3f415 Linus Torvalds      \
2005-04-16  1650   2b2af54a5bb6f7e Kay Sievers            2009-04-30  1651  #ifdef \
CONFIG_DEVTMPFS 2b2af54a5bb6f7e Kay Sievers            2009-04-30  1652  extern int \
devtmpfs_create_node(struct device *dev); 2b2af54a5bb6f7e Kay Sievers            \
2009-04-30  1653  extern int devtmpfs_delete_node(struct device *dev); \
073120cc28ad9f6 Kay Sievers            2009-10-28  1654  extern int \
devtmpfs_mount(const char *mntdir); 2b2af54a5bb6f7e Kay Sievers            2009-04-30 \
1655  #else 2b2af54a5bb6f7e Kay Sievers            2009-04-30  1656  static inline \
int devtmpfs_create_node(struct device *dev) { return 0; } 2b2af54a5bb6f7e Kay \
Sievers            2009-04-30  1657  static inline int devtmpfs_delete_node(struct \
device *dev) { return 0; } 2b2af54a5bb6f7e Kay Sievers            2009-04-30  1658  \
static inline int devtmpfs_mount(const char *mountpoint) { return 0; } \
2b2af54a5bb6f7e Kay Sievers            2009-04-30  1659  #endif 2b2af54a5bb6f7e Kay \
Sievers            2009-04-30  1660   116f232b3794a8b Rytchkov Alexey        \
2006-03-22  1661  /* drivers/base/power/shutdown.c */ ^1da177e4c3f415 Linus Torvalds  \
2005-04-16  1662  extern void device_shutdown(void); ^1da177e4c3f415 Linus Torvalds   \
2005-04-16  1663   ^1da177e4c3f415 Linus Torvalds         2005-04-16  1664  /* \
debugging and troubleshooting/diagnostic helpers. */ bf9ca69fc8d19d4 Jean Delvare     \
2008-07-30  1665  extern const char *dev_driver_string(const struct device *dev); \
99bcf217183e02e Joe Perches            2010-06-27  1666   9ed9895370aedd6 Rafael J. \
Wysocki      2016-10-30  1667  /* Device links interface. */ 9ed9895370aedd6 Rafael \
J. Wysocki      2016-10-30  1668  struct device_link *device_link_add(struct device \
*consumer, 9ed9895370aedd6 Rafael J. Wysocki      2016-10-30  1669  				    struct \
device *supplier, u32 flags); 9ed9895370aedd6 Rafael J. Wysocki      2016-10-30  1670 \
void device_link_del(struct device_link *link); d8842211b6f63d3 pascal paillet        \
2018-07-05  1671  void device_link_remove(void *consumer, struct device *supplier); \
d4d28915bc4a5db Saravana Kannan        2019-07-29  1672  void \
device_link_remove_from_wfs(struct device *consumer); 99bcf217183e02e Joe Perches     \
2010-06-27  1673   663336ee2628096 Joe Perches            2018-05-09  1674  #ifndef \
dev_fmt 663336ee2628096 Joe Perches            2018-05-09  1675  #define dev_fmt(fmt) \
fmt 663336ee2628096 Joe Perches            2018-05-09  1676  #endif
663336ee2628096 Joe Perches            2018-05-09  1677  
99bcf217183e02e Joe Perches            2010-06-27  1678  #ifdef CONFIG_PRINTK
99bcf217183e02e Joe Perches            2010-06-27  1679  
79a4e91d1bb2a41 Joe Perches            2019-02-02  1680  __printf(3, 0) __cold
0a18b05043acc01 Joe Perches            2012-09-25  1681  int dev_vprintk_emit(int \
level, const struct device *dev, 05e4e5b87aab74f Joe Perches            2012-09-12  \
1682  		     const char *fmt, va_list args); 79a4e91d1bb2a41 Joe Perches            \
2019-02-02  1683  __printf(3, 4) __cold 05e4e5b87aab74f Joe Perches            \
2012-09-12  1684  int dev_printk_emit(int level, const struct device *dev, const char \
*fmt, ...); 798efc60e427682 Joe Perches            2012-09-12  1685  
79a4e91d1bb2a41 Joe Perches            2019-02-02  1686  __printf(3, 4) __cold
d1f1052c5204524 Joe Perches            2014-12-25  1687  void dev_printk(const char \
*level, const struct device *dev, 798efc60e427682 Joe Perches            2012-09-12  \
1688  		const char *fmt, ...); 79a4e91d1bb2a41 Joe Perches            2019-02-02  \
1689  __printf(2, 3) __cold 663336ee2628096 Joe Perches            2018-05-09  1690  \
void _dev_emerg(const struct device *dev, const char *fmt, ...); 79a4e91d1bb2a41 Joe \
Perches            2019-02-02  1691  __printf(2, 3) __cold 663336ee2628096 Joe \
Perches            2018-05-09  1692  void _dev_alert(const struct device *dev, const \
char *fmt, ...); 79a4e91d1bb2a41 Joe Perches            2019-02-02  1693  __printf(2, \
3) __cold 663336ee2628096 Joe Perches            2018-05-09  1694  void \
_dev_crit(const struct device *dev, const char *fmt, ...); 79a4e91d1bb2a41 Joe \
Perches            2019-02-02  1695  __printf(2, 3) __cold 663336ee2628096 Joe \
Perches            2018-05-09  1696  void _dev_err(const struct device *dev, const \
char *fmt, ...); 79a4e91d1bb2a41 Joe Perches            2019-02-02  1697  __printf(2, \
3) __cold 663336ee2628096 Joe Perches            2018-05-09  1698  void \
_dev_warn(const struct device *dev, const char *fmt, ...); 79a4e91d1bb2a41 Joe \
Perches            2019-02-02  1699  __printf(2, 3) __cold 663336ee2628096 Joe \
Perches            2018-05-09  1700  void _dev_notice(const struct device *dev, const \
char *fmt, ...); 79a4e91d1bb2a41 Joe Perches            2019-02-02  1701  __printf(2, \
3) __cold d1f1052c5204524 Joe Perches            2014-12-25  1702  void \
_dev_info(const struct device *dev, const char *fmt, ...); 99bcf217183e02e Joe \
Perches            2010-06-27  1703   99bcf217183e02e Joe Perches            \
2010-06-27  1704  #else 99bcf217183e02e Joe Perches            2010-06-27  1705  
0a18b05043acc01 Joe Perches            2012-09-25  1706  static inline __printf(3, 0)
0a18b05043acc01 Joe Perches            2012-09-25  1707  int dev_vprintk_emit(int \
level, const struct device *dev, 05e4e5b87aab74f Joe Perches            2012-09-12  \
1708  		     const char *fmt, va_list args) 05e4e5b87aab74f Joe Perches            \
2012-09-12  1709  { return 0; } 05e4e5b87aab74f Joe Perches            2012-09-12  \
1710  static inline __printf(3, 4) 05e4e5b87aab74f Joe Perches            2012-09-12  \
1711  int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...) \
05e4e5b87aab74f Joe Perches            2012-09-12  1712  { return 0; } \
05e4e5b87aab74f Joe Perches            2012-09-12  1713   d1f1052c5204524 Joe Perches \
2014-12-25  1714  static inline void __dev_printk(const char *level, const struct \
device *dev, cbc4663552ee476 Joe Perches            2011-08-11  1715  				struct \
va_format *vaf) d1f1052c5204524 Joe Perches            2014-12-25  1716  {}
b9075fa968a0a43 Joe Perches            2011-10-31  1717  static inline __printf(3, 4)
d1f1052c5204524 Joe Perches            2014-12-25  1718  void dev_printk(const char \
*level, const struct device *dev, 99bcf217183e02e Joe Perches            2010-06-27  \
1719  		 const char *fmt, ...) d1f1052c5204524 Joe Perches            2014-12-25  \
1720  {} 99bcf217183e02e Joe Perches            2010-06-27  1721  
b9075fa968a0a43 Joe Perches            2011-10-31  1722  static inline __printf(2, 3)
663336ee2628096 Joe Perches            2018-05-09  1723  void _dev_emerg(const struct \
device *dev, const char *fmt, ...) d1f1052c5204524 Joe Perches            2014-12-25  \
1724  {} b9075fa968a0a43 Joe Perches            2011-10-31  1725  static inline \
__printf(2, 3) 663336ee2628096 Joe Perches            2018-05-09  1726  void \
_dev_crit(const struct device *dev, const char *fmt, ...) d1f1052c5204524 Joe Perches \
2014-12-25  1727  {} b9075fa968a0a43 Joe Perches            2011-10-31  1728  static \
inline __printf(2, 3) 663336ee2628096 Joe Perches            2018-05-09  1729  void \
_dev_alert(const struct device *dev, const char *fmt, ...) d1f1052c5204524 Joe \
Perches            2014-12-25  1730  {} b9075fa968a0a43 Joe Perches            \
2011-10-31  1731  static inline __printf(2, 3) 663336ee2628096 Joe Perches            \
2018-05-09  1732  void _dev_err(const struct device *dev, const char *fmt, ...) \
d1f1052c5204524 Joe Perches            2014-12-25  1733  {} b9075fa968a0a43 Joe \
Perches            2011-10-31  1734  static inline __printf(2, 3) 663336ee2628096 Joe \
Perches            2018-05-09  1735  void _dev_warn(const struct device *dev, const \
char *fmt, ...) d1f1052c5204524 Joe Perches            2014-12-25  1736  {}
b9075fa968a0a43 Joe Perches            2011-10-31  1737  static inline __printf(2, 3)
663336ee2628096 Joe Perches            2018-05-09  1738  void _dev_notice(const \
struct device *dev, const char *fmt, ...) d1f1052c5204524 Joe Perches            \
2014-12-25  1739  {} b9075fa968a0a43 Joe Perches            2011-10-31  1740  static \
inline __printf(2, 3) d1f1052c5204524 Joe Perches            2014-12-25  1741  void \
_dev_info(const struct device *dev, const char *fmt, ...) d1f1052c5204524 Joe Perches \
2014-12-25  1742  {} 99bcf217183e02e Joe Perches            2010-06-27  1743  
99bcf217183e02e Joe Perches            2010-06-27  1744  #endif
99bcf217183e02e Joe Perches            2010-06-27  1745  
6f586e663e3b367 Hiroshi Doyu           2012-09-04  1746  /*
663336ee2628096 Joe Perches            2018-05-09  1747   * #defines for all the \
dev_<level> macros to prefix with whatever 663336ee2628096 Joe Perches            \
2018-05-09  1748   * possible use of #define dev_fmt(fmt) ... 6f586e663e3b367 Hiroshi \
Doyu           2012-09-04  1749   */ 6f586e663e3b367 Hiroshi Doyu           \
2012-09-04  1750   663336ee2628096 Joe Perches            2018-05-09  1751  #define \
dev_emerg(dev, fmt, ...)					\ 663336ee2628096 Joe Perches            2018-05-09  \
1752  	_dev_emerg(dev, dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe Perches       \
2018-05-09  1753  #define dev_crit(dev, fmt, ...)						\ 663336ee2628096 Joe Perches  \
2018-05-09  1754  	_dev_crit(dev, dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe \
Perches            2018-05-09  1755  #define dev_alert(dev, fmt, ...)					\ \
663336ee2628096 Joe Perches            2018-05-09  1756  	_dev_alert(dev, \
dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe Perches            2018-05-09  1757  \
#define dev_err(dev, fmt, ...)						\ 663336ee2628096 Joe Perches            \
2018-05-09  1758  	_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe \
Perches            2018-05-09  1759  #define dev_warn(dev, fmt, ...)						\ \
663336ee2628096 Joe Perches            2018-05-09  1760  	_dev_warn(dev, \
dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe Perches            2018-05-09  1761  \
#define dev_notice(dev, fmt, ...)					\ 663336ee2628096 Joe Perches            \
2018-05-09  1762  	_dev_notice(dev, dev_fmt(fmt), ##__VA_ARGS__) 663336ee2628096 Joe \
Perches            2018-05-09  1763  #define dev_info(dev, fmt, ...)						\ \
663336ee2628096 Joe Perches            2018-05-09  1764  	_dev_info(dev, \
dev_fmt(fmt), ##__VA_ARGS__) 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1765  \
 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1766  #if \
defined(CONFIG_DYNAMIC_DEBUG) 663336ee2628096 Joe Perches            2018-05-09  1767 \
#define dev_dbg(dev, fmt, ...)						\ 663336ee2628096 Joe Perches            \
2018-05-09  1768  	dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) 6f586e663e3b367 \
Hiroshi Doyu           2012-09-04  1769  #elif defined(DEBUG) 663336ee2628096 Joe \
Perches            2018-05-09  1770  #define dev_dbg(dev, fmt, ...)						\ \
663336ee2628096 Joe Perches            2018-05-09  1771  	dev_printk(KERN_DEBUG, dev, \
dev_fmt(fmt), ##__VA_ARGS__) 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1772  \
#else 663336ee2628096 Joe Perches            2018-05-09  1773  #define dev_dbg(dev, \
fmt, ...)						\ 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1774  \
({									\ 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1775  	if \
(0)								\ 663336ee2628096 Joe Perches            2018-05-09  1776  \
dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \ 6f586e663e3b367 Hiroshi \
Doyu           2012-09-04  1777  }) 6f586e663e3b367 Hiroshi Doyu           2012-09-04 \
1778  #endif 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1779  
e135303bd5bebcd Joe Perches            2014-11-17  1780  #ifdef CONFIG_PRINTK
e135303bd5bebcd Joe Perches            2014-11-17  1781  #define \
dev_level_once(dev_level, dev, fmt, ...)			\ e135303bd5bebcd Joe Perches            \
2014-11-17  1782  do {									\ e135303bd5bebcd Joe Perches            2014-11-17  \
1783  	static bool __print_once __read_mostly;				\ e135303bd5bebcd Joe Perches       \
2014-11-17  1784  									\ e135303bd5bebcd Joe Perches            2014-11-17  1785  \
if (!__print_once) {						\ e135303bd5bebcd Joe Perches            2014-11-17  1786  \
__print_once = true;					\ e135303bd5bebcd Joe Perches            2014-11-17  1787  \
dev_level(dev, fmt, ##__VA_ARGS__);			\ e135303bd5bebcd Joe Perches            \
2014-11-17  1788  	}								\ e135303bd5bebcd Joe Perches            2014-11-17  1789 \
} while (0) e135303bd5bebcd Joe Perches            2014-11-17  1790  #else
e135303bd5bebcd Joe Perches            2014-11-17  1791  #define \
dev_level_once(dev_level, dev, fmt, ...)			\ e135303bd5bebcd Joe Perches            \
2014-11-17  1792  do {									\ e135303bd5bebcd Joe Perches            2014-11-17  \
1793  	if (0)								\ e135303bd5bebcd Joe Perches            2014-11-17  1794  \
dev_level(dev, fmt, ##__VA_ARGS__);			\ e135303bd5bebcd Joe Perches            \
2014-11-17  1795  } while (0) e135303bd5bebcd Joe Perches            2014-11-17  1796 \
#endif e135303bd5bebcd Joe Perches            2014-11-17  1797  
e135303bd5bebcd Joe Perches            2014-11-17  1798  #define dev_emerg_once(dev, \
fmt, ...)					\ e135303bd5bebcd Joe Perches            2014-11-17  1799  \
dev_level_once(dev_emerg, dev, fmt, ##__VA_ARGS__) e135303bd5bebcd Joe Perches        \
2014-11-17  1800  #define dev_alert_once(dev, fmt, ...)					\ e135303bd5bebcd Joe \
Perches            2014-11-17  1801  	dev_level_once(dev_alert, dev, fmt, \
##__VA_ARGS__) e135303bd5bebcd Joe Perches            2014-11-17  1802  #define \
dev_crit_once(dev, fmt, ...)					\ e135303bd5bebcd Joe Perches            2014-11-17  \
1803  	dev_level_once(dev_crit, dev, fmt, ##__VA_ARGS__) e135303bd5bebcd Joe Perches  \
2014-11-17  1804  #define dev_err_once(dev, fmt, ...)					\ e135303bd5bebcd Joe \
Perches            2014-11-17  1805  	dev_level_once(dev_err, dev, fmt, \
##__VA_ARGS__) e135303bd5bebcd Joe Perches            2014-11-17  1806  #define \
dev_warn_once(dev, fmt, ...)					\ e135303bd5bebcd Joe Perches            2014-11-17  \
1807  	dev_level_once(dev_warn, dev, fmt, ##__VA_ARGS__) e135303bd5bebcd Joe Perches  \
2014-11-17  1808  #define dev_notice_once(dev, fmt, ...)					\ e135303bd5bebcd Joe \
Perches            2014-11-17  1809  	dev_level_once(dev_notice, dev, fmt, \
##__VA_ARGS__) e135303bd5bebcd Joe Perches            2014-11-17  1810  #define \
dev_info_once(dev, fmt, ...)					\ e135303bd5bebcd Joe Perches            2014-11-17  \
1811  	dev_level_once(dev_info, dev, fmt, ##__VA_ARGS__) e135303bd5bebcd Joe Perches  \
2014-11-17  1812  #define dev_dbg_once(dev, fmt, ...)					\ a2a15d54ab2d5c8 Joe \
Perches            2015-01-03  1813  	dev_level_once(dev_dbg, dev, fmt, \
##__VA_ARGS__) e135303bd5bebcd Joe Perches            2014-11-17  1814  
6ca045930338485 Hiroshi DOYU           2012-05-14  1815  #define \
dev_level_ratelimited(dev_level, dev, fmt, ...)			\ 6ca045930338485 Hiroshi DOYU      \
2012-05-14  1816  do {									\ 6ca045930338485 Hiroshi DOYU           2012-05-14  \
1817  	static DEFINE_RATELIMIT_STATE(_rs,				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1818  				      DEFAULT_RATELIMIT_INTERVAL,	\ 6ca045930338485 Hiroshi \
DOYU           2012-05-14  1819  				      DEFAULT_RATELIMIT_BURST);		\ \
6ca045930338485 Hiroshi DOYU           2012-05-14  1820  	if \
(__ratelimit(&_rs))						\ 6ca045930338485 Hiroshi DOYU           2012-05-14  1821  \
dev_level(dev, fmt, ##__VA_ARGS__);			\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1822  } while (0) 6ca045930338485 Hiroshi DOYU           2012-05-14  1823 \
 6ca045930338485 Hiroshi DOYU           2012-05-14  1824  #define \
dev_emerg_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1825  	dev_level_ratelimited(dev_emerg, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1826  #define \
dev_alert_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1827  	dev_level_ratelimited(dev_alert, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1828  #define \
dev_crit_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1829  	dev_level_ratelimited(dev_crit, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1830  #define \
dev_err_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1831  	dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1832  #define \
dev_warn_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1833  	dev_level_ratelimited(dev_warn, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1834  #define \
dev_notice_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1835  	dev_level_ratelimited(dev_notice, dev, fmt, ##__VA_ARGS__) \
6ca045930338485 Hiroshi DOYU           2012-05-14  1836  #define \
dev_info_ratelimited(dev, fmt, ...)				\ 6ca045930338485 Hiroshi DOYU           \
2012-05-14  1837  	dev_level_ratelimited(dev_info, dev, fmt, ##__VA_ARGS__) \
8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  1838  #if \
defined(CONFIG_DYNAMIC_DEBUG) 8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  1839 \
/* descriptor check is first to prevent flooding with "callbacks suppressed" */ \
6ca045930338485 Hiroshi DOYU           2012-05-14  1840  #define \
dev_dbg_ratelimited(dev, fmt, ...)				\ 99bcf217183e02e Joe Perches            \
2010-06-27  1841  do {									\ 6f586e663e3b367 Hiroshi Doyu           2012-09-04  \
1842  	static DEFINE_RATELIMIT_STATE(_rs,				\ 6f586e663e3b367 Hiroshi Doyu           \
2012-09-04  1843  				      DEFAULT_RATELIMIT_INTERVAL,	\ 6f586e663e3b367 Hiroshi \
Doyu           2012-09-04  1844  				      DEFAULT_RATELIMIT_BURST);		\ \
6f586e663e3b367 Hiroshi Doyu           2012-09-04  1845  \
DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);			\ e0b73d7beb919ad Rasmus Villemoes  \
2019-03-07  1846  	if (DYNAMIC_DEBUG_BRANCH(descriptor) &&				\ 6f586e663e3b367 \
Hiroshi Doyu           2012-09-04  1847  	    __ratelimit(&_rs))						\ \
663336ee2628096 Joe Perches            2018-05-09  1848  \
__dynamic_dev_dbg(&descriptor, dev, dev_fmt(fmt),	\ 6f586e663e3b367 Hiroshi Doyu      \
2012-09-04  1849  				  ##__VA_ARGS__);			\ 346e15beb5343c2 Jason Baron            \
2008-08-12  1850  } while (0) 8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  1851 \
#elif defined(DEBUG) 8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  1852  #define \
dev_dbg_ratelimited(dev, fmt, ...)				\ 8ef2d6511f7eba8 Dmitry Kasatkin        \
2013-08-27  1853  do {									\ 8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  \
1854  	static DEFINE_RATELIMIT_STATE(_rs,				\ 8ef2d6511f7eba8 Dmitry Kasatkin        \
2013-08-27  1855  				      DEFAULT_RATELIMIT_INTERVAL,	\ 8ef2d6511f7eba8 Dmitry \
Kasatkin        2013-08-27  1856  				      DEFAULT_RATELIMIT_BURST);		\ \
8ef2d6511f7eba8 Dmitry Kasatkin        2013-08-27  1857  	if \
(__ratelimit(&_rs))						\ 663336ee2628096 Joe Perches            2018-05-09  1858  \
dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \ 8ef2d6511f7eba8 Dmitry \
Kasatkin        2013-08-27  1859  } while (0) ^1da177e4c3f415 Linus Torvalds         \
2005-04-16  1860  #else 6f586e663e3b367 Hiroshi Doyu           2012-09-04  1861  \
#define dev_dbg_ratelimited(dev, fmt, ...)				\ 1f62ff34a90471d Arnd Bergmann         \
2016-03-24  1862  do {									\ 1f62ff34a90471d Arnd Bergmann          2016-03-24  \
1863  	if (0)								\ 663336ee2628096 Joe Perches            2018-05-09  1864  \
dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \ 1f62ff34a90471d Arnd \
Bergmann          2016-03-24  1865  } while (0) ^1da177e4c3f415 Linus Torvalds        \
2005-04-16  1866  #endif ^1da177e4c3f415 Linus Torvalds         2005-04-16  1867  
aebdc3b450a3feb David Brownell         2007-07-12  1868  #ifdef VERBOSE_DEBUG
aebdc3b450a3feb David Brownell         2007-07-12  1869  #define dev_vdbg	dev_dbg
aebdc3b450a3feb David Brownell         2007-07-12  1870  #else
663336ee2628096 Joe Perches            2018-05-09  1871  #define dev_vdbg(dev, fmt, \
...)						\ 99bcf217183e02e Joe Perches            2010-06-27  1872  ({									\
99bcf217183e02e Joe Perches            2010-06-27  1873  	if (0)								\
663336ee2628096 Joe Perches            2018-05-09  1874  		dev_printk(KERN_DEBUG, \
dev, dev_fmt(fmt), ##__VA_ARGS__); \ 99bcf217183e02e Joe Perches            \
2010-06-27  1875  }) aebdc3b450a3feb David Brownell         2007-07-12  1876  #endif
aebdc3b450a3feb David Brownell         2007-07-12  1877  
e61396627f91abb Arjan van de Ven       2008-09-20  1878  /*
3eae13671716492 Bjorn Helgaas          2013-10-24  1879   * dev_WARN*() acts like \
dev_printk(), but with the key difference of 3eae13671716492 Bjorn Helgaas          \
2013-10-24  1880   * using WARN/WARN_ONCE to include file/line information and a \
backtrace. e61396627f91abb Arjan van de Ven       2008-09-20  1881   */
e61396627f91abb Arjan van de Ven       2008-09-20  1882  #define dev_WARN(dev, \
format, arg...) \ 3eae13671716492 Bjorn Helgaas          2013-10-24  1883  	WARN(1, \
"%s %s: " format, dev_driver_string(dev), dev_name(dev), ## arg); e61396627f91abb \
Arjan van de Ven       2008-09-20  1884   bcdd323b893ad3c Felipe Balbi           \
2011-03-16  1885  #define dev_WARN_ONCE(dev, condition, format, arg...) \ \
3eae13671716492 Bjorn Helgaas          2013-10-24  1886  	WARN_ONCE(condition, "%s \
%s: " format, \ 3eae13671716492 Bjorn Helgaas          2013-10-24  1887  \
dev_driver_string(dev), dev_name(dev), ## arg) bcdd323b893ad3c Felipe Balbi           \
2011-03-16  1888   ^1da177e4c3f415 Linus Torvalds         2005-04-16  1889  /* Create \
alias, so I can be autoloaded. */ ^1da177e4c3f415 Linus Torvalds         2005-04-16  \
1890  #define MODULE_ALIAS_CHARDEV(major,minor) \ ^1da177e4c3f415 Linus Torvalds      \
2005-04-16  1891  	MODULE_ALIAS("char-major-" __stringify(major) "-" \
__stringify(minor)) ^1da177e4c3f415 Linus Torvalds         2005-04-16  1892  #define \
MODULE_ALIAS_CHARDEV_MAJOR(major) \ ^1da177e4c3f415 Linus Torvalds         2005-04-16 \
1893  	MODULE_ALIAS("char-major-" __stringify(major) "-*") e52eec13cd6b7f3 Andi Kleen \
2010-09-08  1894   e52eec13cd6b7f3 Andi Kleen             2010-09-08  1895  #ifdef \
CONFIG_SYSFS_DEPRECATED e52eec13cd6b7f3 Andi Kleen             2010-09-08  1896  \
extern long sysfs_deprecated; e52eec13cd6b7f3 Andi Kleen             2010-09-08  1897 \
#else e52eec13cd6b7f3 Andi Kleen             2010-09-08  1898  #define \
sysfs_deprecated 0 e52eec13cd6b7f3 Andi Kleen             2010-09-08  1899  #endif
e52eec13cd6b7f3 Andi Kleen             2010-09-08  1900  
907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1901  /**
907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1902   * module_driver() - Helper \
macro for drivers that don't do anything 907d0ed1c84114d Lars-Peter Clausen     \
2011-11-16  1903   * special in module init/exit. This eliminates a lot of \
boilerplate. 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1904   * Each module \
may only use this macro once, and calling it replaces 907d0ed1c84114d Lars-Peter \
Clausen     2011-11-16  1905   * module_init() and module_exit(). 907d0ed1c84114d \
Lars-Peter Clausen     2011-11-16  1906   * 2eda013f4894bc2 Randy Dunlap           \
2012-01-21  1907   * @__driver: driver name 2eda013f4894bc2 Randy Dunlap           \
2012-01-21  1908   * @__register: register function for this driver type \
2eda013f4894bc2 Randy Dunlap           2012-01-21  1909   * @__unregister: unregister \
function for this driver type cd4946188aac597 Lars-Peter Clausen     2012-02-25  1910 \
* @...: Additional arguments to be passed to __register and __unregister. \
2eda013f4894bc2 Randy Dunlap           2012-01-21  1911   * 907d0ed1c84114d \
Lars-Peter Clausen     2011-11-16  1912   * Use this macro to construct bus specific \
macros for registering 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1913   * \
drivers, and do not use it on its own. 907d0ed1c84114d Lars-Peter Clausen     \
2011-11-16  1914   */ cd4946188aac597 Lars-Peter Clausen     2012-02-25  1915  \
#define module_driver(__driver, __register, __unregister, ...) \ 907d0ed1c84114d \
Lars-Peter Clausen     2011-11-16  1916  static int __init __driver##_init(void) \ \
907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1917  { \ cd4946188aac597 \
Lars-Peter Clausen     2012-02-25  1918  	return __register(&(__driver) , \
##__VA_ARGS__); \ 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1919  } \
907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1920  \
module_init(__driver##_init); \ 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  \
1921  static void __exit __driver##_exit(void) \ 907d0ed1c84114d Lars-Peter Clausen   \
2011-11-16  1922  { \ cd4946188aac597 Lars-Peter Clausen     2012-02-25  1923  \
__unregister(&(__driver) , ##__VA_ARGS__); \ 907d0ed1c84114d Lars-Peter Clausen     \
2011-11-16  1924  } \ 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1925  \
module_exit(__driver##_exit); 907d0ed1c84114d Lars-Peter Clausen     2011-11-16  1926 \
 f309d4443130bf8 Paul Gortmaker         2015-05-01  1927  /**
f309d4443130bf8 Paul Gortmaker         2015-05-01  1928   * builtin_driver() - Helper \
macro for drivers that don't do anything f309d4443130bf8 Paul Gortmaker         \
2015-05-01  1929   * special in init and have no exit. This eliminates some \
boilerplate. f309d4443130bf8 Paul Gortmaker         2015-05-01  1930   * Each driver \
may only use this macro once, and calling it replaces f309d4443130bf8 Paul Gortmaker  \
2015-05-01  1931   * device_initcall (or in some cases, the legacy __initcall).  This \
is f309d4443130bf8 Paul Gortmaker         2015-05-01  1932   * meant to be a direct \
parallel of module_driver() above but without f309d4443130bf8 Paul Gortmaker         \
2015-05-01  1933   * the __exit stuff that is not used for builtin cases. \
f309d4443130bf8 Paul Gortmaker         2015-05-01  1934   * f309d4443130bf8 Paul \
Gortmaker         2015-05-01  1935   * @__driver: driver name f309d4443130bf8 Paul \
Gortmaker         2015-05-01  1936   * @__register: register function for this driver \
type f309d4443130bf8 Paul Gortmaker         2015-05-01  1937   * @...: Additional \
arguments to be passed to __register f309d4443130bf8 Paul Gortmaker         \
2015-05-01  1938   * f309d4443130bf8 Paul Gortmaker         2015-05-01  1939   * Use \
this macro to construct bus specific macros for registering f309d4443130bf8 Paul \
Gortmaker         2015-05-01  1940   * drivers, and do not use it on its own. \
f309d4443130bf8 Paul Gortmaker         2015-05-01  1941   */ f309d4443130bf8 Paul \
Gortmaker         2015-05-01  1942  #define builtin_driver(__driver, __register, ...) \
\ f309d4443130bf8 Paul Gortmaker         2015-05-01  1943  static int __init \
__driver##_init(void) \ f309d4443130bf8 Paul Gortmaker         2015-05-01  1944  { \
f309d4443130bf8 Paul Gortmaker         2015-05-01  1945  	return \
__register(&(__driver) , ##__VA_ARGS__); \ f309d4443130bf8 Paul Gortmaker         \
2015-05-01  1946  } \ f309d4443130bf8 Paul Gortmaker         2015-05-01  1947  \
device_initcall(__driver##_init); f309d4443130bf8 Paul Gortmaker         2015-05-01  \
1948   ^1da177e4c3f415 Linus Torvalds         2005-04-16  1949  #endif /* _DEVICE_H_ \
*/

> > > > > > The code at line 1336 was first introduced by commit
> > > > > > 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

> > > > > > TO: Linus Torvalds <torvalds@ppc970.osdl.org>
> > > > > > CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation


[".config.gz" (application/gzip)]

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic