OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [pageblock-flags.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Macros for manipulating and testing flags related to a
3
 * pageblock_nr_pages number of pages.
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation version 2 of the License
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program; if not, write to the Free Software
16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
 *
18
 * Copyright (C) IBM Corporation, 2006
19
 *
20
 * Original author, Mel Gorman
21
 * Major cleanups and reduction of bit operations, Andy Whitcroft
22
 */
23
#ifndef PAGEBLOCK_FLAGS_H
24
#define PAGEBLOCK_FLAGS_H
25
 
26
#include <linux/types.h>
27
 
28
/* Macro to aid the definition of ranges of bits */
29
#define PB_range(name, required_bits) \
30
        name, name ## _end = (name + required_bits) - 1
31
 
32
/* Bit indices that affect a whole block of pages */
33
enum pageblock_bits {
34
        PB_range(PB_migrate, 3), /* 3 bits required for migrate types */
35
        NR_PAGEBLOCK_BITS
36
};
37
 
38
#ifdef CONFIG_HUGETLB_PAGE
39
 
40
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
41
 
42
/* Huge page sizes are variable */
43
extern int pageblock_order;
44
 
45
#else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
46
 
47
/* Huge pages are a constant size */
48
#define pageblock_order         HUGETLB_PAGE_ORDER
49
 
50
#endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
51
 
52
#else /* CONFIG_HUGETLB_PAGE */
53
 
54
/* If huge pages are not used, group by MAX_ORDER_NR_PAGES */
55
#define pageblock_order         (MAX_ORDER-1)
56
 
57
#endif /* CONFIG_HUGETLB_PAGE */
58
 
59
#define pageblock_nr_pages      (1UL << pageblock_order)
60
 
61
/* Forward declaration */
62
struct page;
63
 
64
/* Declarations for getting and setting flags. See mm/page_alloc.c */
65
unsigned long get_pageblock_flags_group(struct page *page,
66
                                        int start_bitidx, int end_bitidx);
67
void set_pageblock_flags_group(struct page *page, unsigned long flags,
68
                                        int start_bitidx, int end_bitidx);
69
 
70
#define get_pageblock_flags(page) \
71
                        get_pageblock_flags_group(page, 0, NR_PAGEBLOCK_BITS-1)
72
#define set_pageblock_flags(page) \
73
                        set_pageblock_flags_group(page, 0, NR_PAGEBLOCK_BITS-1)
74
 
75
#endif  /* PAGEBLOCK_FLAGS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.