mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-19 01:22:36 +08:00
更新了内存管理之内存描述(二)--内存结点pg_data_t详解...
This commit is contained in:
@@ -6,7 +6,7 @@ GITHUB_COMMIT := $(COMMIT)
|
||||
|
||||
|
||||
ifeq ($(COMMIT), )
|
||||
GITHUB_COMMIT="更新了内存管理之内存描述(四)--页帧struct page详解..."
|
||||
GITHUB_COMMIT="更新了内存管理之内存描述(二)--内存结点pg_data_t详解..."
|
||||
endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/02-memory/01-description/02-node/print_node.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/02-memory/01-description/02-node/print_node.ko /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/02-memory/01-description/02-node/print_node.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/02-memory/01-description/02-node/print_node.mod.o
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
kernel//home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/02-memory/01-description/02-node/print_node.ko
|
||||
@@ -11,6 +11,19 @@
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
void print_node(struct pglist_data *node)
|
||||
{
|
||||
printk("address = %p\n", node);
|
||||
printk("node id = %d\n", node->node_id);
|
||||
printk("nr_zones = %d\n", node->nr_zones);
|
||||
printk("pgdat_next = %p\n", node->pgdat_next);
|
||||
|
||||
printk("nod present pages = %d\n", node->node_present_pages);
|
||||
printk("nod spanned pages = %d\n", node->node_spanned_pages);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern pg_data_t *pgdat_list[MAX_NUMNODES];
|
||||
static int __init print_node_setup(void)
|
||||
{
|
||||
@@ -18,9 +31,10 @@ static int __init print_node_setup(void)
|
||||
printk(KERN_INFO "PAGE_OFFSET = 0x%lx\n",
|
||||
PAGE_OFFSET);
|
||||
|
||||
/*
|
||||
|
||||
int i;
|
||||
pg_data_t *pgdat = NULL;
|
||||
pg_data_t *node = NULL;
|
||||
#if 0
|
||||
pg_data_t **pgdata_list = pgdat_list;
|
||||
void *high_memory = NULL;
|
||||
|
||||
@@ -28,17 +42,40 @@ static int __init print_node_setup(void)
|
||||
{
|
||||
printk(KERN_INFO "%p\n", (void *)pgdata_list[i]);
|
||||
}
|
||||
|
||||
for_each_online_pgdat(pgdat)
|
||||
{
|
||||
high_memory = max_t(void *, high_memory, __va(pgdat_end_pfn(pgdat) << PAGE_SHIFT));
|
||||
printk(KERN_INFO "%p\n", high_memory);
|
||||
printk(KERN_INFO "");
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_NEED_MULTIPLE_NODES
|
||||
struct pglist_data *pgdata = &contig_page_data;
|
||||
printk("%d\n", pgdata->node_id);
|
||||
#else
|
||||
printk("NODES_SHIFT = %d, MAX_NUMNODES = %d\n", NODES_SHIFT, MAX_NUMNODES);
|
||||
for(i = 0; i < MAX_NUMNODES; i++)
|
||||
{
|
||||
node = NODE_DATA(i);
|
||||
if(node != NULL)
|
||||
{
|
||||
print_node(node);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void __exit print_node_cleanup(void)
|
||||
{
|
||||
printk(KERN_INFO"Goodbye!\n");
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/vermagic.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
MODULE_INFO(vermagic, VERMAGIC_STRING);
|
||||
|
||||
__visible struct module __this_module
|
||||
__attribute__((section(".gnu.linkonce.this_module"))) = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.init = init_module,
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
.exit = cleanup_module,
|
||||
#endif
|
||||
.arch = MODULE_ARCH_INIT,
|
||||
};
|
||||
|
||||
static const struct modversion_info ____versions[]
|
||||
__used
|
||||
__attribute__((section("__versions"))) = {
|
||||
{ 0xcd71858e, __VMLINUX_SYMBOL_STR(module_layout) },
|
||||
{ 0xe462e7ca, __VMLINUX_SYMBOL_STR(node_data) },
|
||||
{ 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) },
|
||||
{ 0xbdfb6dbb, __VMLINUX_SYMBOL_STR(__fentry__) },
|
||||
};
|
||||
|
||||
static const char __module_depends[]
|
||||
__used
|
||||
__attribute__((section(".modinfo"))) =
|
||||
"depends=";
|
||||
|
||||
|
||||
MODULE_INFO(srcversion, "AC263D03D5E0B3B80B01AB6");
|
||||
Reference in New Issue
Block a user