Commit 50e981f7 authored by Luca Barbieri's avatar Luca Barbieri Committed by Vojtech Pavlik

[PATCH] Make rmap.c alloc/free actually inline

GCC can only inline functions when the function definition comes before
its use.
parent 55cc5753
......@@ -52,9 +52,45 @@ struct pte_chain {
};
static kmem_cache_t *pte_chain_cache;
static inline struct pte_chain * pte_chain_alloc(void);
static inline void pte_chain_free(struct pte_chain *, struct pte_chain *,
struct page *);
/**
* pte_chain_alloc - allocate a pte_chain struct
*
* Returns a pointer to a fresh pte_chain structure. Allocates new
* pte_chain structures as required.
* Caller needs to hold the page's pte_chain_lock.
*/
static inline struct pte_chain *pte_chain_alloc(void)
{
return kmem_cache_alloc(pte_chain_cache, GFP_ATOMIC);
}
/**
* pte_chain_free - free pte_chain structure
* @pte_chain: pte_chain struct to free
* @prev_pte_chain: previous pte_chain on the list (may be NULL)
* @page: page this pte_chain hangs off (may be NULL)
*
* This function unlinks pte_chain from the singly linked list it
* may be on and adds the pte_chain to the free list. May also be
* called for new pte_chain structures which aren't on any list yet.
* Caller needs to hold the pte_chain_lock if the page is non-NULL.
*/
static inline void pte_chain_free(struct pte_chain * pte_chain,
struct pte_chain * prev_pte_chain, struct page * page)
{
if (prev_pte_chain)
prev_pte_chain->next = pte_chain->next;
else if (page)
page->pte.chain = pte_chain->next;
kmem_cache_free(pte_chain_cache, pte_chain);
}
/**
** VM stuff below this comment
**/
/**
* page_referenced - test if the page was referenced
......@@ -358,41 +394,6 @@ int try_to_unmap(struct page * page)
** functions.
**/
/**
* pte_chain_free - free pte_chain structure
* @pte_chain: pte_chain struct to free
* @prev_pte_chain: previous pte_chain on the list (may be NULL)
* @page: page this pte_chain hangs off (may be NULL)
*
* This function unlinks pte_chain from the singly linked list it
* may be on and adds the pte_chain to the free list. May also be
* called for new pte_chain structures which aren't on any list yet.
* Caller needs to hold the pte_chain_lock if the page is non-NULL.
*/
static inline void pte_chain_free(struct pte_chain * pte_chain,
struct pte_chain * prev_pte_chain, struct page * page)
{
if (prev_pte_chain)
prev_pte_chain->next = pte_chain->next;
else if (page)
page->pte.chain = pte_chain->next;
kmem_cache_free(pte_chain_cache, pte_chain);
}
/**
* pte_chain_alloc - allocate a pte_chain struct
*
* Returns a pointer to a fresh pte_chain structure. Allocates new
* pte_chain structures as required.
* Caller needs to hold the page's pte_chain_lock.
*/
static inline struct pte_chain *pte_chain_alloc(void)
{
return kmem_cache_alloc(pte_chain_cache, GFP_ATOMIC);
}
void __init pte_chain_init(void)
{
pte_chain_cache = kmem_cache_create( "pte_chain",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment