111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/**************************************************************************** 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** This header was automatically generated from a Linux kernel header 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** of the same name, to make information necessary for userspace to 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** call into the kernel available to libc. It contains only constants, 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** structures, and macros generated from the original header, and thus, 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** contains no copyrightable information. 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/ 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_MODULE_H 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_MODULE_H 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/sched.h> 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/spinlock.h> 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/list.h> 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/stat.h> 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/compiler.h> 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/cache.h> 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/kmod.h> 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/elf.h> 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/stringify.h> 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/kobject.h> 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/moduleparam.h> 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/local.h> 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/module.h> 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_SUPPORTED_DEVICE(name) 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef MODULE_SYMBOL_PREFIX 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_SYMBOL_PREFIX "" 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_NAME_LEN (64 - sizeof(unsigned long)) 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct kernel_symbol 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long value; 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char *name; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct modversion_info 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long crc; 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[MODULE_NAME_LEN]; 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct module; 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct module_attribute { 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct attribute attr; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ssize_t (*show)(struct module_attribute *, struct module *, char *); 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ssize_t (*store)(struct module_attribute *, struct module *, 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char *, size_t count); 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*setup)(struct module *, const char *); 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*test)(struct module *); 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*free)(struct module *); 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct module_kobject 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct kobject kobj; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct module *mod; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct exception_table_entry; 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef MODULE 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_GENERIC_TABLE(gtype,name) extern const struct gtype##_id __mod_##gtype##_table __attribute__ ((unused, alias(__stringify(name)))) 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define THIS_MODULE (&__this_module) 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_GENERIC_TABLE(gtype,name) 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define THIS_MODULE ((struct module *)0) 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_LICENSE(_license) MODULE_INFO(license, _license) 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_AUTHOR(_author) MODULE_INFO(author, _author) 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_PARM_DESC(_parm, desc) __MODULE_INFO(parm, _parm, #_parm ":" desc) 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_DEVICE_TABLE(type,name) MODULE_GENERIC_TABLE(type##_device,name) 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MODULE_VERSION(_version) MODULE_INFO(version, _version) 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct notifier_block; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXPORT_SYMBOL(sym) 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXPORT_SYMBOL_GPL(sym) 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXPORT_SYMBOL_GPL_FUTURE(sym) 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXPORT_UNUSED_SYMBOL(sym) 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EXPORT_UNUSED_SYMBOL_GPL(sym) 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define symbol_put(x) do { } while(0) 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define symbol_put_addr(x) do { } while(0) 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define module_name(mod) "kernel" 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __unsafe(mod) 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define module_put_and_exit(code) do_exit(code) 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct module; 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x) 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __MODULE_STRING(x) __stringify(x) 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 115