Date: Fri, 22 Jun 2001 21:06:59 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: jcm@FreeBSD-uk.eu.org (j mckitrick) Cc: freebsd-chat@FreeBSD.ORG Subject: Re: most complex code in BSD? Message-ID: <200106222107.OAA28366@usr06.primenet.com> In-Reply-To: <20010621233210.A37804@dogma.freebsd-uk.eu.org> from "j mckitrick" at Jun 21, 2001 11:32:10 PM
index | next in thread | previous in thread | raw e-mail
> In everyone's opinion, what is the most complex code in the BSD codebase?
> Not including asm (unless there is an especialy exemplary example of
> obfuscated code, but it seems compilers are better at that ;-) what code is
> most likely to turn a newbie's brain to tapioca?
A good candidate for "most magic numbers" is /sys/i386/include/pmap.h:
-----------------------------------------------------------------------------
#ifndef NKPT
#define NKPT 30 /* actual number of kernel page tables *
/
#endif
#ifndef NKPDE
#ifdef SMP
#define NKPDE 254 /* addressable number of page tables/pde
's */
#else
#define NKPDE 255 /* addressable number of page tables/pde
's */
#endif /* SMP */
#endif
/*
* The *PTDI values control the layout of virtual memory
*
* XXX This works for now, but I am not real happy with it, I'll fix it
* right after I fix locore.s and the magic 28K hole
*
* SMP_PRIVPAGES: The per-cpu address space is 0xff80000 -> 0xffbfffff
*/
#define APTDPTDI (NPDEPG-1) /* alt ptd entry that points to APTD */
#ifdef SMP
#define MPPTDI (APTDPTDI-1) /* per cpu ptd entry */
#define KPTDI (MPPTDI-NKPDE) /* start of kernel virtual pde's */
#else
#define KPTDI (APTDPTDI-NKPDE)/* start of kernel virtual pde's */
#endif /* SMP */
#define PTDPTDI (KPTDI-1) /* ptd entry that points to ptd! */
#define UMAXPTDI (PTDPTDI-1) /* ptd entry for user space end */
#define UMAXPTEOFF (NPTEPG) /* pte entry for user space end */
-----------------------------------------------------------------------------
A good runner up for code would be in /sys/i386/i386/machdep.c:
-----------------------------------------------------------------------------
static void
f00f_hack(void *unused) {
struct gate_descriptor *new_idt;
#ifndef SMP
struct region_descriptor r_idt;
#endif
vm_offset_t tmp;
if (!has_f00f_bug)
return;
printf("Intel Pentium detected, installing workaround for F00F bug\n");
r_idt.rd_limit = sizeof(idt0) - 1;
tmp = kmem_alloc(kernel_map, PAGE_SIZE * 2);
if (tmp == 0)
panic("kmem_alloc returned 0");
if (((unsigned int)tmp & (PAGE_SIZE-1)) != 0)
panic("kmem_alloc returned non-page-aligned memory");
/* Put the first seven entries in the lower page */
new_idt = (struct gate_descriptor*)(tmp + PAGE_SIZE - (7*8));
bcopy(idt, new_idt, sizeof(idt0));
r_idt.rd_base = (int)new_idt;
lidt(&r_idt);
idt = new_idt;
if (vm_map_protect(kernel_map, tmp, tmp + PAGE_SIZE,
VM_PROT_READ, FALSE) != KERN_SUCCESS)
panic("vm_map_protect failed");
return;
}
-----------------------------------------------------------------------------
-- Terry
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200106222107.OAA28366>
