static void * stack_allocate(size_t size)
{
- return malloc(size);
+ return userMalloc(size);
}
static void stack_free(void *stack)
{
- free(stack);
+ userFree(stack);
}
Thread * thread_current(void)
}
}
+void * Thread::operator new(size_t size) {
+ return userMalloc(size);
+}
+
+void Thread::operator delete(void *ptr) {
+ userFree(ptr);
+}
+
Thread::Thread(thrd_t *t, void (*func)(), void *a) {
int ret;
Thread *curr, *next;
curr = thread_current();
- model->check_current_action();
if (curr) {
- if (curr->get_state() == THREAD_READY)
+ if (curr->get_state() == THREAD_READY) {
+ model->check_current_action();
model->scheduler->add_thread(curr);
- else if (curr->get_state() == THREAD_RUNNING)
+ } else if (curr->get_state() == THREAD_RUNNING)
/* Stopped while running; i.e., completed */
curr->complete();
else