cleaned up scheduling and boot code
This commit is contained in:
parent
04f6c80d7d
commit
d9625b445a
@ -5,20 +5,8 @@ stack_bottom:
|
||||
.space 4096
|
||||
stack_top:
|
||||
|
||||
|
||||
.section .text._start
|
||||
|
||||
|
||||
// Set up all the CSR mstatus_offsets
|
||||
// .set mstatus, 0x300 // machine status
|
||||
// .set mscratch, 0x340
|
||||
// .set mtvec, 0x305 // machine trap handler
|
||||
// .set mcause, 0x342 // machine trap cause
|
||||
// .set mtval, 0x343 // machine bad address or instruction
|
||||
// .set misa, 0x301 // machine ISA
|
||||
// .set mie, 0x304 // machine interrupt enable
|
||||
// .set mip, 0x344 // machine interrupt pending
|
||||
|
||||
.extern init
|
||||
.type init, @function
|
||||
|
||||
|
@ -128,12 +128,12 @@ int scheduler_index_from_pid(int pid)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int scheduler_create_process(int binid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int* get_current_process_registers()
|
||||
{
|
||||
return processes[current_process_index].regs;
|
||||
}
|
||||
}
|
||||
|
||||
ProcessControlBlock* get_current_process()
|
||||
{
|
||||
return &processes[current_process_index];
|
||||
}
|
||||
|
@ -3,12 +3,12 @@
|
||||
|
||||
#include "../kernel.h"
|
||||
|
||||
// process statuses:
|
||||
#define PROC_DEAD 0
|
||||
#define PROC_RDY 1
|
||||
#define PROC_WAIT_LOCK 2
|
||||
#define PROC_WAIT_PROC 3
|
||||
#define PROC_WAIT_SLEEP 4
|
||||
enum process_status {
|
||||
PROC_DEAD = 0,
|
||||
PROC_RDY = 1,
|
||||
PROC_WAIT_PROC = 2,
|
||||
PROC_WAIT_SLEEP = 3,
|
||||
}
|
||||
|
||||
// process structure:
|
||||
typedef struct ProcessControlBlock ProcessControlBlock;
|
||||
@ -17,8 +17,7 @@ struct ProcessControlBlock {
|
||||
int pc;
|
||||
int regs[31];
|
||||
// scheduling information
|
||||
int status;
|
||||
int requested_lock;
|
||||
enum process_status status;
|
||||
ProcessControlBlock *waiting_for_process;
|
||||
unsigned long long int asleep_until;
|
||||
};
|
||||
@ -33,5 +32,6 @@ void __attribute__((noreturn)) scheduler_run_next();
|
||||
void __attribute__((noreturn)) scheduler_switch_to(int proc_index);
|
||||
int scheduler_index_from_pid(int pid);
|
||||
int* get_current_process_registers();
|
||||
ProcessControlBlock* get_current_process();
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user