local_irq_save(flags);
return flags;
}
+EXPORT_SYMBOL(__local_irq_save);
void __local_irq_restore(unsigned long flags)
{
local_irq_restore(flags);
}
+EXPORT_SYMBOL(__local_irq_restore);
unsigned long __local_save_flags(void)
{
local_save_flags(flags);
return flags;
}
+EXPORT_SYMBOL(__local_save_flags);
void __local_irq_disable(void)
{
local_irq_disable();
}
+EXPORT_SYMBOL(__local_irq_disable);
void __local_irq_enable(void)
{
local_irq_enable();
}
+EXPORT_SYMBOL(__local_irq_enable);
}
}
}
+EXPORT_SYMBOL(schedule);
struct thread* create_thread(char *name, void (*function)(void *), void *data)
{
local_irq_restore(flags);
return thread;
}
+EXPORT_SYMBOL(create_thread);
#ifdef HAVE_LIBC
static struct _reent callback_reent;
#endif
return _reent;
}
+EXPORT_SYMBOL(__getreent);
#endif
void exit_thread(void)
printk("schedule() returned! Trying again\n");
}
}
+EXPORT_SYMBOL(exit_thread);
void block(struct thread *thread)
{
thread->wakeup_time = 0LL;
clear_runnable(thread);
}
+EXPORT_SYMBOL(block);
void msleep(uint32_t millisecs)
{
clear_runnable(thread);
schedule();
}
+EXPORT_SYMBOL(msleep);
void wake(struct thread *thread)
{
thread->wakeup_time = 0LL;
set_runnable(thread);
}
+EXPORT_SYMBOL(wake);
void idle_thread_fn(void *unused)
{