📄 module.h
字号:
#ifndef _ASM_MIPS64_MODULE_H#define _ASM_MIPS64_MODULE_H/* * This file contains the mips64 architecture specific module code. */#include <linux/module.h>#include <asm/uaccess.h>#define module_map(x) vmalloc(x)#define module_unmap(x) vfree(x)#define module_arch_init(x) mips64_module_init(x)#define arch_init_modules(x) mips64_init_modules(x)/* * This must match in size and layout the data created by * modutils/obj/obj-mips64.c */struct archdata { const struct exception_table_entry *dbe_table_start; const struct exception_table_entry *dbe_table_end;};static inline intmips64_module_init(struct module *mod){ struct archdata *archdata; if (!mod_member_present(mod, archdata_end)) return 0; archdata = (struct archdata *)(mod->archdata_start); if (!mod_archdata_member_present(mod, struct archdata, dbe_table_end)) return 0; if (archdata->dbe_table_start > archdata->dbe_table_end || (archdata->dbe_table_start && !((unsigned long)archdata->dbe_table_start >= ((unsigned long)mod + mod->size_of_struct) && ((unsigned long)archdata->dbe_table_end < (unsigned long)mod + mod->size))) || (((unsigned long)archdata->dbe_table_start - (unsigned long)archdata->dbe_table_end) % sizeof(struct exception_table_entry))) { printk(KERN_ERR "module_arch_init: archdata->dbe_table_* invalid.\n"); return 1; } return 0;}static inline voidmips64_init_modules(struct module *mod){ extern const struct exception_table_entry __start___dbe_table[]; extern const struct exception_table_entry __stop___dbe_table[]; static struct archdata archdata = { dbe_table_start: __start___dbe_table, dbe_table_end: __stop___dbe_table, }; mod->archdata_start = (char *)&archdata; mod->archdata_end = mod->archdata_start + sizeof(archdata);}#endif /* _ASM_MIPS64_MODULE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -