Initializers for struct poke_tracker
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 27 Feb 2015 22:14:30 +0000 (17:14 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sun, 1 Mar 2015 14:37:08 +0000 (09:37 -0500)
kern/include/atomic.h
kern/src/schedule.c

index 5a8d351..f5dcd6e 100644 (file)
@@ -157,6 +157,14 @@ struct poke_tracker {
 };
 void poke(struct poke_tracker *tracker, void *arg);
 
+static inline void poke_init(struct poke_tracker *tracker, void (*func)(void*))
+{
+       tracker->need_to_run = 0;
+       tracker->run_in_progress = 0;
+       tracker->func = func;
+}
+#define POKE_INITIALIZER(f) {.func = f}
+
 /* Arch-specific implementations / declarations go here */
 #include <arch/atomic.h>
 
index 5edd58b..1589218 100644 (file)
@@ -68,7 +68,7 @@ static uint32_t get_cores_needed(struct proc *p);
  *
  * As the ksched gets smarter, we'll probably embedd this poker in a bigger
  * struct that can handle the posting of different types of work. */
-struct poke_tracker ksched_poker = {0, 0, __run_mcp_ksched};
+struct poke_tracker ksched_poker = POKE_INITIALIZER(__run_mcp_ksched);
 
 /* this 'big ksched lock' protects a bunch of things, which i may make fine
  * grained: */