~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to include/linux/module.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
#include <linux/kobject.h>
17
17
#include <linux/moduleparam.h>
18
18
#include <linux/tracepoint.h>
 
19
#include <linux/export.h>
19
20
 
20
21
#include <linux/percpu.h>
21
22
#include <asm/module.h>
25
26
/* Not Yet Implemented */
26
27
#define MODULE_SUPPORTED_DEVICE(name)
27
28
 
28
 
/* Some toolchains use a `_' prefix for all user symbols. */
29
 
#ifdef CONFIG_SYMBOL_PREFIX
30
 
#define MODULE_SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX
31
 
#else
32
 
#define MODULE_SYMBOL_PREFIX ""
33
 
#endif
34
 
 
35
29
#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
36
30
 
37
 
struct kernel_symbol
38
 
{
39
 
        unsigned long value;
40
 
        const char *name;
41
 
};
42
 
 
43
31
struct modversion_info
44
32
{
45
33
        unsigned long crc;
48
36
 
49
37
struct module;
50
38
 
 
39
struct module_kobject {
 
40
        struct kobject kobj;
 
41
        struct module *mod;
 
42
        struct kobject *drivers_dir;
 
43
        struct module_param_attrs *mp;
 
44
};
 
45
 
51
46
struct module_attribute {
52
 
        struct attribute attr;
53
 
        ssize_t (*show)(struct module_attribute *, struct module *, char *);
54
 
        ssize_t (*store)(struct module_attribute *, struct module *,
 
47
        struct attribute attr;
 
48
        ssize_t (*show)(struct module_attribute *, struct module_kobject *,
 
49
                        char *);
 
50
        ssize_t (*store)(struct module_attribute *, struct module_kobject *,
55
51
                         const char *, size_t count);
56
52
        void (*setup)(struct module *, const char *);
57
53
        int (*test)(struct module *);
65
61
} __attribute__ ((__aligned__(sizeof(void *))));
66
62
 
67
63
extern ssize_t __modver_version_show(struct module_attribute *,
68
 
                                     struct module *, char *);
 
64
                                     struct module_kobject *, char *);
69
65
 
70
 
struct module_kobject
71
 
{
72
 
        struct kobject kobj;
73
 
        struct module *mod;
74
 
        struct kobject *drivers_dir;
75
 
        struct module_param_attrs *mp;
76
 
};
 
66
extern struct module_attribute module_uevent;
77
67
 
78
68
/* These are either module local, or the kernel's dummy ones. */
79
69
extern int init_module(void);
96
86
extern const struct gtype##_id __mod_##gtype##_table            \
97
87
  __attribute__ ((unused, alias(__stringify(name))))
98
88
 
99
 
extern struct module __this_module;
100
 
#define THIS_MODULE (&__this_module)
101
89
#else  /* !MODULE */
102
90
#define MODULE_GENERIC_TABLE(gtype,name)
103
 
#define THIS_MODULE ((struct module *)0)
104
91
#endif
105
92
 
106
93
/* Generic info of form tag = "info" */
148
135
/* What your module does. */
149
136
#define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description)
150
137
 
151
 
/* One for each parameter, describing how to use it.  Some files do
152
 
   multiple of these per line, so can't just use MODULE_INFO. */
153
 
#define MODULE_PARM_DESC(_parm, desc) \
154
 
        __MODULE_INFO(parm, _parm, #_parm ":" desc)
155
 
 
156
138
#define MODULE_DEVICE_TABLE(type,name)          \
157
139
  MODULE_GENERIC_TABLE(type##_device,name)
158
140
 
216
198
        struct module *source, *target;
217
199
};
218
200
 
219
 
#ifndef __GENKSYMS__
220
 
#ifdef CONFIG_MODVERSIONS
221
 
/* Mark the CRC weak since genksyms apparently decides not to
222
 
 * generate a checksums for some symbols */
223
 
#define __CRC_SYMBOL(sym, sec)                                  \
224
 
        extern void *__crc_##sym __attribute__((weak));         \
225
 
        static const unsigned long __kcrctab_##sym              \
226
 
        __used                                                  \
227
 
        __attribute__((section("___kcrctab" sec "+" #sym), unused))     \
228
 
        = (unsigned long) &__crc_##sym;
229
 
#else
230
 
#define __CRC_SYMBOL(sym, sec)
231
 
#endif
232
 
 
233
 
/* For every exported symbol, place a struct in the __ksymtab section */
234
 
#define __EXPORT_SYMBOL(sym, sec)                               \
235
 
        extern typeof(sym) sym;                                 \
236
 
        __CRC_SYMBOL(sym, sec)                                  \
237
 
        static const char __kstrtab_##sym[]                     \
238
 
        __attribute__((section("__ksymtab_strings"), aligned(1))) \
239
 
        = MODULE_SYMBOL_PREFIX #sym;                            \
240
 
        static const struct kernel_symbol __ksymtab_##sym       \
241
 
        __used                                                  \
242
 
        __attribute__((section("___ksymtab" sec "+" #sym), unused))     \
243
 
        = { (unsigned long)&sym, __kstrtab_##sym }
244
 
 
245
 
#define EXPORT_SYMBOL(sym)                                      \
246
 
        __EXPORT_SYMBOL(sym, "")
247
 
 
248
 
#define EXPORT_SYMBOL_GPL(sym)                                  \
249
 
        __EXPORT_SYMBOL(sym, "_gpl")
250
 
 
251
 
#define EXPORT_SYMBOL_GPL_FUTURE(sym)                           \
252
 
        __EXPORT_SYMBOL(sym, "_gpl_future")
253
 
 
254
 
 
255
 
#ifdef CONFIG_UNUSED_SYMBOLS
256
 
#define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused")
257
 
#define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl")
258
 
#else
259
 
#define EXPORT_UNUSED_SYMBOL(sym)
260
 
#define EXPORT_UNUSED_SYMBOL_GPL(sym)
261
 
#endif
262
 
 
263
 
#endif
264
 
 
265
201
enum module_state
266
202
{
267
203
        MODULE_STATE_LIVE,
578
514
 
579
515
extern void print_modules(void);
580
516
 
581
 
extern void module_update_tracepoints(void);
582
 
extern int module_get_iter_tracepoints(struct tracepoint_iter *iter);
583
 
 
584
517
#else /* !CONFIG_MODULES... */
585
 
#define EXPORT_SYMBOL(sym)
586
 
#define EXPORT_SYMBOL_GPL(sym)
587
 
#define EXPORT_SYMBOL_GPL_FUTURE(sym)
588
 
#define EXPORT_UNUSED_SYMBOL(sym)
589
 
#define EXPORT_UNUSED_SYMBOL_GPL(sym)
590
518
 
591
519
/* Given an address, look for it in the exception tables. */
592
520
static inline const struct exception_table_entry *
696
624
static inline void print_modules(void)
697
625
{
698
626
}
699
 
 
700
 
static inline void module_update_tracepoints(void)
701
 
{
702
 
}
703
 
 
704
 
static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter)
705
 
{
706
 
        return 0;
707
 
}
708
627
#endif /* CONFIG_MODULES */
709
628
 
710
629
#ifdef CONFIG_SYSFS