linux/mm/internal.h
<<
>>
Prefs
   1/* internal.h: mm/ internal definitions
   2 *
   3 * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public License
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the License, or (at your option) any later version.
  10 */
  11#ifndef __MM_INTERNAL_H
  12#define __MM_INTERNAL_H
  13
  14#include <linux/mm.h>
  15
  16static inline void set_page_count(struct page *page, int v)
  17{
  18        atomic_set(&page->_count, v);
  19}
  20
  21/*
  22 * Turn a non-refcounted page (->_count == 0) into refcounted with
  23 * a count of one.
  24 */
  25static inline void set_page_refcounted(struct page *page)
  26{
  27        VM_BUG_ON(PageTail(page));
  28        VM_BUG_ON(atomic_read(&page->_count));
  29        set_page_count(page, 1);
  30}
  31
  32static inline void __put_page(struct page *page)
  33{
  34        atomic_dec(&page->_count);
  35}
  36
  37extern void __free_pages_bootmem(struct page *page, unsigned int order);
  38
  39/*
  40 * function for dealing with page's order in buddy system.
  41 * zone->lock is already acquired when we use these.
  42 * So, we don't need atomic page->flags operations here.
  43 */
  44static inline unsigned long page_order(struct page *page)
  45{
  46        VM_BUG_ON(!PageBuddy(page));
  47        return page_private(page);
  48}
  49
  50/*
  51 * FLATMEM and DISCONTIGMEM configurations use alloc_bootmem_node,
  52 * so all functions starting at paging_init should be marked __init
  53 * in those cases. SPARSEMEM, however, allows for memory hotplug,
  54 * and alloc_bootmem_node is not used.
  55 */
  56#ifdef CONFIG_SPARSEMEM
  57#define __paginginit __meminit
  58#else
  59#define __paginginit __init
  60#endif
  61
  62#endif
  63
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.