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

TOMOYO Linux Cross Reference
Linux/include/asm-generic/sections.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/asm-generic/sections.h (Version linux-6.11-rc3) and /include/asm-m68k/sections.h (Version linux-4.14.336)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 #ifndef _ASM_GENERIC_SECTIONS_H_                  
  3 #define _ASM_GENERIC_SECTIONS_H_                  
  4                                                   
  5 /* References to section boundaries */            
  6                                                   
  7 #include <linux/compiler.h>                       
  8 #include <linux/types.h>                          
  9                                                   
 10 /*                                                
 11  * Usage guidelines:                              
 12  * _text, _data: architecture specific, don't     
 13  * [_stext, _etext]: contains .text.* sections    
 14  *                   and/or .init.* sections      
 15  * [_sdata, _edata]: contains .data.* sections    
 16  *                   and/or .init.* sections.     
 17  * [__start_rodata, __end_rodata]: contains .r    
 18  * [__start_ro_after_init, __end_ro_after_init    
 19  *                   contains .data..ro_after_    
 20  * [__init_begin, __init_end]: contains .init.    
 21  *                   may be out of this range     
 22  * [_sinittext, _einittext]: contains .init.te    
 23  * [__bss_start, __bss_stop]: contains BSS sec    
 24  *                                                
 25  * Following global variables are optional and    
 26  * architectures and/or kernel configurations.    
 27  *      _text, _data                              
 28  *      __kprobes_text_start, __kprobes_text_e    
 29  *      __entry_text_start, __entry_text_end      
 30  *      __ctors_start, __ctors_end                
 31  *      __irqentry_text_start, __irqentry_text    
 32  *      __softirqentry_text_start, __softirqen    
 33  *      __start_opd, __end_opd                    
 34  */                                               
 35 extern char _text[], _stext[], _etext[];          
 36 extern char _data[], _sdata[], _edata[];          
 37 extern char __bss_start[], __bss_stop[];          
 38 extern char __init_begin[], __init_end[];         
 39 extern char _sinittext[], _einittext[];           
 40 extern char __start_ro_after_init[], __end_ro_    
 41 extern char _end[];                               
 42 extern char __per_cpu_load[], __per_cpu_start[    
 43 extern char __kprobes_text_start[], __kprobes_    
 44 extern char __entry_text_start[], __entry_text    
 45 extern char __start_rodata[], __end_rodata[];     
 46 extern char __irqentry_text_start[], __irqentr    
 47 extern char __softirqentry_text_start[], __sof    
 48 extern char __start_once[], __end_once[];         
 49                                                   
 50 /* Start and end of .ctors section - used for     
 51 extern char __ctors_start[], __ctors_end[];       
 52                                                   
 53 /* Start and end of .opd section - used for fu    
 54 extern char __start_opd[], __end_opd[];           
 55                                                   
 56 /* Start and end of instrumentation protected     
 57 extern char __noinstr_text_start[], __noinstr_    
 58                                                   
 59 extern __visible const void __nosave_begin, __    
 60                                                   
 61 /* Function descriptor handling (if any).  Ove    
 62 #ifdef CONFIG_HAVE_FUNCTION_DESCRIPTORS           
 63 void *dereference_function_descriptor(void *pt    
 64 void *dereference_kernel_function_descriptor(v    
 65 #else                                             
 66 #define dereference_function_descriptor(p) ((v    
 67 #define dereference_kernel_function_descriptor    
 68                                                   
 69 /* An address is simply the address of the fun    
 70 typedef struct {                                  
 71         unsigned long addr;                       
 72 } func_desc_t;                                    
 73 #endif                                            
 74                                                   
 75 static inline bool have_function_descriptors(v    
 76 {                                                 
 77         return IS_ENABLED(CONFIG_HAVE_FUNCTION    
 78 }                                                 
 79                                                   
 80 /**                                               
 81  * memory_contains - checks if an object is co    
 82  * @begin: virtual address of the beginning of    
 83  * @end: virtual address of the end of the mem    
 84  * @virt: virtual address of the memory object    
 85  * @size: size of the memory object               
 86  *                                                
 87  * Returns: true if the object specified by @v    
 88  * contained within the memory region defined     
 89  * otherwise.                                     
 90  */                                               
 91 static inline bool memory_contains(void *begin    
 92                                    size_t size    
 93 {                                                 
 94         return virt >= begin && virt + size <=    
 95 }                                                 
 96                                                   
 97 /**                                               
 98  * memory_intersects - checks if the region oc    
 99  *                     with another memory reg    
100  * @begin: virtual address of the beginning of    
101  * @end: virtual address of the end of the mem    
102  * @virt: virtual address of the memory object    
103  * @size: size of the memory object               
104  *                                                
105  * Returns: true if an object's memory region,    
106  * intersects with the region specified by @be    
107  */                                               
108 static inline bool memory_intersects(void *beg    
109                                      size_t si    
110 {                                                 
111         void *vend = virt + size;                 
112                                                   
113         if (virt < end && vend > begin)           
114                 return true;                      
115                                                   
116         return false;                             
117 }                                                 
118                                                   
119 /**                                               
120  * init_section_contains - checks if an object    
121  *                         section                
122  * @virt: virtual address of the memory object    
123  * @size: size of the memory object               
124  *                                                
125  * Returns: true if the object specified by @v    
126  * contained within the init section, false ot    
127  */                                               
128 static inline bool init_section_contains(void     
129 {                                                 
130         return memory_contains(__init_begin, _    
131 }                                                 
132                                                   
133 /**                                               
134  * init_section_intersects - checks if the reg    
135  *                           intersects with t    
136  * @virt: virtual address of the memory object    
137  * @size: size of the memory object               
138  *                                                
139  * Returns: true if an object's memory region,    
140  * intersects with the init section, false oth    
141  */                                               
142 static inline bool init_section_intersects(voi    
143 {                                                 
144         return memory_intersects(__init_begin,    
145 }                                                 
146                                                   
147 /**                                               
148  * is_kernel_core_data - checks if the pointer    
149  *                       .data or .bss section    
150  *                                                
151  * @addr: address to check                        
152  *                                                
153  * Returns: true if the address is located in     
154  * Note: On some archs it may return true for     
155  *       for others. But will always be true f    
156  */                                               
157 static inline bool is_kernel_core_data(unsigne    
158 {                                                 
159         if (addr >= (unsigned long)_sdata && a    
160                 return true;                      
161                                                   
162         if (addr >= (unsigned long)__bss_start    
163             addr < (unsigned long)__bss_stop)     
164                 return true;                      
165                                                   
166         return false;                             
167 }                                                 
168                                                   
169 /**                                               
170  * is_kernel_rodata - checks if the pointer ad    
171  *                    .rodata section             
172  *                                                
173  * @addr: address to check                        
174  *                                                
175  * Returns: true if the address is located in     
176  */                                               
177 static inline bool is_kernel_rodata(unsigned l    
178 {                                                 
179         return addr >= (unsigned long)__start_    
180                addr < (unsigned long)__end_rod    
181 }                                                 
182                                                   
183 static inline bool is_kernel_ro_after_init(uns    
184 {                                                 
185         return addr >= (unsigned long)__start_    
186                addr < (unsigned long)__end_ro_    
187 }                                                 
188 /**                                               
189  * is_kernel_inittext - checks if the pointer     
190  *                      .init.text section        
191  *                                                
192  * @addr: address to check                        
193  *                                                
194  * Returns: true if the address is located in     
195  */                                               
196 static inline bool is_kernel_inittext(unsigned    
197 {                                                 
198         return addr >= (unsigned long)_sinitte    
199                addr < (unsigned long)_einittex    
200 }                                                 
201                                                   
202 /**                                               
203  * __is_kernel_text - checks if the pointer ad    
204  *                    .text section               
205  *                                                
206  * @addr: address to check                        
207  *                                                
208  * Returns: true if the address is located in     
209  * Note: an internal helper, only check the ra    
210  */                                               
211 static inline bool __is_kernel_text(unsigned l    
212 {                                                 
213         return addr >= (unsigned long)_stext &    
214                addr < (unsigned long)_etext;      
215 }                                                 
216                                                   
217 /**                                               
218  * __is_kernel - checks if the pointer address    
219  *                                                
220  * @addr: address to check                        
221  *                                                
222  * Returns: true if the address is located in     
223  * Note: an internal helper, check the range o    
224  *       and range from __init_begin to __init    
225  *       of the _stext to _end range.             
226  */                                               
227 static inline bool __is_kernel(unsigned long a    
228 {                                                 
229         return ((addr >= (unsigned long)_stext    
230                  addr < (unsigned long)_end) |    
231                 (addr >= (unsigned long)__init    
232                  addr < (unsigned long)__init_    
233 }                                                 
234                                                   
235 #endif /* _ASM_GENERIC_SECTIONS_H_ */             
236                                                   

~ [ 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