Linux Device Driver Reference
_ _KERNEL_ _
MODULE
Preprocessor symbols,which must both be defined to compile modularized kernel code
_ _SMP_ _
A preprocessor symbol that must be defined when compiling modules for symmetric multiprocessor systems.
int init_module(void);
void cleanup_module(void);
Module entry points,which must be defined in the module object file.
#include
module_init(init_function);
module_exit(cleanup_function);
The moderm mechanism for marking a modules's initialization and cleanup functions.
#include
Requied header.It must be included by a module source.
MOD_INC_USE_COUNT;
MOD_DEC_USE_COUNT;
MOD_IN_USE;
Macros that act on the usage count.
/proc/modules
The list of currently loaded modules.Entries contain the module name, the amount of memory each module occupies,and the usage count.Extra strings are appended to each line to specify flags that are currently active for the module.
EXPORT_SYMTAB;
Preprocessor macro,required for modules that export symbols.
EXPORT_NO_SYMBOLS;
Macro used to specify that the module exports no symbols to the kernel.
EXPORT_SYMBOL(symbol);
EXPORT_SYMBOL_NOVERS(symbol);
Macro used to export a symbol to the kernel.The second form exports without using versioning information.
int register_symtab(struct symbol_table *);
Function used to specify the set of public symbols in the module.Used in 2.0 kernels only.
#include
X(symbol),
#include
Headers and preprocessor macro used to declare a symbol table in the 2.0 kernel.
MODULE_PARM(variable,type);
MODULE_PARM_DESC9variable,description);
Macros that make a module variable available as a parameter that may be adjusted by the user at module load time.
MODULE_AUTHOR(author);
MODULE_DESCRIPTION(description);
MODULE_SUPPORTED_DEVICE(device);
Place documentation on the module in the object file.
#include
Requied headr.It is include by ,unless _ _NO_VERSION_ _ is defined.
LINUX_VERSION_CODE
Integer macro,useful to #ifdef version dependencies.
char kernel_version[]= UTS_RELEASE;
Required variable in every module.defines it.unless _ _NO_VERSION_ _is defined.
_ _NO_VERSION_ _
Preprocessor symbol.Prevents declaration of kernel_version in .
#include
One of the most important header files.This file contains definitions of much of the kernel API used by the driver,including functions for sleeping and numerous variable declarations.
struct task_struct *current;
The current process.
current->pid
current->com
The process ID and command name for the current process.
#include
int printk(const char * fmt, ...);
The analogue of printf for kernel code.
#include
void *kmalloc(unsigned int size,int priority);
void kfree(void *obj);
Analogue of malloc and free for kernel code.Use the value of GFP_KERNEL as the priority.
#include
int check_region(unsigned long from,unsigned long extent);
struct resource *request_region_unsigned long from,unsigned long extent,const char *name);
void release_region(unsigned long from,unsigned long extent);
Functions used to register and release I/O ports.
int check_mem_region(unsigned long start,unsigned long extent);
struct resource *request_mem_region(unsigned long start,unsigned long extent,const char *name);
void release_mem_region(unsigned long start,unsigned long extent);
Macro used to register and release I/O memory regions.
/proc/ksyms
The public kernel symbol table.
/proc/ioports
The list of ports used by installed devices.
/proc/iomem
The list of allocated memory regions.