Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4e5f45c6
Commit
4e5f45c6
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.3.13pre4
parent
234c8819
Changes
23
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
237 additions
and
265 deletions
+237
-265
Makefile
Makefile
+1
-1
arch/i386/config.in
arch/i386/config.in
+2
-2
arch/i386/kernel/Makefile
arch/i386/kernel/Makefile
+5
-1
arch/i386/kernel/apm.c
arch/i386/kernel/apm.c
+3
-1
arch/i386/kernel/init_task.c
arch/i386/kernel/init_task.c
+1
-1
arch/i386/kernel/io_apic.c
arch/i386/kernel/io_apic.c
+3
-2
arch/i386/kernel/ldt.c
arch/i386/kernel/ldt.c
+2
-1
arch/i386/kernel/smp.c
arch/i386/kernel/smp.c
+3
-0
arch/sparc/mm/asyncd.c
arch/sparc/mm/asyncd.c
+11
-0
drivers/char/Makefile
drivers/char/Makefile
+68
-68
drivers/char/msbusmouse.c
drivers/char/msbusmouse.c
+3
-8
drivers/sound/es1370.c
drivers/sound/es1370.c
+22
-7
fs/binfmt_aout.c
fs/binfmt_aout.c
+6
-16
fs/binfmt_elf.c
fs/binfmt_elf.c
+5
-23
fs/binfmt_em86.c
fs/binfmt_em86.c
+5
-16
fs/binfmt_misc.c
fs/binfmt_misc.c
+7
-19
fs/binfmt_script.c
fs/binfmt_script.c
+5
-16
fs/buffer.c
fs/buffer.c
+9
-0
include/asm-i386/init.h
include/asm-i386/init.h
+1
-37
include/linux/init.h
include/linux/init.h
+60
-1
include/linux/module.h
include/linux/module.h
+5
-3
init/main.c
init/main.c
+0
-20
mm/vmscan.c
mm/vmscan.c
+10
-22
No files found.
Makefile
View file @
4e5f45c6
...
...
@@ -110,7 +110,7 @@ CORE_FILES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o
FILESYSTEMS
=
fs/filesystems.a
NETWORKS
=
net/network.a
DRIVERS
=
drivers/block/block.a
\
drivers/char/char.
a
\
drivers/char/char.
o
\
drivers/parport/parport.a
LIBS
=
$(TOPDIR)
/lib/lib.a
SUBDIRS
=
kernel drivers mm fs net ipc lib
...
...
arch/i386/config.in
View file @
4e5f45c6
...
...
@@ -94,8 +94,8 @@ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
source drivers/parport/Config.in
bool
'Advanced Power Management BIOS support' CONFIG_APM
if [ "$CONFIG_APM"
= "y
" ]; then
tristate
'Advanced Power Management BIOS support' CONFIG_APM
if [ "$CONFIG_APM"
!= "n
" ]; then
bool ' Ignore USER SUSPEND' CONFIG_APM_IGNORE_USER_SUSPEND
bool ' Enable PM at boot time' CONFIG_APM_DO_ENABLE
bool ' Make CPU Idle calls when idle' CONFIG_APM_CPU_IDLE
...
...
arch/i386/kernel/Makefile
View file @
4e5f45c6
...
...
@@ -34,8 +34,12 @@ else
endif
endif
if
def
CONFIG_APM
if
eq
($(CONFIG_APM),y)
OX_OBJS
+=
apm.o
else
ifeq
($(CONFIG_APM),m)
MX_OBJS
+=
apm.o
endif
endif
ifdef
CONFIG_SMP
...
...
arch/i386/kernel/apm.c
View file @
4e5f45c6
...
...
@@ -1428,7 +1428,7 @@ static int apm(void *unused)
* In short, if something bad happens, at least we have a choice
* of just killing the apm thread..
*/
void
__init
apm_init
(
void
)
static
int
__init
apm_init
(
void
)
{
static
struct
proc_dir_entry
*
ent
;
...
...
@@ -1533,3 +1533,5 @@ void __init apm_init(void)
kernel_thread
(
apm
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
|
SIGCHLD
);
}
module_init
(
apm_init
)
arch/i386/kernel/init_task.c
View file @
4e5f45c6
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/desc.h>
#include <asm/init.h>
static
struct
vm_area_struct
init_mmap
=
INIT_MMAP
;
static
struct
fs_struct
init_fs
=
INIT_FS
;
...
...
arch/i386/kernel/io_apic.c
View file @
4e5f45c6
...
...
@@ -242,7 +242,7 @@ static void clear_IO_APIC (void)
int
pirq_entries
[
MAX_PIRQS
];
int
pirqs_enabled
;
static
void
__init
ioapic_setup
(
char
*
str
,
int
*
ints
)
static
int
__init
ioapic_setup
(
char
*
str
)
{
extern
int
skip_ioapic_setup
;
/* defined in arch/i386/kernel/smp.c */
...
...
@@ -252,7 +252,7 @@ static void __init ioapic_setup(char *str, int *ints)
__setup
(
"noapic"
,
ioapic_setup
);
static
void
__init
ioapic_pirq_setup
(
char
*
str
)
static
int
__init
ioapic_pirq_setup
(
char
*
str
)
{
int
i
,
max
;
int
ints
[
11
];
...
...
@@ -275,6 +275,7 @@ static void __init ioapic_pirq_setup(char *str)
*/
pirq_entries
[
MAX_PIRQS
-
i
-
1
]
=
ints
[
i
+
1
];
}
return
1
;
}
__setup
(
"pirq="
,
ioapic_pirq_setup
);
...
...
arch/i386/kernel/ldt.c
View file @
4e5f45c6
...
...
@@ -98,8 +98,9 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
printk
(
KERN_WARNING
"LDT allocated for cloned task!
\n
"
);
/*
* Possibly do an SMP cross-call to other CPUs to reload
* their LDTs
* their LDTs
?
*/
load_LDT
(
mm
);
}
lp
=
(
__u32
*
)
((
ldt_info
.
entry_number
<<
3
)
+
(
char
*
)
mm
->
segments
);
...
...
arch/i386/kernel/smp.c
View file @
4e5f45c6
...
...
@@ -1634,7 +1634,10 @@ static void flush_tlb_others(unsigned int cpumask)
* Take care of "crossing" invalidates
*/
if
(
test_bit
(
cpu
,
&
smp_invalidate_needed
))
{
struct
mm_struct
*
mm
=
current
->
mm
;
clear_bit
(
cpu
,
&
smp_invalidate_needed
);
if
(
mm
)
atomic_set_mask
(
1
<<
cpu
,
&
mm
->
cpu_vm_mask
);
local_flush_tlb
();
}
--
stuck
;
...
...
arch/sparc/mm/asyncd.c
View file @
4e5f45c6
...
...
@@ -271,3 +271,14 @@ int asyncd(void *unused)
}
}
#if CONFIG_AP1000
static
int
__init
init_ap1000
(
void
)
{
kernel_thread
(
asyncd
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
return
0
;
}
module_init
(
init_ap1000
)
#endif
drivers/char/Makefile
View file @
4e5f45c6
This diff is collapsed.
Click to expand it.
drivers/char/msbusmouse.c
View file @
4e5f45c6
...
...
@@ -151,16 +151,11 @@ __initfunc(int ms_bus_mouse_init(void))
return
msedev
<
0
?
msedev
:
0
;
}
#ifdef MODULE
int
init_module
(
void
)
{
return
ms_bus_mouse_init
();
}
void
cleanup_module
(
void
)
void
ms_bus_mouse_exit
(
void
)
{
unregister_busmouse
(
msedev
);
release_region
(
MS_MSE_CONTROL_PORT
,
0x04
);
}
#endif
module_init
(
ms_bus_mouse_init
)
module_exit
(
ms_bus_mouse_exit
)
drivers/sound/es1370.c
View file @
4e5f45c6
...
...
@@ -101,6 +101,8 @@
* 15.06.99 0.23 Fix bad allocation bug.
* Thanks to Deti Fliegl <fliegl@in.tum.de>
* 28.06.99 0.24 Add pci_set_master
* 02.08.99 0.25 Added workaround for the "phantom write" bug first
* documented by Dave Sharpless from Anchor Games
*
* some important things missing in Ensoniq documentation:
*
...
...
@@ -181,6 +183,8 @@
#define ES1370_REG_DAC2_FRAMECNT 0xc3c
#define ES1370_REG_ADC_FRAMEADR 0xd30
#define ES1370_REG_ADC_FRAMECNT 0xd34
#define ES1370_REG_PHANTOM_FRAMEADR 0xd38
#define ES1370_REG_PHANTOM_FRAMECNT 0xd3c
#define ES1370_FMT_U8_MONO 0
#define ES1370_FMT_U8_STEREO 1
...
...
@@ -360,6 +364,13 @@ struct es1370_state {
static
struct
es1370_state
*
devs
=
NULL
;
/*
* The following buffer is used to point the phantom write channel to,
* so that it cannot wreak havoc. The attribute makes sure it doesn't
* cross a page boundary and ensures dword alignment for the DMA engine
*/
static
unsigned
char
bugbuf
[
16
]
__attribute__
((
aligned
(
16
)));
/* --------------------------------------------------------------------- */
extern
inline
unsigned
ld2
(
unsigned
int
x
)
...
...
@@ -2321,7 +2332,7 @@ int __init init_es1370(void)
if
(
!
pci_present
())
/* No PCI bus in this machine! */
return
-
ENODEV
;
printk
(
KERN_INFO
"es1370: version v0.2
4
time "
__TIME__
" "
__DATE__
"
\n
"
);
printk
(
KERN_INFO
"es1370: version v0.2
5
time "
__TIME__
" "
__DATE__
"
\n
"
);
while
(
index
<
NR_DEVICE
&&
(
pcidev
=
pci_find_device
(
PCI_VENDOR_ID_ENSONIQ
,
PCI_DEVICE_ID_ENSONIQ_ES1370
,
pcidev
)))
{
if
(
pcidev
->
base_address
[
0
]
==
0
||
...
...
@@ -2385,6 +2396,10 @@ int __init init_es1370(void)
/* initialize the chips */
outl
(
s
->
ctrl
,
s
->
io
+
ES1370_REG_CONTROL
);
outl
(
s
->
sctrl
,
s
->
io
+
ES1370_REG_SERIAL_CONTROL
);
/* point phantom write channel to "bugbuf" */
outl
((
ES1370_REG_PHANTOM_FRAMEADR
>>
8
)
&
15
,
s
->
io
+
ES1370_REG_MEMPAGE
);
outl
(
virt_to_bus
(
bugbuf
),
s
->
io
+
(
ES1370_REG_PHANTOM_FRAMEADR
&
0xff
));
outl
(
0
,
s
->
io
+
(
ES1370_REG_PHANTOM_FRAMECNT
&
0xff
));
pci_set_master
(
pcidev
);
/* enable bus mastering */
wrcodec
(
s
,
0x16
,
3
);
/* no RST, PD */
wrcodec
(
s
,
0x17
,
0
);
/* CODEC ADC and CODEC DAC use {LR,B}CLK2 and run off the LRCLK2 PLL; program DAC_SYNC=0!! */
...
...
fs/binfmt_aout.c
View file @
4e5f45c6
...
...
@@ -36,13 +36,7 @@ static int aout_core_dump(long signr, struct pt_regs * regs, struct file *file);
extern
void
dump_thread
(
struct
pt_regs
*
,
struct
user
*
);
static
struct
linux_binfmt
aout_format
=
{
NULL
,
#ifndef MODULE
NULL
,
#else
&
__this_module
,
#endif
load_aout_binary
,
load_aout_library
,
aout_core_dump
,
PAGE_SIZE
NULL
,
THIS_MODULE
,
load_aout_binary
,
load_aout_library
,
aout_core_dump
,
PAGE_SIZE
};
static
void
set_brk
(
unsigned
long
start
,
unsigned
long
end
)
...
...
@@ -564,14 +558,10 @@ static int __init init_aout_binfmt(void)
return
register_binfmt
(
&
aout_format
);
}
__initcall
(
init_aout_binfmt
);
#ifdef MODULE
int
init_module
(
void
)
{
return
init_aout_binfmt
();
}
void
cleanup_module
(
void
)
{
static
void
__exit
exit_aout_binfmt
(
void
)
{
unregister_binfmt
(
&
aout_format
);
}
#endif
module_init
(
init_aout_binfmt
)
module_exit
(
exit_aout_binfmt
)
fs/binfmt_elf.c
View file @
4e5f45c6
...
...
@@ -64,13 +64,7 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file);
#define ELF_PAGEALIGN(_v) (((_v) + ELF_EXEC_PAGESIZE - 1) & ~(ELF_EXEC_PAGESIZE - 1))
static
struct
linux_binfmt
elf_format
=
{
NULL
,
#ifndef MODULE
NULL
,
#else
&
__this_module
,
#endif
load_elf_binary
,
load_elf_library
,
elf_core_dump
,
ELF_EXEC_PAGESIZE
NULL
,
THIS_MODULE
,
load_elf_binary
,
load_elf_library
,
elf_core_dump
,
ELF_EXEC_PAGESIZE
};
static
void
set_brk
(
unsigned
long
start
,
unsigned
long
end
)
...
...
@@ -1301,23 +1295,11 @@ static int __init init_elf_binfmt(void)
return
register_binfmt
(
&
elf_format
);
}
__initcall
(
init_elf_binfmt
);
#ifdef MODULE
int
init_module
(
void
)
{
/* Install the COFF, ELF and XOUT loaders.
* N.B. We *rely* on the table being the right size with the
* right number of free slots...
*/
return
init_elf_binfmt
();
}
void
cleanup_module
(
void
)
static
void
__exit
exit_elf_binfmt
(
void
)
{
/* Remove the COFF and ELF loaders. */
unregister_binfmt
(
&
elf_format
);
}
#endif
module_init
(
init_elf_binfmt
)
module_exit
(
exit_elf_binfmt
)
fs/binfmt_em86.c
View file @
4e5f45c6
...
...
@@ -105,13 +105,7 @@ static int load_em86(struct linux_binprm *bprm,struct pt_regs *regs)
}
struct
linux_binfmt
em86_format
=
{
NULL
,
#ifndef MODULE
NULL
,
#else
&
__this_module
,
#endif
load_em86
,
NULL
,
NULL
,
0
NULL
,
THIS_MODULE
,
load_em86
,
NULL
,
NULL
,
0
};
static
int
__init
init_em86_binfmt
(
void
)
...
...
@@ -119,15 +113,10 @@ static int __init init_em86_binfmt(void)
return
register_binfmt
(
&
em86_format
);
}
__initcall
(
init_em86_binfmt
);
#ifdef MODULE
int
init_module
(
void
)
static
void
__exit
exit_em86_binfmt
(
void
)
{
return
init_em86_binfmt
();
}
void
cleanup_module
(
void
)
{
unregister_binfmt
(
&
em86_format
);
}
#endif
module_init
(
init_em86_binfmt
)
module_exit
(
exit_em86_binfmt
)
fs/binfmt_misc.c
View file @
4e5f45c6
...
...
@@ -64,13 +64,7 @@ static void entry_proc_cleanup(struct binfmt_entry *e);
static
int
entry_proc_setup
(
struct
binfmt_entry
*
e
);
static
struct
linux_binfmt
misc_format
=
{
NULL
,
#ifndef MODULE
NULL
,
#else
&
__this_module
,
#endif
load_misc_binary
,
NULL
,
NULL
,
0
NULL
,
THIS_MODULE
,
load_misc_binary
,
NULL
,
NULL
,
0
};
static
struct
proc_dir_entry
*
bm_dir
=
NULL
;
...
...
@@ -530,16 +524,7 @@ static int __init init_misc_binfmt(void)
goto
out
;
}
__initcall
(
init_misc_binfmt
);
#ifdef MODULE
EXPORT_NO_SYMBOLS
;
int
init_module
(
void
)
{
return
init_misc_binfmt
();
}
void
cleanup_module
(
void
)
static
void
__exit
exit_misc_binfmt
(
void
)
{
unregister_binfmt
(
&
misc_format
);
remove_proc_entry
(
"register"
,
bm_dir
);
...
...
@@ -547,5 +532,8 @@ void cleanup_module(void)
clear_entries
();
remove_proc_entry
(
"sys/fs/binfmt_misc"
,
NULL
);
}
#endif
#undef VERBOSE_STATUS
EXPORT_NO_SYMBOLS
;
module_init
(
init_misc_binfmt
)
module_exit
(
exit_misc_binfmt
)
fs/binfmt_script.c
View file @
4e5f45c6
...
...
@@ -101,13 +101,7 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs)
}
struct
linux_binfmt
script_format
=
{
NULL
,
#ifndef MODULE
NULL
,
#else
&
__this_module
,
#endif
load_script
,
NULL
,
NULL
,
0
NULL
,
THIS_MODULE
,
load_script
,
NULL
,
NULL
,
0
};
static
int
__init
init_script_binfmt
(
void
)
...
...
@@ -115,15 +109,10 @@ static int __init init_script_binfmt(void)
return
register_binfmt
(
&
script_format
);
}
__initcall
(
init_script_binfmt
);
#ifdef MODULE
int
init_module
(
void
)
static
void
__exit
exit_script_binfmt
(
void
)
{
return
init_script_binfmt
();
}
void
cleanup_module
(
void
)
{
unregister_binfmt
(
&
script_format
);
}
#endif
module_init
(
init_script_binfmt
)
module_exit
(
exit_script_binfmt
)
fs/buffer.c
View file @
4e5f45c6
...
...
@@ -2319,3 +2319,12 @@ int bdflush(void * unused)
}
}
}
static
int
__init
bdflush_init
(
void
)
{
kernel_thread
(
bdflush
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
return
0
;
}
module_init
(
bdflush_init
)
include/asm-i386/init.h
View file @
4e5f45c6
#ifndef _I386_INIT_H
#define _I386_INIT_H
typedef
int
(
*
initcall_t
)(
void
);
extern
initcall_t
__initcall_start
,
__initcall_end
;
struct
kernel_param
{
const
char
*
str
;
int
(
*
setup_func
)(
char
*
);
};
extern
struct
kernel_param
__setup_start
,
__setup_end
;
/* Used for initialization calls.. */
#define __initcall(fn) \
static __attribute__ ((unused,__section__ (".initcall.init"))) initcall_t __initcall_##fn = fn
/* Used for kernel command line parameter setup */
#define __setup(str, fn) \
static __attribute__ ((unused,__section__ (".setup.init"))) struct kernel_param __setup_##fn = { str, fn }
#define __init __attribute__ ((__section__ (".text.init")))
#define __initdata __attribute__ ((__section__ (".data.init")))
#define __initfunc(__arginit) \
__arginit __init; \
__arginit
/* For assembly routines */
#define __INIT .section ".text.init",#alloc,#execinstr
#define __FINIT .previous
#define __INITDATA .section ".data.init",#alloc,#write
#define __cacheline_aligned __attribute__ \
((__section__ (".data.cacheline_aligned")))
#endif
#error "<asm/init.h> should never be used - use <linux/init.h> instead"
include/linux/init.h
View file @
4e5f45c6
...
...
@@ -48,15 +48,74 @@
*/
#ifndef MODULE
#include <asm/init.h>
/*
* Used for initialization calls..
*/
typedef
int
(
*
initcall_t
)(
void
);
extern
initcall_t
__initcall_start
,
__initcall_end
;
#define __initcall(fn) \
static __attribute__ ((unused,__section__ (".initcall.init"))) \
initcall_t __initcall_##fn = fn
/*
* Used for kernel command line parameter setup
*/
struct
kernel_param
{
const
char
*
str
;
int
(
*
setup_func
)(
char
*
);
};
extern
struct
kernel_param
__setup_start
,
__setup_end
;
#define __setup(str, fn) \
static __attribute__ ((__section__ (".data.init"))) \
char __setup_str_##fn[] = str; \
static __attribute__ ((unused,__section__ (".setup.init"))) \
struct kernel_param __setup_##fn = { __setup_str_##fn, fn }
/*
* Mark functions and data as being only used at initialization
* or exit time.
*/
#define __init __attribute__ ((__section__ (".text.init")))
#define __exit __attribute__ ((unused, __section__(".text.init")))
#define __initdata __attribute__ ((__section__ (".data.init")))
#define __exitdata __attribute__ ((unused, __section__ (".data.init")))
#define __initfunc(__arginit) \
__arginit __init; \
__arginit
/* For assembly routines */
#define __INIT .section ".text.init","ax"
#define __FINIT .previous
#define __INITDATA .section ".data.init","aw"
#define __cacheline_aligned __attribute__ \
((__section__ (".data.cacheline_aligned")))
#define module_init(x) __initcall(x);
#define module_exit(x)
/* nothing */
#else
#define __init
#define __exit
#define __initdata
#define __exitdata
#define __initfunc(__arginit) __arginit
#defint __initcall
/* For assembly routines */
#define __INIT
#define __FINIT
#define __INITDATA
#define module_init(x) int init_module(void) { return x(); }
#define module_exit(x) void cleanup_module(void) { x(); }
#endif
#if __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
...
...
include/linux/module.h
View file @
4e5f45c6
...
...
@@ -191,9 +191,10 @@ __asm__(".section .modinfo\n\t.previous");
/* Define the module variable, and usage macros. */
extern
struct
module
__this_module
;
#define MOD_INC_USE_COUNT __MOD_INC_USE_COUNT(&__this_module)
#define MOD_DEC_USE_COUNT __MOD_DEC_USE_COUNT(&__this_module)
#define MOD_IN_USE __MOD_IN_USE(&__this_module)
#define THIS_MODULE (&__this_module)
#define MOD_INC_USE_COUNT __MOD_INC_USE_COUNT(THIS_MODULE)
#define MOD_DEC_USE_COUNT __MOD_DEC_USE_COUNT(THIS_MODULE)
#define MOD_IN_USE __MOD_IN_USE(THIS_MODULE)
#ifndef __NO_VERSION__
#include <linux/version.h>
...
...
@@ -215,6 +216,7 @@ const char __module_using_checksums[] __attribute__((section(".modinfo"))) =
#ifndef __GENKSYMS__
#define THIS_MODULE NULL
#define MOD_INC_USE_COUNT do { } while (0)
#define MOD_DEC_USE_COUNT do { } while (0)
#define MOD_IN_USE 1
...
...
init/main.c
View file @
4e5f45c6
...
...
@@ -68,9 +68,6 @@ extern char *linux_banner;
extern
int
console_loglevel
;
static
int
init
(
void
*
);
extern
int
bdflush
(
void
*
);
extern
int
kswapd
(
void
*
);
extern
void
kswapd_setup
(
void
);
extern
void
init_IRQ
(
void
);
extern
void
init_modules
(
void
);
...
...
@@ -606,29 +603,12 @@ static void __init do_basic_setup(void)
#ifdef CONFIG_MAC
nubus_init
();
#endif
#ifdef CONFIG_APM
apm_init
();
#endif
/* Networking initialization needs a process context */
sock_init
();
do_initcalls
();
/* Launch bdflush from here, instead of the old syscall way. */
kernel_thread
(
bdflush
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
/* Start the background pageout daemon. */
kswapd_setup
();
kernel_thread
(
kswapd
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
#if CONFIG_AP1000
/* Start the async paging daemon. */
{
extern
int
asyncd
(
void
*
);
kernel_thread
(
asyncd
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
}
#endif
#ifdef CONFIG_BLK_DEV_INITRD
real_root_dev
=
ROOT_DEV
;
...
...
mm/vmscan.c
View file @
4e5f45c6
...
...
@@ -437,27 +437,6 @@ static int do_try_to_free_pages(unsigned int gfp_mask)
return
priority
>=
0
;
}
/*
* Before we start the kernel thread, print out the
* kswapd initialization message (otherwise the init message
* may be printed in the middle of another driver's init
* message). It looks very bad when that happens.
*/
void
__init
kswapd_setup
(
void
)
{
int
i
;
char
*
revision
=
"$Revision: 1.5 $"
,
*
s
,
*
e
;
swap_setup
();
if
((
s
=
strchr
(
revision
,
':'
))
&&
(
e
=
strchr
(
s
,
'$'
)))
s
++
,
i
=
e
-
s
;
else
s
=
revision
,
i
=
-
1
;
printk
(
"Starting kswapd v%.*s
\n
"
,
i
,
s
);
}
static
struct
task_struct
*
kswapd_process
;
/*
...
...
@@ -545,3 +524,12 @@ int try_to_free_pages(unsigned int gfp_mask)
return
retval
;
}
static
int
__init
kswapd_init
(
void
)
{
printk
(
"Starting kswapd v1.6
\n
"
);
swap_setup
();
kernel_thread
(
kswapd
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
return
0
;
}
module_init
(
kswapd_init
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment