Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
crash_dump.c
Go to the documentation of this file.
1 /*
2  * crash_dump.c - Memory preserving reboot related code.
3  *
4  * Created by: Hariprasad Nellitheertha ([email protected])
5  * Copyright (C) IBM Corporation, 2004. All rights reserved
6  */
7 #include <linux/errno.h>
8 #include <linux/crash_dump.h>
9 #include <linux/io.h>
10 #include <asm/uaccess.h>
11 
25 ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
26  size_t csize, unsigned long offset, int userbuf)
27 {
28  void *vaddr;
29 
30  if (!csize)
31  return 0;
32 
33  vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
34 
35  if (userbuf) {
36  if (copy_to_user(buf, (vaddr + offset), csize)) {
37  iounmap(vaddr);
38  return -EFAULT;
39  }
40  } else
41  memcpy(buf, (vaddr + offset), csize);
42 
43  iounmap(vaddr);
44  return csize;
45 }