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