11#include <sys/kassert.h>
12#include <sys/kdebug.h>
14#include <sys/thread.h>
15#include <sys/spinlock.h>
16#include <sys/waitchannel.h>
void Sched_SetWaiting(Thread *thr)
void Thread_Release(Thread *thr)
void Sched_SetRunnable(Thread *thr)
#define TAILQ_FOREACH_SAFE(var, head, field, tvar)
#define LIST_REMOVE(elm, field)
#define TAILQ_INSERT_TAIL(head, elm, field)
#define LIST_HEAD_INITIALIZER(head)
#define TAILQ_FIRST(head)
#define TAILQ_REMOVE(head, elm, field)
#define TAILQ_EMPTY(head)
#define LIST_INSERT_HEAD(head, elm, field)
#define LIST_HEAD(name, type)
void Spinlock_Unlock(Spinlock *lock) __UNLOCK_EX(*lock)
#define SPINLOCK_TYPE_NORMAL
void Spinlock_Destroy(Spinlock *lock)
void Spinlock_Lock(Spinlock *lock) __LOCK_EX(*lock)
void Spinlock_Init(Spinlock *lock, const char *name, uint64_t type)
char * strncpy(char *to, const char *from, size_t len)
char name[WAITCHANNEL_NAMELEN]
void WaitChannel_Init(WaitChannel *wchan, const char *name)
void WaitChannel_WakeAll(WaitChannel *wchan)
void WaitChannel_Wake(WaitChannel *wchan)
void WaitChannel_Lock(WaitChannel *wchan)
void WaitChannel_Sleep(WaitChannel *wchan)
void WaitChannel_Destroy(WaitChannel *wchan)
#define WAITCHANNEL_NAMELEN
void WaitChannel_EarlyInit()