~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/node.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/node.h (Version linux-6.12-rc7) and /include/linux/node.h (Version linux-5.15.169)


** Warning: Cannot open xref database.

  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 /*                                                
  3  * include/linux/node.h - generic node definit    
  4  *                                                
  5  * This is mainly for topological representati    
  6  * basic 'struct node' here, which can be embe    
  7  * definitions of processors.                     
  8  *                                                
  9  * Basic handling of the devices is done in dr    
 10  * and system devices are handled in drivers/b    
 11  *                                                
 12  * Nodes are exported via driverfs in the clas    
 13  * directory.                                     
 14  */                                               
 15 #ifndef _LINUX_NODE_H_                            
 16 #define _LINUX_NODE_H_                            
 17                                                   
 18 #include <linux/device.h>                         
 19 #include <linux/list.h>                           
 20                                                   
 21 /**                                               
 22  * struct access_coordinate - generic performa    
 23  *                                                
 24  * @read_bandwidth:     Read bandwidth in MB/s    
 25  * @write_bandwidth:    Write bandwidth in MB/    
 26  * @read_latency:       Read latency in nanose    
 27  * @write_latency:      Write latency in nanos    
 28  */                                               
 29 struct access_coordinate {                        
 30         unsigned int read_bandwidth;              
 31         unsigned int write_bandwidth;             
 32         unsigned int read_latency;                
 33         unsigned int write_latency;               
 34 };                                                
 35                                                   
 36 /*                                                
 37  * ACCESS_COORDINATE_LOCAL correlates to ACCES    
 38  *      - access_coordinate between target nod    
 39  * ACCESS_COORDINATE_CPU correlates to ACCESS     
 40  *      - access_coordinate between target nod    
 41  */                                               
 42 enum access_coordinate_class {                    
 43         ACCESS_COORDINATE_LOCAL,                  
 44         ACCESS_COORDINATE_CPU,                    
 45         ACCESS_COORDINATE_MAX                     
 46 };                                                
 47                                                   
 48 enum cache_indexing {                             
 49         NODE_CACHE_DIRECT_MAP,                    
 50         NODE_CACHE_INDEXED,                       
 51         NODE_CACHE_OTHER,                         
 52 };                                                
 53                                                   
 54 enum cache_write_policy {                         
 55         NODE_CACHE_WRITE_BACK,                    
 56         NODE_CACHE_WRITE_THROUGH,                 
 57         NODE_CACHE_WRITE_OTHER,                   
 58 };                                                
 59                                                   
 60 /**                                               
 61  * struct node_cache_attrs - system memory cac    
 62  *                                                
 63  * @indexing:           The ways memory blocks    
 64  * @write_policy:       Write back or write th    
 65  * @size:               Total size of cache in    
 66  * @line_size:          Number of bytes fetche    
 67  * @level:              The cache hierarchy le    
 68  */                                               
 69 struct node_cache_attrs {                         
 70         enum cache_indexing indexing;             
 71         enum cache_write_policy write_policy;     
 72         u64 size;                                 
 73         u16 line_size;                            
 74         u8 level;                                 
 75 };                                                
 76                                                   
 77 #ifdef CONFIG_HMEM_REPORTING                      
 78 void node_add_cache(unsigned int nid, struct n    
 79 void node_set_perf_attrs(unsigned int nid, str    
 80                          enum access_coordinat    
 81 #else                                             
 82 static inline void node_add_cache(unsigned int    
 83                                   struct node_    
 84 {                                                 
 85 }                                                 
 86                                                   
 87 static inline void node_set_perf_attrs(unsigne    
 88                                        struct     
 89                                        enum ac    
 90 {                                                 
 91 }                                                 
 92 #endif                                            
 93                                                   
 94 struct node {                                     
 95         struct device   dev;                      
 96         struct list_head access_list;             
 97 #ifdef CONFIG_HMEM_REPORTING                      
 98         struct list_head cache_attrs;             
 99         struct device *cache_dev;                 
100 #endif                                            
101 };                                                
102                                                   
103 struct memory_block;                              
104 extern struct node *node_devices[];               
105                                                   
106 #if defined(CONFIG_MEMORY_HOTPLUG) && defined(    
107 void register_memory_blocks_under_node(int nid    
108                                        unsigne    
109                                        enum me    
110 #else                                             
111 static inline void register_memory_blocks_unde    
112                                                   
113                                                   
114 {                                                 
115 }                                                 
116 #endif                                            
117                                                   
118 extern void unregister_node(struct node *node)    
119 #ifdef CONFIG_NUMA                                
120 extern void node_dev_init(void);                  
121 /* Core of the node registration - only memory    
122 extern int __register_one_node(int nid);          
123                                                   
124 /* Registers an online node */                    
125 static inline int register_one_node(int nid)      
126 {                                                 
127         int error = 0;                            
128                                                   
129         if (node_online(nid)) {                   
130                 struct pglist_data *pgdat = NO    
131                 unsigned long start_pfn = pgda    
132                 unsigned long end_pfn = start_    
133                                                   
134                 error = __register_one_node(ni    
135                 if (error)                        
136                         return error;             
137                 register_memory_blocks_under_n    
138                                                   
139         }                                         
140                                                   
141         return error;                             
142 }                                                 
143                                                   
144 extern void unregister_one_node(int nid);         
145 extern int register_cpu_under_node(unsigned in    
146 extern int unregister_cpu_under_node(unsigned     
147 extern void unregister_memory_block_under_node    
148                                                   
149 extern int register_memory_node_under_compute_    
150                                                   
151                                                   
152 #else                                             
153 static inline void node_dev_init(void)            
154 {                                                 
155 }                                                 
156 static inline int __register_one_node(int nid)    
157 {                                                 
158         return 0;                                 
159 }                                                 
160 static inline int register_one_node(int nid)      
161 {                                                 
162         return 0;                                 
163 }                                                 
164 static inline int unregister_one_node(int nid)    
165 {                                                 
166         return 0;                                 
167 }                                                 
168 static inline int register_cpu_under_node(unsi    
169 {                                                 
170         return 0;                                 
171 }                                                 
172 static inline int unregister_cpu_under_node(un    
173 {                                                 
174         return 0;                                 
175 }                                                 
176 static inline void unregister_memory_block_und    
177 {                                                 
178 }                                                 
179 #endif                                            
180                                                   
181 #define to_node(device) container_of(device, s    
182                                                   
183 #endif /* _LINUX_NODE_H_ */                       
184                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php