RE: about L4 kernel address mapping..got messed.
Jan Stoess <[email protected]> Fri, 25 Jul 2008 10:56:40 +0200
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Bob, The word kernel area in L4 is a little bit overloaded. If you’re referring to all virtual addresses the kernel uses for itself, it’s simply USER_AREA_END (0xC0000000 on x86-x32). The L4 kernel area itself is partitioned, however, into a tcb area, a IPC string copy area, a small space area (if enabled), a physical memory remap area, some other regions, and finally the kernel code and data area. The macros in config.h and the space_t kernel object refer to that partitioning. In particular, KERNEL_AREA_START C KERNEL_AREA_END refers to the “actual” kernel space, where kernel code and data live in, and which is initialized via init_kernel_mappings(). Other kernel regions belong to the kernel virtual address space but are backed on demand with kernel memory (e.g., the tcb area, readmem area) or user provided memory (e.g., the IPC string copy area). Regards, -Jan -- Jan Stoess System Architecture Group University of Karlsruhe Phone: +49 (721) 608-4056 Fax: +49 (721) 608-7664 eMail: <mailto:[email protected]> [email protected] From: [email protected] [mailto:[email protected]] On Behalf Of Bob Sent: Friday, July 25, 2008 10:42 AM To: [email protected] Subject: about L4 kernel address mapping..got messed. Hi, all I got a mess at the L4 kernel address mapping I read the "space.h",found a space's define is: union { ia32_pgent_t pdir[1024 * (CONFIG_SMP_MAX_CPUS + 1)]; struct { ia32_pgent_t user[USER_AREA_END >> IA32_PAGEDIR_BITS]; ia32_pgent_t small[SMALLSPACE_AREA_SIZE >> IA32_PAGEDIR_BITS]; ia32_pgent_t copy_area[COPY_AREA_COUNT][COPY_AREA_SIZE >> IA32_PAGEDIR_BITS]; ia32_pgent_t readmem_area; // abuse some pagedir entries, make sure the valid bit is never set fpage_t kip_area; fpage_t utcb_area; word_t thread_count; // afterwards, we have MYUTCB, APIC, TCBs, Kernel code word_t __pad [((0U - THREAD_COUNT_INFO) >> IA32_PAGEDIR_BITS) - 1]; } x [CONFIG_SMP_MAX_CPUS] __attribute__((aligned(IA32_PAGE_SIZE))); }; Then what's the kernel area? I think is word_t __pag[] area. And what's these area inited in file "space.cc" , it also called kernel_mapping. the funtions is: void SECTION(".init.memory") space_t::init_kernel_mappings(){} Is it the same as the area form KERNEL_AREA_START to KERNEL_AREA_END! Thanks! Bob . _____ 22元超值饭面,8.5折纯珍比萨,必胜宅急送 <http://popme.163.com/link/004584_0708_6957.html> 网上点餐优惠多
smime.p7s
(application/x-pkcs7-signature, 3.1 KB) - not displayed