Skip to content
Snippets Groups Projects
Select Git revision
  • 6640e673c6f3dbaace085ca2686a8a343dc23a71
  • openEuler-1.0-LTS default protected
  • openEuler-22.09
  • OLK-5.10
  • openEuler-22.03-LTS
  • openEuler-22.03-LTS-Ascend
  • master
  • openEuler-22.03-LTS-LoongArch-NW
  • openEuler-22.09-HCK
  • openEuler-20.03-LTS-SP3
  • openEuler-21.09
  • openEuler-21.03
  • openEuler-20.09
  • 4.19.90-2210.5.0
  • 5.10.0-123.0.0
  • 5.10.0-60.63.0
  • 5.10.0-60.62.0
  • 4.19.90-2210.4.0
  • 5.10.0-121.0.0
  • 5.10.0-60.61.0
  • 4.19.90-2210.3.0
  • 5.10.0-60.60.0
  • 5.10.0-120.0.0
  • 5.10.0-60.59.0
  • 5.10.0-119.0.0
  • 4.19.90-2210.2.0
  • 4.19.90-2210.1.0
  • 5.10.0-118.0.0
  • 5.10.0-106.19.0
  • 5.10.0-60.58.0
  • 4.19.90-2209.6.0
  • 5.10.0-106.18.0
  • 5.10.0-106.17.0
33 results

ipvlan_core.c

Blame
  • node.h 3.08 KiB
    /* SPDX-License-Identifier: GPL-2.0 */
    /*
     * include/linux/node.h - generic node definition
     *
     * This is mainly for topological representation. We define the 
     * basic 'struct node' here, which can be embedded in per-arch 
     * definitions of processors.
     *
     * Basic handling of the devices is done in drivers/base/node.c
     * and system devices are handled in drivers/base/sys.c. 
     *
     * Nodes are exported via driverfs in the class/node/devices/
     * directory. 
     */
    #ifndef _LINUX_NODE_H_
    #define _LINUX_NODE_H_
    
    #include <linux/device.h>
    #include <linux/cpumask.h>
    #include <linux/workqueue.h>
    
    struct node {
    	struct device	dev;
    
    #if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_HUGETLBFS)
    	struct work_struct	node_work;
    #endif
    };
    
    struct memory_block;
    extern struct node *node_devices[];
    typedef  void (*node_registration_func_t)(struct node *);
    
    #if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_NUMA)
    extern int link_mem_sections(int nid, unsigned long start_pfn,
    			     unsigned long nr_pages, bool check_nid);
    #else
    static inline int link_mem_sections(int nid, unsigned long start_pfn,
    				    unsigned long nr_pages, bool check_nid)
    {
    	return 0;
    }
    #endif
    
    extern void unregister_node(struct node *node);
    #ifdef CONFIG_NUMA
    /* Core of the node registration - only memory hotplug should use this */
    extern int __register_one_node(int nid);
    
    /* Registers an online node */
    static inline int register_one_node(int nid)
    {
    	int error = 0;
    
    	if (node_online(nid)) {
    		struct pglist_data *pgdat = NODE_DATA(nid);
    
    		error = __register_one_node(nid);
    		if (error)
    			return error;
    		/* link memory sections under this node */
    		error = link_mem_sections(nid, pgdat->node_start_pfn, pgdat->node_spanned_pages, true);
    	}
    
    	return error;
    }
    
    extern void unregister_one_node(int nid);
    extern int register_cpu_under_node(unsigned int cpu, unsigned int nid);
    extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid);
    extern int register_mem_sect_under_node(struct memory_block *mem_blk,
    						int nid, bool check_nid);
    extern int unregister_mem_sect_under_nodes(struct memory_block *mem_blk,
    					   unsigned long phys_index);
    
    #ifdef CONFIG_HUGETLBFS
    extern void register_hugetlbfs_with_node(node_registration_func_t doregister,
    					 node_registration_func_t unregister);
    #endif
    #else
    static inline int __register_one_node(int nid)
    {
    	return 0;
    }
    static inline int register_one_node(int nid)
    {
    	return 0;
    }
    static inline int unregister_one_node(int nid)
    {
    	return 0;
    }
    static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid)
    {
    	return 0;
    }
    static inline int unregister_cpu_under_node(unsigned int cpu, unsigned int nid)
    {
    	return 0;
    }
    static inline int register_mem_sect_under_node(struct memory_block *mem_blk,
    							int nid, bool check_nid)
    {
    	return 0;
    }
    static inline int unregister_mem_sect_under_nodes(struct memory_block *mem_blk,
    						  unsigned long phys_index)
    {
    	return 0;
    }
    
    static inline void register_hugetlbfs_with_node(node_registration_func_t reg,
    						node_registration_func_t unreg)
    {
    }
    #endif
    
    #define to_node(device) container_of(device, struct node, dev)
    
    #endif /* _LINUX_NODE_H_ */