As discussed somewhere some time ago, I think PAGE_SIZE and other constants should be provided via "sysconf(9)".
If you don't like indirection, you'd use pre-link binaries (== static kernel). On Sat, Feb 18, 2012 at 9:14 AM, Julio Merino <j...@julipedia.org> wrote: > On 2/17/12 7:11 PM, Julio Merino wrote: >> >> On 2/17/12 6:42 PM, Matt Thomas wrote: >>> >>> >>> On Feb 17, 2012, at 3:11 PM, Julio Merino wrote: >>> >>>> On 2/17/12 6:06 PM, Matt Thomas wrote: >>>>> >>>>> >>>>> On Feb 17, 2012, at 3:02 PM, Julio Merino wrote: >>>>>> >>>>>> Aha, I see. Does it make sense to keep the test after renaming >>>>>> PAGE_SIZE to uvmexp.pagesize? It's a public symbol after all and we >>>>>> really should have tests for these, I think. >>>>>> >>>>>> Do we need to go over the broken modules one by one and replace >>>>>> PAGE_SIZE with uvmexp.pagesize? (I'm expecting this won't be as >>>>>> easy as it sounds due to preprocessor conditionals et. al.) >>>>> >>>>> >>>>> They should still use PAGE_SIZE which should evaluate to >>>>> uvmexp.pagesize >>>> >>>> >>>> Now you lost me. You started saying that PAGE_SIZE is explicitly not >>>> available, and now you say that the modules have to use PAGE_SIZE? >>>> >>>> The problem is that PAGE_SIZE is NOT being evaluated to >>>> uvmexp.pagesize as you mention. It's being evaluated to >>>> uvmexp_pagesize, which does not exist and thus causes the module to >>>> not load. And that's what this test is all about. >>> >>> >>> Hmmm. I think uvmexp_pagesize, etal is there to avoid needed uvmexp >>> defined. >>> >>> The problem was: >>> >>> --- uvm_param.h 29 Nov 2011 07:43:54 -0000 1.26 >>> +++ uvm_param.h 17 Feb 2012 23:40:50 -0000 >>> @@ -134,7 +134,7 @@ >>> * If MIN_PAGE_SIZE and MAX_PAGE_SIZE are not equal, then we must use >>> * non-constant PAGE_SIZE, et al for LKMs. >>> */ >>> -#if (MIN_PAGE_SIZE != MAX_PAGE_SIZE)&& defined(_LKM) >>> +#if (MIN_PAGE_SIZE != MAX_PAGE_SIZE)&& (defined(_LKM) || >>> defined(MODULAR)) >>> #undef PAGE_SIZE >>> #undef PAGE_MASK >>> #undef PAGE_SHIFT >> >> >> >> I have applied this patch and rebuilt the affected test module... and it >> still won't load. Wasn't that supposed to be _MODULE instead of MODULAR? > > > Oh, but even doing that change, the module won't load either. PAGE_SIZE > still ends up being defined as uvmexp_pagesize... which I believe is > correct, right? because the size must be represented as a variable... but > that variable is not available in the built kernel.