之前的swtch()是在内核中进行切换的,这次的切换实在用户态。
实现如下:
.text
/* Switch from current_thread to next_thread. Make next_thread
* the current_thread, and set next_thread to 0.
* Use eax as a temporary register; it is caller saved.
*/
.globl thread_switch
thread_switch:
pushal
movl current_thread,%eax
movl %esp,(%eax)
movl next_thread,%eax
movl %eax,current_thread
movl (%eax),%esp
popal
/* YOUR CODE HERE */
ret /* pop return address from stack */