xv6-cs450/proc.h
kaashoek b22d898297 timer interrupts
disk interrupts (assuming bochs has a bug)
2006-07-05 20:00:14 +00:00

50 lines
1.2 KiB
C

/*
* p->mem:
* text
* original data and bss
* fixed-size stack
* expandable heap
*/
/*
* segments in proc->gdt
*/
#define SEG_KCODE 1 // kernel code
#define SEG_KDATA 2 // kernel data+stack
#define SEG_UCODE 3
#define SEG_UDATA 4
#define SEG_TSS 5 // this process's task state
#define NSEGS 6
struct proc{
char *mem; // start of process's physical memory
unsigned sz; // total size of mem, including kernel stack
char *kstack; // kernel stack, separate from mem so it doesn't move
enum { UNUSED, RUNNABLE, WAITING, ZOMBIE, RUNNING } state;
int pid;
int ppid;
void *chan; // sleep
struct fd *fds[NOFILE];
struct Taskstate ts; // only to give cpu address of kernel stack
struct Segdesc gdt[NSEGS];
struct Pseudodesc gdt_pd;
unsigned esp; // kernel stack pointer
unsigned ebp; // kernel frame pointer
struct Trapframe *tf; // points into kstack, used to find user regs
};
extern struct proc proc[];
extern struct proc *curproc[NCPU];
#define MPSTACK 512
struct cpu {
uint8_t apicid; // Local APIC ID
char mpstack[MPSTACK]; // per-cpu start-up stack, only used to get into main()
};
extern struct cpu cpus[NCPU];
extern int ncpu;