bug fixes
[IRC.git] / Robust / src / Runtime / affinity.c
index 8ea239d318125b537493fd323d6671a629a77084..c5d1891c7c0f47b158ff350ea5576740e62fd3c5 100644 (file)
@@ -6,28 +6,18 @@
 #include <sched.h>
 #include <stdarg.h>
 #include <stdlib.h>
-#include <runtime.h>
+#include "runtime.h"
+#include "mlp_lock.h"
 
 static volatile unsigned int corecount=0;
 
-
-static inline int atomicinc(volatile unsigned int *lock) {
-  int retval=1;
-  __asm__ __volatile__("lock; xadd %0,%1"
-                       : "=r"(retval)
-                       : "m"(*lock), "0"(retval)
-                       : "memory");
-  return retval;
-}
-
-
 void set_affinity() {
   int err;
   cpu_set_t cpumask;
 
   CPU_ZERO(&cpumask);
 
-  int ourcount=atomicinc(&corecount);
+  int ourcount=atomicincandread(&corecount);
   ourcount=ourcount&7;
   int newvalue=ourcount>>1;
   if (ourcount&1) {