diff options
author | Richard Kennedy <richard@rsk.demon.co.uk> | 2008-07-22 20:24:26 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-07-22 05:24:26 -0400 |
commit | af5406895a05720a879dc33e2f4878fa503e81b3 (patch) | |
tree | d9e2fb17c1215272a87fcbd010177bd08d16ccbd /include | |
parent | dafd0940c96fec67974a88ed8e6b8ba3160394cd (diff) |
module: reorder struct module to save space on 64 bit builds
reorder struct module to save space on 64 bit builds.
saves 1 cacheline_size (128 on default x86_64 & 64 on AMD
Opteron/athlon) when CONFIG_MODULE_UNLOAD=y.
Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/module.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/include/linux/module.h b/include/linux/module.h index 3e03b1acbc94..63f0eb69e214 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -249,27 +249,28 @@ struct module | |||
249 | 249 | ||
250 | /* Exported symbols */ | 250 | /* Exported symbols */ |
251 | const struct kernel_symbol *syms; | 251 | const struct kernel_symbol *syms; |
252 | unsigned int num_syms; | ||
253 | const unsigned long *crcs; | 252 | const unsigned long *crcs; |
253 | unsigned int num_syms; | ||
254 | 254 | ||
255 | /* GPL-only exported symbols. */ | 255 | /* GPL-only exported symbols. */ |
256 | const struct kernel_symbol *gpl_syms; | ||
257 | unsigned int num_gpl_syms; | 256 | unsigned int num_gpl_syms; |
257 | const struct kernel_symbol *gpl_syms; | ||
258 | const unsigned long *gpl_crcs; | 258 | const unsigned long *gpl_crcs; |
259 | 259 | ||
260 | /* unused exported symbols. */ | 260 | /* unused exported symbols. */ |
261 | const struct kernel_symbol *unused_syms; | 261 | const struct kernel_symbol *unused_syms; |
262 | unsigned int num_unused_syms; | ||
263 | const unsigned long *unused_crcs; | 262 | const unsigned long *unused_crcs; |
263 | unsigned int num_unused_syms; | ||
264 | |||
264 | /* GPL-only, unused exported symbols. */ | 265 | /* GPL-only, unused exported symbols. */ |
265 | const struct kernel_symbol *unused_gpl_syms; | ||
266 | unsigned int num_unused_gpl_syms; | 266 | unsigned int num_unused_gpl_syms; |
267 | const struct kernel_symbol *unused_gpl_syms; | ||
267 | const unsigned long *unused_gpl_crcs; | 268 | const unsigned long *unused_gpl_crcs; |
268 | 269 | ||
269 | /* symbols that will be GPL-only in the near future. */ | 270 | /* symbols that will be GPL-only in the near future. */ |
270 | const struct kernel_symbol *gpl_future_syms; | 271 | const struct kernel_symbol *gpl_future_syms; |
271 | unsigned int num_gpl_future_syms; | ||
272 | const unsigned long *gpl_future_crcs; | 272 | const unsigned long *gpl_future_crcs; |
273 | unsigned int num_gpl_future_syms; | ||
273 | 274 | ||
274 | /* Exception table */ | 275 | /* Exception table */ |
275 | unsigned int num_exentries; | 276 | unsigned int num_exentries; |
@@ -300,23 +301,9 @@ struct module | |||
300 | 301 | ||
301 | #ifdef CONFIG_GENERIC_BUG | 302 | #ifdef CONFIG_GENERIC_BUG |
302 | /* Support for BUG */ | 303 | /* Support for BUG */ |
304 | unsigned num_bugs; | ||
303 | struct list_head bug_list; | 305 | struct list_head bug_list; |
304 | struct bug_entry *bug_table; | 306 | struct bug_entry *bug_table; |
305 | unsigned num_bugs; | ||
306 | #endif | ||
307 | |||
308 | #ifdef CONFIG_MODULE_UNLOAD | ||
309 | /* Reference counts */ | ||
310 | struct module_ref ref[NR_CPUS]; | ||
311 | |||
312 | /* What modules depend on me? */ | ||
313 | struct list_head modules_which_use_me; | ||
314 | |||
315 | /* Who is waiting for us to be unloaded */ | ||
316 | struct task_struct *waiter; | ||
317 | |||
318 | /* Destruction function. */ | ||
319 | void (*exit)(void); | ||
320 | #endif | 307 | #endif |
321 | 308 | ||
322 | #ifdef CONFIG_KALLSYMS | 309 | #ifdef CONFIG_KALLSYMS |
@@ -342,6 +329,21 @@ struct module | |||
342 | struct marker *markers; | 329 | struct marker *markers; |
343 | unsigned int num_markers; | 330 | unsigned int num_markers; |
344 | #endif | 331 | #endif |
332 | |||
333 | #ifdef CONFIG_MODULE_UNLOAD | ||
334 | /* What modules depend on me? */ | ||
335 | struct list_head modules_which_use_me; | ||
336 | |||
337 | /* Who is waiting for us to be unloaded */ | ||
338 | struct task_struct *waiter; | ||
339 | |||
340 | /* Destruction function. */ | ||
341 | void (*exit)(void); | ||
342 | |||
343 | /* Reference counts */ | ||
344 | struct module_ref ref[NR_CPUS]; | ||
345 | #endif | ||
346 | |||
345 | }; | 347 | }; |
346 | #ifndef MODULE_ARCH_INIT | 348 | #ifndef MODULE_ARCH_INIT |
347 | #define MODULE_ARCH_INIT {} | 349 | #define MODULE_ARCH_INIT {} |