lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFCv3][PATCH 1/3] create slow_virt_to_phys()
    On 01/09/2013 10:59 AM, Dave Hansen wrote:
    > + switch (level) {
    > + case PG_LEVEL_4K:
    > + psize = PAGE_SIZE;
    > + pmask = PAGE_MASK;
    > + break;
    > + case PG_LEVEL_2M:
    > + psize = PMD_PAGE_SIZE;
    > + pmask = PMD_PAGE_MASK;
    > + break;
    > +#ifdef CONFIG_X86_64
    > + case PG_LEVEL_1G:
    > + psize = PUD_PAGE_SIZE;
    > + pmask = PUD_PAGE_MASK;
    > + break;
    > +#endif
    > + default:
    > + BUG();
    > + }

    I object to this switch statement. If we are going to create new
    primitives, let's create a primitive that embody this and put it in
    pgtypes_types.h, especially since it is simply an algorithmic operation:

    static inline unsigned long page_level_size(int level)
    {
    return (PAGE_SIZE/PGDIR_SIZE) << (PGDIR_SHIFT*level);
    }
    static inline unsigned long page_level_shift(int level)
    {
    return (PAGE_SHIFT-PGDIR_SHIFT) + (PGDIR_SHIFT*level);
    }

    --
    H. Peter Anvin, Intel Open Source Technology Center
    I work for Intel. I don't speak on their behalf.



    \
     
     \ /
      Last update: 2013-01-15 21:23    [W:2.358 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site