sysprof r435 - in trunk: . module



Author: ssp
Date: Sun Sep 14 20:07:08 2008
New Revision: 435
URL: http://svn.gnome.org/viewvc/sysprof?rev=435&view=rev

Log:
Sun Sep 14 16:04:17 2008  SÃren Sandmann  <sandmann redhat com>

	* sysprof/module/sysprof-module.c: Update to work with new
	vm_operations interface from 2.6.23. Patch from Chris Wilson.




Modified:
   trunk/ChangeLog
   trunk/module/sysprof-module.c

Modified: trunk/module/sysprof-module.c
==============================================================================
--- trunk/module/sysprof-module.c	(original)
+++ trunk/module/sysprof-module.c	Sun Sep 14 20:07:08 2008
@@ -459,6 +459,29 @@
 	return retval;
 }
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
+static int
+sysprof_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+{
+	unsigned long area_start;
+	unsigned long virt;
+
+#if 0
+	printk (KERN_ALERT "fault called: %p (offset: %d) area: %p\n", vmf->virtual_address, addr - vma->vm_start, area);
+#endif
+
+	area_start = (unsigned long)area;
+
+	virt = area_start + ((unsigned long)vmf->virtual_address - vma->vm_start);
+	if (virt > area_start + sizeof (SysprofMmapArea))
+		return VM_FAULT_SIGBUS;
+
+	vmf->page = vmalloc_to_page ((void *)virt);
+	get_page (vmf->page);
+
+	return 0;
+}
+#else
 static struct page *
 sysprof_nopage(struct vm_area_struct *vma, unsigned long addr, int *type)
 {
@@ -486,12 +509,17 @@
 
 	return page_ptr;
 }
+#endif
 
 static int
 sysprof_mmap(struct file *filp, struct vm_area_struct *vma)
 {
 	static struct vm_operations_struct ops = {
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
+		.fault = sysprof_fault,
+#else
 		.nopage = sysprof_nopage,
+#endif
 	};
 	
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]