Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
kernel
configs.c
Go to the documentation of this file.
1
/*
2
* kernel/configs.c
3
* Echo the kernel .config file used to build the kernel
4
*
5
* Copyright (C) 2002 Khalid Aziz <
[email protected]
>
6
* Copyright (C) 2002 Randy Dunlap <
[email protected]
>
7
* Copyright (C) 2002 Al Stone <
[email protected]
>
8
* Copyright (C) 2002 Hewlett-Packard Company
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or (at
13
* your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful, but
16
* WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
18
* NON INFRINGEMENT. See the GNU General Public License for more
19
* details.
20
*
21
* You should have received a copy of the GNU General Public License
22
* along with this program; if not, write to the Free Software
23
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24
*/
25
26
#include <linux/kernel.h>
27
#include <linux/module.h>
28
#include <
linux/proc_fs.h
>
29
#include <
linux/seq_file.h
>
30
#include <
linux/init.h
>
31
#include <asm/uaccess.h>
32
33
/**************************************************/
34
/* the actual current config file */
35
36
/*
37
* Define kernel_config_data and kernel_config_data_size, which contains the
38
* wrapped and compressed configuration file. The file is first compressed
39
* with gzip and then bounded by two eight byte magic numbers to allow
40
* extraction from a binary kernel image:
41
*
42
* IKCFG_ST
43
* <image>
44
* IKCFG_ED
45
*/
46
#define MAGIC_START "IKCFG_ST"
47
#define MAGIC_END "IKCFG_ED"
48
#include "config_data.h"
49
50
51
#define MAGIC_SIZE (sizeof(MAGIC_START) - 1)
52
#define kernel_config_data_size \
53
(sizeof(kernel_config_data) - 1 - MAGIC_SIZE * 2)
54
55
#ifdef CONFIG_IKCONFIG_PROC
56
57
static
ssize_t
58
ikconfig_read_current(
struct
file
*
file
,
char
__user *
buf
,
59
size_t
len, loff_t *
offset
)
60
{
61
return
simple_read_from_buffer
(buf, len, offset,
62
kernel_config_data +
MAGIC_SIZE
,
63
kernel_config_data_size
);
64
}
65
66
static
const
struct
file_operations
ikconfig_file_ops = {
67
.
owner
=
THIS_MODULE
,
68
.read = ikconfig_read_current,
69
.llseek =
default_llseek
,
70
};
71
72
static
int
__init
ikconfig_init(
void
)
73
{
74
struct
proc_dir_entry
*
entry
;
75
76
/* create the current config file */
77
entry = proc_create(
"config.gz"
,
S_IFREG
|
S_IRUGO
,
NULL
,
78
&ikconfig_file_ops);
79
if
(!entry)
80
return
-
ENOMEM
;
81
82
entry->
size
=
kernel_config_data_size
;
83
84
return
0;
85
}
86
87
static
void
__exit
ikconfig_cleanup(
void
)
88
{
89
remove_proc_entry
(
"config.gz"
,
NULL
);
90
}
91
92
module_init
(ikconfig_init);
93
module_exit
(ikconfig_cleanup);
94
95
#endif
/* CONFIG_IKCONFIG_PROC */
96
97
MODULE_LICENSE
(
"GPL"
);
98
MODULE_AUTHOR
(
"Randy Dunlap"
);
99
MODULE_DESCRIPTION
(
"Echo the kernel .config file used to build the kernel"
);
Generated on Thu Jan 10 2013 14:54:17 for Linux Kernel by
1.8.2