Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
e22af66f
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
e22af66f
编写于
5月 30, 2008
作者:
U
Uwe Kleine-König
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'atags' into for-rmk
上级
a4831fbe
f7b0b939
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
45 deletion
+40
-45
arch/arm/kernel/atags.c
arch/arm/kernel/atags.c
+40
-43
include/asm-arm/kexec.h
include/asm-arm/kexec.h
+0
-2
未找到文件。
arch/arm/kernel/atags.c
浏览文件 @
e22af66f
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/kexec.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <asm/setup.h>
#include <asm/setup.h>
#include <asm/types.h>
#include <asm/types.h>
...
@@ -7,9 +6,8 @@
...
@@ -7,9 +6,8 @@
struct
buffer
{
struct
buffer
{
size_t
size
;
size_t
size
;
char
*
data
;
char
data
[]
;
};
};
static
struct
buffer
tags_buffer
;
static
int
static
int
read_buffer
(
char
*
page
,
char
**
start
,
off_t
off
,
int
count
,
read_buffer
(
char
*
page
,
char
**
start
,
off_t
off
,
int
count
,
...
@@ -29,58 +27,57 @@ read_buffer(char* page, char** start, off_t off, int count,
...
@@ -29,58 +27,57 @@ read_buffer(char* page, char** start, off_t off, int count,
return
count
;
return
count
;
}
}
#define BOOT_PARAMS_SIZE 1536
static
int
static
char
__initdata
atags_copy
[
BOOT_PARAMS_SIZE
];
create_proc_entries
(
void
)
{
struct
proc_dir_entry
*
tags_entry
;
tags_entry
=
create_proc_read_entry
(
"atags"
,
0400
,
NULL
,
read_buffer
,
&
tags_buffer
);
if
(
!
tags_entry
)
return
-
ENOMEM
;
return
0
;
}
static
char
__initdata
atags_copy_buf
[
KEXEC_BOOT_PARAMS_SIZE
];
static
char
__initdata
*
atags_copy
;
void
__init
save_atags
(
const
struct
tag
*
tags
)
void
__init
save_atags
(
const
struct
tag
*
tags
)
{
{
atags_copy
=
atags_copy_buf
;
memcpy
(
atags_copy
,
tags
,
sizeof
(
atags_copy
));
memcpy
(
atags_copy
,
tags
,
KEXEC_BOOT_PARAMS_SIZE
);
}
}
static
int
__init
init_atags_procfs
(
void
)
static
int
__init
init_atags_procfs
(
void
)
{
{
struct
tag
*
tag
;
/*
int
error
;
* This cannot go into save_atags() because kmalloc and proc don't work
* yet when it is called.
*/
struct
proc_dir_entry
*
tags_entry
;
struct
tag
*
tag
=
(
struct
tag
*
)
atags_copy
;
struct
buffer
*
b
;
size_t
size
;
if
(
!
atags_copy
)
{
if
(
tag
->
hdr
.
tag
!=
ATAG_CORE
)
{
printk
(
KERN_
WARNING
"Exporting ATAGs: No saved tags found
\n
"
);
printk
(
KERN_
INFO
"No ATAGs?
"
);
return
-
EI
O
;
return
-
EI
NVAL
;
}
}
for
(
tag
=
(
struct
tag
*
)
atags_copy
;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
;
;
tags_buffer
.
size
=
((
char
*
)
tag
-
atags_copy
)
+
sizeof
(
tag
->
hdr
);
/* include the terminating ATAG_NONE */
tags_buffer
.
data
=
kmalloc
(
tags_buffer
.
size
,
GFP_KERNEL
);
size
=
(
char
*
)
tag
-
atags_copy
+
sizeof
(
struct
tag_header
);
if
(
tags_buffer
.
data
==
NULL
)
return
-
ENOMEM
;
memcpy
(
tags_buffer
.
data
,
atags_copy
,
tags_buffer
.
size
);
error
=
create_proc_entries
();
if
(
error
)
{
printk
(
KERN_ERR
"Exporting ATAGs: not enough memory
\n
"
);
kfree
(
tags_buffer
.
data
);
tags_buffer
.
size
=
0
;
tags_buffer
.
data
=
NULL
;
}
return
error
;
WARN_ON
(
tag
->
hdr
.
tag
!=
ATAG_NONE
);
}
b
=
kmalloc
(
sizeof
(
*
b
)
+
size
,
GFP_KERNEL
);
if
(
!
b
)
goto
nomem
;
b
->
size
=
size
;
memcpy
(
b
->
data
,
atags_copy
,
size
);
tags_entry
=
create_proc_read_entry
(
"atags"
,
0400
,
NULL
,
read_buffer
,
b
);
if
(
!
tags_entry
)
goto
nomem
;
return
0
;
nomem:
kfree
(
b
);
printk
(
KERN_ERR
"Exporting ATAGs: not enough memory
\n
"
);
return
-
ENOMEM
;
}
arch_initcall
(
init_atags_procfs
);
arch_initcall
(
init_atags_procfs
);
include/asm-arm/kexec.h
浏览文件 @
e22af66f
...
@@ -14,8 +14,6 @@
...
@@ -14,8 +14,6 @@
#define KEXEC_ARCH KEXEC_ARCH_ARM
#define KEXEC_ARCH KEXEC_ARCH_ARM
#define KEXEC_BOOT_PARAMS_SIZE 1536
#define KEXEC_ARM_ATAGS_OFFSET 0x1000
#define KEXEC_ARM_ATAGS_OFFSET 0x1000
#define KEXEC_ARM_ZIMAGE_OFFSET 0x8000
#define KEXEC_ARM_ZIMAGE_OFFSET 0x8000
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录