<内核3.10.x>
#include <linux/highmem.h>
#include <linux/mm.h>
static void acct_arg_size(struct linux_binprm *bprm, unsigned long pages)
{
struct mm_struct *mm = current->mm;
long diff = (long)(pages - bprm->vma_pages);
if (!mm || !diff)
return;
bprm->vma_pages = pages;
add_mm_counter(mm, MM_ANONPAGES, diff);
}
static void put_arg_page(struct page *page)
{
put_page(page);
}
static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
int write)
{
struct page *page;
int ret;
ret = get_user_pages(current, bprm->mm, pos,
1, write, 1, &page, NULL);
#include <linux/highmem.h>
#include <linux/mm.h>
static void acct_arg_size(struct linux_binprm *bprm, unsigned long pages)
{
struct mm_struct *mm = current->mm;
long diff = (long)(pages - bprm->vma_pages);
if (!mm || !diff)
return;
bprm->vma_pages = pages;
add_mm_counter(mm, MM_ANONPAGES, diff);
}
static void put_arg_page(struct page *page)
{
put_page(page);
}
static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
int write)
{
struct page *page;
int ret;
ret = get_user_pages(current, bprm->mm, pos,
1, write, 1, &page, NULL);