#ifndef __PERF_CONFIG_H #define __PERF_CONFIG_H #include #include struct perf_config_item { char *name; char *value; bool from_system_config; struct list_head node; }; struct perf_config_section { char *name; struct list_head items; bool from_system_config; struct list_head node; }; struct perf_config_set { struct list_head sections; }; extern const char *config_exclusive_filename; typedef int (*config_fn_t)(const char *, const char *, void *); int perf_default_config(const char *, const char *, void *); int perf_config(config_fn_t fn, void *); int perf_config_int(const char *, const char *); u64 perf_config_u64(const char *, const char *); int perf_config_bool(const char *, const char *); int config_error_nonbool(const char *); const char *perf_etc_perfconfig(void); struct perf_config_set *perf_config_set__new(void); void perf_config_set__delete(struct perf_config_set *set); int perf_config_set__collect(struct perf_config_set *set, const char *file_name, const char *var, const char *value); void perf_config__init(void); void perf_config__exit(void); void perf_config__refresh(void); /** * perf_config_sections__for_each - iterate thru all the sections * @list: list_head instance to iterate * @section: struct perf_config_section iterator */ #define perf_config_sections__for_each_entry(list, section) \ list_for_each_entry(section, list, node) /** * perf_config_items__for_each - iterate thru all the items * @list: list_head instance to iterate * @item: struct perf_config_item iterator */ #define perf_config_items__for_each_entry(list, item) \ list_for_each_entry(item, list, node) /** * perf_config_set__for_each - iterate thru all the config section-item pairs * @set: evlist instance to iterate * @section: struct perf_config_section iterator * @item: struct perf_config_item iterator */ #define perf_config_set__for_each_entry(set, section, item) \ perf_config_sections__for_each_entry(&set->sections, section) \ perf_config_items__for_each_entry(§ion->items, item) #endif /* __PERF_CONFIG_H */ '>diff
AgeCommit message (Collapse)AuthorFilesLines
2017-02-10net: dsa: remove unnecessary phy*.h includesRussell King1-2/+3
Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an unnecessary dependency for quite a large amount of the kernel. There's very little which actually requires definitions from phy.h in net/dsa.h - the include itself only wants the declaration of a couple of structures and IFNAMSIZ. Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h and phy_fixed.h from net/dsa.h. This patch reduces from around 800 files rebuilt to around 40 - even with ccache, the time difference is noticable. Tested-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-07net: dsa: Add support for platform dataFlorian Fainelli1-0/+6
Allow drivers to use the new DSA API with platform data. Most of the code in net/dsa/dsa2.c does not rely so much on device_nodes and can get the same information from platform_data instead. We purposely do not support distributed configurations with platform data, so drivers should be providing a pointer to a 'struct dsa_chip_data' structure if they wish to communicate per-port layout. Multiple CPUs port could potentially be supported and dsa_chip_data is extended to receive up to one reference to an upstream network device per port described by a dsa_chip_data structure. dsa_dev_to_net_device() increments the network device's reference count, so we intentionally call dev_put() to be consistent with the DT-enabled path, until we have a generic notifier based solution. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-07net: dsa: Rename and export dev_to_net_device()Florian Fainelli1-0/+1
In preparation for using this function in net/dsa/dsa2.c, rename the function to make its scope DSA specific, and export it. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-06net: dsa: introduce bridge notifierVivien Didelot1-0/+10
A slave device will now notify the switch fabric once its port is bridged or unbridged, instead of calling directly its switch operations. This code allows propagating cross-chip bridging events in the fabric. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-06net: dsa: add switch notifierVivien Didelot1-0/+7
Add a notifier block per DSA switch, registered against a notifier head in the switch fabric they belong to. This infrastructure will allow to propagate fabric-wide events such as port bridging, VLAN configuration, etc. If a DSA switch driver cares about cross-chip configuration, such events can be caught. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>