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
arch
cris
mm
init.c
Go to the documentation of this file.
1
/*
2
* linux/arch/cris/mm/init.c
3
*
4
* Copyright (C) 1995 Linus Torvalds
5
* Copyright (C) 2000,2001 Axis Communications AB
6
*
7
* Authors: Bjorn Wesen (
[email protected]
)
8
*
9
*/
10
11
#include <
linux/gfp.h
>
12
#include <
linux/init.h
>
13
#include <
linux/bootmem.h
>
14
#include <asm/tlb.h>
15
16
unsigned
long
empty_zero_page
;
17
18
extern
char
_stext
,
_edata
,
_etext
;
/* From linkerscript */
19
extern
char
__init_begin
,
__init_end
;
20
21
void
__init
22
mem_init
(
void
)
23
{
24
int
codesize, reservedpages, datasize, initsize;
25
unsigned
long
tmp
;
26
27
BUG_ON
(!
mem_map
);
28
29
/* max/min_low_pfn was set by setup.c
30
* now we just copy it to some other necessary places...
31
*
32
* high_memory was also set in setup.c
33
*/
34
35
max_mapnr
=
num_physpages
=
max_low_pfn
-
min_low_pfn
;
36
37
/* this will put all memory onto the freelists */
38
totalram_pages =
free_all_bootmem
();
39
40
reservedpages = 0;
41
for
(tmp = 0; tmp <
max_mapnr
; tmp++) {
42
/*
43
* Only count reserved RAM pages
44
*/
45
if
(PageReserved(
mem_map
+ tmp))
46
reservedpages++;
47
}
48
49
codesize = (
unsigned
long
) &
_etext
- (
unsigned
long
) &
_stext
;
50
datasize = (
unsigned
long
) &
_edata
- (
unsigned
long
) &
_etext
;
51
initsize = (
unsigned
long
) &
__init_end
- (
unsigned
long
) &
__init_begin
;
52
53
printk
(
KERN_INFO
54
"Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, "
55
"%dk init)\n"
,
56
nr_free_pages() << (
PAGE_SHIFT
-10),
57
max_mapnr << (
PAGE_SHIFT
-10),
58
codesize >> 10,
59
reservedpages << (
PAGE_SHIFT
-10),
60
datasize >> 10,
61
initsize >> 10
62
);
63
}
64
65
/* free the pages occupied by initialization code */
66
67
void
68
free_initmem
(
void
)
69
{
70
unsigned
long
addr
;
71
72
addr = (
unsigned
long
)(&
__init_begin
);
73
for
(; addr < (
unsigned
long
)(&
__init_end
); addr +=
PAGE_SIZE
) {
74
ClearPageReserved(
virt_to_page
(addr));
75
init_page_count(
virt_to_page
(addr));
76
free_page
(addr);
77
totalram_pages++;
78
}
79
printk
(
KERN_INFO
"Freeing unused kernel memory: %luk freed\n"
,
80
(
unsigned
long
)((&
__init_end
- &
__init_begin
) >> 10));
81
}
Generated on Thu Jan 10 2013 12:53:59 for Linux Kernel by
1.8.2