Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Aug 2014 16:08:07 +0000 (UTC)
From:      "Cherry G. Mathew" <cherry@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r270138 - projects/amd64_xen_pv/sys/amd64/include/xen
Message-ID:  <201408181608.s7IG8748054522@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cherry
Date: Mon Aug 18 16:08:07 2014
New Revision: 270138
URL: http://svnweb.freebsd.org/changeset/base/270138

Log:
  Add a "Compare and set" style support function.
  
  Approved by:	gibbs (implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h

Modified: projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h	Mon Aug 18 16:06:04 2014	(r270137)
+++ projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h	Mon Aug 18 16:08:07 2014	(r270138)
@@ -226,10 +226,12 @@ do { 								\
 
 #define	pde_store(pdep, pde) pte_store(pdep, pde)
 
-static inline pt_entry_t pte_load_store(pt_entry_t *ptep, pt_entry_t npte)
+static __inline pt_entry_t
+pte_load_store(pt_entry_t *ptep, pt_entry_t npte)
 {
 	pt_entry_t pte;
 
+	/* XXX: review for SMP */
 	pte = *ptep;
 	
 	pte_store(ptep, npte);
@@ -245,6 +247,22 @@ static inline pt_entry_t pte_load_store(
 
 #define pte_load_clear(ptep) pte_load_store(ptep, 0);
 
+static inline bool
+pte_cmp_store(pt_entry_t *ptep, pt_entry_t oldpte, pt_entry_t newpte)
+{
+	/* XXX: locking for SMP */
+	pt_entry_t tpte;
+
+	tpte = *ptep;
+
+	if (*ptep == oldpte) {
+		pte_store(ptep, newpte);
+		return true;
+	}
+	else {
+		return false;
+	}
+}
 
 static __inline vm_paddr_t
 xpmap_mtop(vm_paddr_t mpa)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408181608.s7IG8748054522>