From: Jeff D. <jd...@ad...> - 2007-12-14 19:35:04
|
On Fri, Dec 14, 2007 at 09:31:27AM -0800, John Reiser wrote: > In arch/um/kernel/mem.c, mem_init calls map_cb twice: > once directly and once indirectly via initial_thread_cb. Why? > > ----- > void mem_init(void) > { > /* clear the zero-page */ > memset((void *) empty_zero_page, 0, PAGE_SIZE); > > /* Map in the area just after the brk now that kmalloc is about > * to be turned on. > */ > brk_end = (unsigned long) UML_ROUND_UP(sbrk(0)); > map_cb(NULL); > initial_thread_cb(map_cb, NULL); > ----- It's a bug. That's left over from the tt mode days, when the kernel ran in the same address spaces as its processes and there was a separate thread ptracing everything. The tracing thread address space needed to be kept in sync with the others, and this was one part of that. Jeff -- Work email - jdike at linux dot intel dot com |