linux内核中结构体struct module

来源:互联网 发布:java数据结构视频教程 编辑:程序博客网 时间:2024/06/06 09:27



linux/module.h 中在230行出定义了struct module。(找的偶好苦啊。。。)




struct module{enum module_state state;/* Member of list of modules */struct list_head list;/* Unique handle for this module */char name[MODULE_NAME_LEN];/* Sysfs stuff. */struct module_kobject mkobj;struct module_attribute *modinfo_attrs;const char *version;const char *srcversion;struct kobject *holders_dir;/* Exported symbols */const struct kernel_symbol *syms;const unsigned long *crcs;unsigned int num_syms;/* Kernel parameters. */struct kernel_param *kp;unsigned int num_kp;/* GPL-only exported symbols. */unsigned int num_gpl_syms;const struct kernel_symbol *gpl_syms;const unsigned long *gpl_crcs;#ifdef CONFIG_UNUSED_SYMBOLS/* unused exported symbols. */const struct kernel_symbol *unused_syms;const unsigned long *unused_crcs;unsigned int num_unused_syms;/* GPL-only, unused exported symbols. */unsigned int num_unused_gpl_syms;const struct kernel_symbol *unused_gpl_syms;const unsigned long *unused_gpl_crcs;#endif#ifdef CONFIG_MODULE_SIG/* Signature was verified. */bool sig_ok;#endif/* symbols that will be GPL-only in the near future. */const struct kernel_symbol *gpl_future_syms;const unsigned long *gpl_future_crcs;unsigned int num_gpl_future_syms;/* Exception table */unsigned int num_exentries;struct exception_table_entry *extable;/* Startup function. */int (*init)(void);/* If this is non-NULL, vfree after init() returns */void *module_init;/* Here is the actual code + data, vfree'd on unload. */void *module_core;/* Here are the sizes of the init and core sections */unsigned int init_size, core_size;/* The size of the executable code in each section.  */unsigned int init_text_size, core_text_size;/* Size of RO sections of the module (text+rodata) */unsigned int init_ro_size, core_ro_size;/* Arch-specific module values */struct mod_arch_specific arch;unsigned int taints;/* same bits as kernel:tainted */#ifdef CONFIG_GENERIC_BUG/* Support for BUG */unsigned num_bugs;struct list_head bug_list;struct bug_entry *bug_table;#endif#ifdef CONFIG_KALLSYMS/* * We keep the symbol and string tables for kallsyms. * The core_* fields below are temporary, loader-only (they * could really be discarded after module init). */Elf_Sym *symtab, *core_symtab;unsigned int num_symtab, core_num_syms;char *strtab, *core_strtab;/* Section attributes */struct module_sect_attrs *sect_attrs;/* Notes attributes */struct module_notes_attrs *notes_attrs;#endif/* The command line arguments (may be mangled).  People like   keeping pointers to this stuff */char *args;#ifdef CONFIG_SMP/* Per-cpu data. */void __percpu *percpu;unsigned int percpu_size;#endif#ifdef CONFIG_TRACEPOINTSunsigned int num_tracepoints;struct tracepoint * const *tracepoints_ptrs;#endif#ifdef HAVE_JUMP_LABELstruct jump_entry *jump_entries;unsigned int num_jump_entries;#endif#ifdef CONFIG_TRACINGunsigned int num_trace_bprintk_fmt;const char **trace_bprintk_fmt_start;#endif#ifdef CONFIG_EVENT_TRACINGstruct ftrace_event_call **trace_events;unsigned int num_trace_events;#endif#ifdef CONFIG_FTRACE_MCOUNT_RECORDunsigned int num_ftrace_callsites;unsigned long *ftrace_callsites;#endif#ifdef CONFIG_MODULE_UNLOAD/* What modules depend on me? */struct list_head source_list;/* What modules do I depend on? */struct list_head target_list;/* Who is waiting for us to be unloaded */struct task_struct *waiter;/* Destruction function. */void (*exit)(void);struct module_ref __percpu *refptr;#endif#ifdef CONFIG_CONSTRUCTORS/* Constructor functions. */ctor_fn_t *ctors;unsigned int num_ctors;#endif};


先贴在这儿,以后再用,再update

0 0
原创粉丝点击