X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Fproc.c;h=2ee2d4a5849a50e3fd9652e59bde62c6170b9c36;hb=586a47ab9343a85c944a2cf7b27a74cf459a8423;hp=2a246a6c7a209fc229d1c57ddc08a82931850f06;hpb=f73bf5f5cf0e188bafe905091aa311627af54b76;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/proc.c b/Kernel/arch/x86_64/proc.c index 2a246a6c..2ee2d4a5 100644 --- a/Kernel/arch/x86_64/proc.c +++ b/Kernel/arch/x86_64/proc.c @@ -22,10 +22,10 @@ // === IMPORTS === extern tGDT gGDT[]; -extern void APStartup(); // 16-bit AP startup code -extern Uint GetRIP(); // start.asm +extern void APStartup(void); // 16-bit AP startup code +extern Uint GetRIP(void); // start.asm extern Uint64 gInitialPML4[512]; // start.asm -extern void gInitialKernelStack; +extern char gInitialKernelStack[]; extern tSpinlock glThreadListLock; extern int giNumCPUs; extern int giNextTID; @@ -39,21 +39,21 @@ extern tThread *Threads_GetNextToRun(int CPU); extern void Threads_Dump(void); extern tThread *Threads_CloneTCB(Uint *Err, Uint Flags); extern void Proc_ReturnToUser(void); -extern void GetCPUNum(void); +extern int GetCPUNum(void); // === PROTOTYPES === -void ArchThreads_Init(); +void ArchThreads_Init(void); #if USE_MP void MP_StartAP(int CPU); void MP_SendIPI(Uint8 APICID, int Vector, int DeliveryMode); #endif -void Proc_Start(); -tThread *Proc_GetCurThread(); -void Proc_ChangeStack(); +void Proc_Start(void); +tThread *Proc_GetCurThread(void); +void Proc_ChangeStack(void); int Proc_Clone(Uint *Err, Uint Flags); void Proc_StartProcess(Uint16 SS, Uint Stack, Uint Flags, Uint16 CS, Uint IP); void Proc_CallFaultHandler(tThread *Thread); -void Proc_Scheduler(); +void Proc_Scheduler(int CPU); // === GLOBALS === // --- Multiprocessing --- @@ -73,10 +73,10 @@ Uint32 gaDoubleFaultStack[1024]; // === CODE === /** - * \fn void ArchThreads_Init() + * \fn void ArchThreads_Init(void) * \brief Starts the process scheduler */ -void ArchThreads_Init() +void ArchThreads_Init(void) { Uint pos = 0; @@ -333,23 +333,22 @@ void MP_SendIPI(Uint8 APICID, int Vector, int DeliveryMode) #endif /** - * \fn void Proc_Start() + * \fn void Proc_Start(void) * \brief Start process scheduler */ -void Proc_Start() +void Proc_Start(void) { // Start Interrupts (and hence scheduler) __asm__ __volatile__("sti"); } /** - * \fn tThread *Proc_GetCurThread() + * \fn tThread *Proc_GetCurThread(void) * \brief Gets the current thread */ -tThread *Proc_GetCurThread() +tThread *Proc_GetCurThread(void) { #if USE_MP - //return gaCPUs[ gaAPIC_to_CPU[gpMP_LocalAPIC->ID.Val&0xFF] ].Current; return gaCPUs[ GetCPUNum() ].Current; #else return gCurrentThread; @@ -357,10 +356,10 @@ tThread *Proc_GetCurThread() } /** - * \fn void Proc_ChangeStack() + * \fn void Proc_ChangeStack(void) * \brief Swaps the current stack for a new one (in the proper stack reigon) */ -void Proc_ChangeStack() +void Proc_ChangeStack(void) { Uint rsp, rbp; Uint tmp_rbp, old_rsp; @@ -487,10 +486,10 @@ int Proc_Clone(Uint *Err, Uint Flags) } /** - * \fn int Proc_SpawnWorker() + * \fn int Proc_SpawnWorker(void) * \brief Spawns a new worker thread */ -int Proc_SpawnWorker() +int Proc_SpawnWorker(void) { tThread *new, *cur; Uint rip, rsp, rbp; @@ -535,10 +534,10 @@ int Proc_SpawnWorker() } /** - * \fn Uint Proc_MakeUserStack() + * \fn Uint Proc_MakeUserStack(void) * \brief Creates a new user stack */ -Uint Proc_MakeUserStack() +Uint Proc_MakeUserStack(void) { int i; Uint base = USER_STACK_TOP - USER_STACK_SZ;