-#ifndef HEADER_SWITCH_H
-#define HEADER_SWITCH_H 1
+#ifndef THREADS_SWITCH_H
+#define THREADS_SWITCH_H
#ifndef __ASSEMBLER__
-/* thread_switch()'s stack frame. */
-struct switch_frame
+/* switch_thread()'s stack frame. */
+struct switch_threads_frame
{
uint32_t ebx; /* 0: Saved %ebx. */
uint32_t ebp; /* 4: Saved %ebp. */
/* Switches from CUR, which must be the running thread, to NEXT,
which must also be running thread_switch(), returning CUR in
NEXT's context. */
-struct thread *thread_switch (struct thread *cur, struct thread *next);
+struct thread *switch_threads (struct thread *cur, struct thread *next);
+
+struct switch_entry_frame
+ {
+ void (*eip) (void);
+ };
+
+void switch_entry (void);
+
+/* Pops the CUR and NEXT arguments off the stack, for use in
+ initializing threads. */
+void switch_thunk (void);
#endif
/* Offsets used by switch.S. */
#define SWITCH_CUR 20
#define SWITCH_NEXT 24
-#endif /* switch.h */
+#endif /* threads/switch.h */