30#ifndef __X86_64_SCHED_H__
31#define __X86_64_SCHED_H__
37#define THREAD_STATE_READY 1
38#define THREAD_STATE_BLOCKED 3
39#define THREAD_STATE_SLEEP 4
40#define THREAD_STATE_KILLABLE 5
46#define THREAD_LEVEL_KERNEL (1<<0)
47#define THREAD_LEVEL_USER (1<<1)
48#define THREAD_LEVEL_SUBTHREAD (1<<2)
49#define THREAD_LEVEL_MAIN_THREAD (1<<3)
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
XETime t
Definition main.cpp:53
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_INT64 int64_t
Definition acefiex.h:164
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
void(* entry)(void *)
Definition process.h:91
void(* AuSigHandler)(int signum)
Definition signal.h:75
Definition x86_64_sched.h:118
_au_thread_ * prev
Definition x86_64_sched.h:142
uint8_t priviledge
Definition x86_64_sched.h:131
_au_thread_ * next
Definition x86_64_sched.h:141
uint8_t * fx_state
Definition x86_64_sched.h:124
AuThreadFrame frame
Definition x86_64_sched.h:119
uint64_t quanta
Definition x86_64_sched.h:129
SignalQueue * signalQueue
Definition x86_64_sched.h:133
uint32_t mxcsr
Definition x86_64_sched.h:125
char name[16]
Definition x86_64_sched.h:126
AuUserEntry * uentry
Definition x86_64_sched.h:139
AuSigHandler singals[39]
Definition x86_64_sched.h:132
AuSyscallParam syscall_param
Definition x86_64_sched.h:123
uint8_t state
Definition x86_64_sched.h:127
uint16_t id
Definition x86_64_sched.h:128
uint64_t user_stack
Definition x86_64_sched.h:120
uint64_t endTick
Definition x86_64_sched.h:130
void * returnableSignal
Definition x86_64_sched.h:135
uint8_t pendingSigCount
Definition x86_64_sched.h:134
void * procSlot
Definition x86_64_sched.h:140
Definition x86_64_sched.h:52
uint64_t ss
Definition x86_64_sched.h:53
uint64_t rflags
Definition x86_64_sched.h:55
uint64_t rcx
Definition x86_64_sched.h:61
uint64_t cr3
Definition x86_64_sched.h:78
uint64_t rax
Definition x86_64_sched.h:59
uint64_t r11
Definition x86_64_sched.h:69
uint64_t r8
Definition x86_64_sched.h:66
uint64_t rdi
Definition x86_64_sched.h:64
uint64_t fs
Definition x86_64_sched.h:76
uint64_t r10
Definition x86_64_sched.h:68
uint64_t r12
Definition x86_64_sched.h:70
uint64_t rsi
Definition x86_64_sched.h:63
uint64_t r15
Definition x86_64_sched.h:73
bool user_
Definition x86_64_sched.h:80
uint64_t r13
Definition x86_64_sched.h:71
uint64_t rsp
Definition x86_64_sched.h:54
uint64_t ds
Definition x86_64_sched.h:74
uint64_t r9
Definition x86_64_sched.h:67
uint64_t es
Definition x86_64_sched.h:75
uint64_t rbp
Definition x86_64_sched.h:65
uint64_t rip
Definition x86_64_sched.h:57
uint64_t gs
Definition x86_64_sched.h:77
uint64_t rbx
Definition x86_64_sched.h:60
uint64_t cs
Definition x86_64_sched.h:56
uint64_t rdx
Definition x86_64_sched.h:62
uint64_t kern_esp
Definition x86_64_sched.h:79
uint64_t r14
Definition x86_64_sched.h:72
Definition x86_64_sched.h:111
void * Signal
Definition x86_64_sched.h:112
_signal_queue_ * link
Definition x86_64_sched.h:113
Definition x86_64_sched.h:85
int64_t param3
Definition x86_64_sched.h:88
int64_t param1
Definition x86_64_sched.h:86
int64_t param4
Definition x86_64_sched.h:89
int64_t param5
Definition x86_64_sched.h:90
int64_t param6
Definition x86_64_sched.h:91
int64_t param2
Definition x86_64_sched.h:87
Definition x86_64_sched.h:98
uint64_t ss
Definition x86_64_sched.h:102
char ** argvs
Definition x86_64_sched.h:105
uint64_t stackBase
Definition x86_64_sched.h:106
uint64_t argvaddr
Definition x86_64_sched.h:104
uint64_t entrypoint
Definition x86_64_sched.h:99
uint64_t rsp
Definition x86_64_sched.h:100
int num_args
Definition x86_64_sched.h:103
uint64_t cs
Definition x86_64_sched.h:101
AU_EXTERN AU_EXPORT void AuForceScheduler()
AuForceScheduler – force the scheduler to switch next thread.
Definition x86_64_sched.cpp:621
AU_EXTERN AU_EXPORT void AuUnblockThread(AuThread *t)
Definition x86_64_sched.cpp:541
void AuSchedulerInitAp()
Definition x86_64_sched.cpp:375
struct _frame_ AuThreadFrame
struct _au_thread_ AuThread
void AuSchedulerStart()
AuSchedulerStart – start the scheduler.
Definition x86_64_sched.cpp:485
AU_EXTERN AU_EXPORT bool AuIsSchedulerInitialised()
Definition x86_64_sched.cpp:626
struct _syscall_param_ AuSyscallParam
AU_EXTERN AU_EXPORT AuThread * AuThreadFindByIDBlockList(uint16_t id)
Definition x86_64_sched.cpp:609
AU_EXTERN AU_EXPORT AuThread * AuGetCurrentThread()
Definition x86_64_sched.cpp:505
AU_EXTERN AU_EXPORT void AuSleepThread(AuThread *thread, uint64_t ms)
Definition x86_64_sched.cpp:523
void AuSchedulerInitialise()
Definition x86_64_sched.cpp:354
AU_EXTERN AU_EXPORT AuThread * AuThreadFindByID(uint16_t id)
Definition x86_64_sched.cpp:596
void AuKThreadCopy(AuThread *dest, AuThread *src)
Definition x86_64_sched.cpp:317
struct _uentry_ AuUserEntry
AU_EXTERN AU_EXPORT void AuBlockThread(AuThread *thread)
Definition x86_64_sched.cpp:514
void AuThreadMoveToTrash(AuThread *t)
Definition x86_64_sched.cpp:560
void AuThreadCleanTrash(AuThread *t)
Definition x86_64_sched.cpp:587
AU_EXTERN AU_EXPORT uint64_t AuGetSystemTimerTick()
AuGetSystemTimerTick – return the current system timer tick.
Definition x86_64_sched.cpp:634
struct _signal_queue_ SignalQueue
AU_EXTERN AU_EXPORT AuThread * AuCreateKthread(void(*entry)(uint64_t), uint64_t stack, uint64_t cr3, char *name)
Definition x86_64_sched.cpp:253