Re: [patch 2/2] [PATCH] mm: Save soft-dirty bits on file pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 31 Jul 2013 00:41:56 +0400 Cyrill Gorcunov <gorcunov@xxxxxxxxx> wrote:

> +#define pte_to_pgoff(pte)						\
> +	((((pte).pte_low >> (PTE_FILE_SHIFT1))				\
> +	  & ((1U << PTE_FILE_BITS1) - 1)))				\
> +	+ ((((pte).pte_low >> (PTE_FILE_SHIFT2))			\
> +	    & ((1U << PTE_FILE_BITS2) - 1))				\
> +	   << (PTE_FILE_BITS1))						\
> +	+ ((((pte).pte_low >> (PTE_FILE_SHIFT3))			\
> +	    & ((1U << PTE_FILE_BITS3) - 1))				\
> +	   << (PTE_FILE_BITS1 + PTE_FILE_BITS2))			\
> +	+ ((((pte).pte_low >> (PTE_FILE_SHIFT4)))			\
> +	    << (PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3))
> +
> +#define pgoff_to_pte(off)						\
> +	((pte_t) { .pte_low =						\
> +	 ((((off)) & ((1U << PTE_FILE_BITS1) - 1)) << PTE_FILE_SHIFT1)	\
> +	 + ((((off) >> PTE_FILE_BITS1)					\
> +	     & ((1U << PTE_FILE_BITS2) - 1))				\
> +	    << PTE_FILE_SHIFT2)						\
> +	 + ((((off) >> (PTE_FILE_BITS1 + PTE_FILE_BITS2))		\
> +	     & ((1U << PTE_FILE_BITS3) - 1))				\
> +	    << PTE_FILE_SHIFT3)						\
> +	 + ((((off) >>							\
> +	      (PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3)))	\
> +	    << PTE_FILE_SHIFT4)						\
> +	 + _PAGE_FILE })

Good god.

I wonder if these can be turned into out-of-line functions in some form
which humans can understand.

or

#define pte_to_pgoff(pte)
	frob(pte, PTE_FILE_SHIFT1, PTE_FILE_BITS1) +
	frob(PTE_FILE_SHIFT2, PTE_FILE_BITS2) +
	frob(PTE_FILE_SHIFT3, PTE_FILE_BITS3) +
	frob(PTE_FILE_SHIFT4, PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3)


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]