PERFORCE change 229572 for review

Robert Watson rwatson at FreeBSD.org
Mon Jun 10 20:49:04 UTC 2013


http://p4web.freebsd.org/@@229572?ac=10

Change 229572 by rwatson at rwatson_cinnamon on 2013/06/10 20:48:16

	We can't instrument vm_fault() with TESLA (currently) as it is used
	before calls to malloc(9) are safe.  Instead instrument trap_pfault(),
	although, actually, comment that out as well as it's static and
	therefore can't be instrumented (at least that I can figure out).

Affected files ...

.. //depot/projects/ctsrd/tesla/src/sys/sys/tesla-kernel.h#2 edit
.. //depot/projects/ctsrd/tesla/src/sys/ufs/ffs/ffs_vnops.c#9 edit

Differences ...

==== //depot/projects/ctsrd/tesla/src/sys/sys/tesla-kernel.h#2 (text+ko) ====

@@ -38,14 +38,25 @@
 /*
  * Un-protyped functions that we care about.
  *
- * XXXRW: Solution is actually to prototype them properly.
+ * XXXRW: Solution is actually to prototype them properly.  Some don't have
+ * consistent prototypes across architectures.
  */
 extern void syscall(void);
+extern void trap_pfault(struct trapframe *, int, vm_offset_t);
 
 /*
  * Convenient assertion wrappers for various scopes.
  */
 #define	TESLA_SYSCALL(x)	TESLA_WITHIN(syscall, x)
-#define	TESLA_VM_FAULT(x)	TESLA_WITHIN(vm_fault, x)
+
+/*
+ * XXXRW: Not all architectures have a trap_pfault() function.  Can't use
+ * vm_fault() as it is used in non-trap contexts -- e.g., PMAP initialisation.
+ */
+#if 0
+#define	TESLA_PAGE_FAULT(x)	TESLA_WITHIN(trap_pfault, x)
+#else
+#define	TESLA_PAGE_FAULT(x)
+#endif
 
 #endif /* _SYS_TESLA_KERNEL_H_ */

==== //depot/projects/ctsrd/tesla/src/sys/ufs/ffs/ffs_vnops.c#9 (text+ko) ====

@@ -440,8 +440,8 @@
 	vp = ap->a_vp;
 	TESLA_SYSCALL(previously(mac_vnode_check_read(ANY(ptr), ANY(ptr), vp)
 	    == 0));
-	TESLA_VM_FAULT(previously(mac_vnode_check_read(ANY(ptr), ANY(ptr), vp)
-	    == 0));
+	TESLA_PAGE_FAULT(previously(mac_vnode_check_read(ANY(ptr), ANY(ptr),
+	    vp) == 0));
 
 	uio = ap->a_uio;
 	ioflag = ap->a_ioflag;
@@ -666,7 +666,7 @@
 	vp = ap->a_vp;
 	TESLA_SYSCALL(previously(mac_vnode_check_write(ANY(ptr), ANY(ptr), vp)
 	    == 0));
-	TESLA_VM_FAULT(previously(mac_vnode_check_WRITE(ANY(ptr), ANY(ptr),
+	TESLA_PAGE_FAULT(previously(mac_vnode_check_WRITE(ANY(ptr), ANY(ptr),
 	    vp) == 0));
 
 	uio = ap->a_uio;


More information about the p4-projects mailing list