Module Name:    src
Committed By:   matt
Date:           Wed Apr  8 18:10:44 UTC 2015

Modified Files:
        src/sys/arch/arm/include: cpu.h

Log Message:
Add basic support for __HAVE_PREEMPTION.
Use atomic ops for ci_astpending if __HAVE_PREEMPTION is defined.


To generate a diff of this commit:
cvs rdiff -u -r1.86 -r1.87 src/sys/arch/arm/include/cpu.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/include/cpu.h
diff -u src/sys/arch/arm/include/cpu.h:1.86 src/sys/arch/arm/include/cpu.h:1.87
--- src/sys/arch/arm/include/cpu.h:1.86	Wed Apr  8 07:29:44 2015
+++ src/sys/arch/arm/include/cpu.h	Wed Apr  8 18:10:44 2015
@@ -137,6 +137,7 @@ static inline void cpu_dosoftints(void);
 #ifdef _KMEMUSER
 #include <sys/intr.h>
 #endif
+#include <sys/atomic.h>
 #include <sys/cpu_data.h>
 #include <sys/device_if.h>
 #include <sys/evcnt.h>
@@ -150,7 +151,7 @@ struct cpu_info {
 	uint32_t ci_arm_cpurev;		/* CPU revision */
 	uint32_t ci_ctrl;		/* The CPU control register */
 	int ci_cpl;			/* current processor level (spl) */
-	int ci_astpending;		/* */
+	volatile int ci_astpending;	/* */
 	int ci_want_resched;		/* resched() was called */
 	int ci_intr_depth;		/* */
 	struct cpu_softc *ci_softc;	/* platform softc */
@@ -276,7 +277,12 @@ void	cpu_proc_fork(struct proc *, struct
  * Scheduling glue
  */
 
-#define setsoftast()			(curcpu()->ci_astpending = 1)
+#ifdef __HAVE_PREEMPTION
+#define setsoftast()		atomic_or_uint(&curcpu()->ci_astpending, \
+				    __BIT(0))
+#else
+#define setsoftast()		(curcpu()->ci_astpending = __BIT(0))
+#endif
 
 /*
  * Notify the current process (p) that it has a signal pending,
@@ -292,6 +298,9 @@ void	cpu_proc_fork(struct proc *, struct
  */
 #define	cpu_need_proftick(l)	((l)->l_pflag |= LP_OWEUPC, setsoftast())
 
+/* for preeemption. */
+void	cpu_set_curpri(int);
+
 /*
  * We've already preallocated the stack for the idlelwps for additional CPUs.  
  * This hook allows to return them.

Reply via email to