kern
view src/proc.h @ 80:4db99a52863e
fixed the "endianess" of the text messages in the ATA identify info block. this
is the first time I've seen wrong byteorder in ascii text, the ATA committee
should be commended.
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 06 Dec 2011 13:35:39 +0200 |
parents | 0a205396e1a0 |
children | 7ff2b4971216 |
line source
1 #ifndef PROC_H_
2 #define PROC_H_
4 #include <inttypes.h>
5 #include "asmops.h"
6 #include "rbtree.h"
8 #define MAX_PROC 128
10 struct context {
11 /*struct registers regs;*/ /* saved general purpose registers */
12 /*uint32_t instr_ptr;*/ /* saved eip */
13 uint32_t stack_ptr; /* saved esp */
14 /*uint32_t flags;*/ /* saved eflags */
15 uint32_t pgtbl_paddr; /* physical address of the page table */
16 /* TODO add FPU state */
17 };
19 enum proc_state {
20 STATE_RUNNABLE,
21 STATE_BLOCKED,
22 STATE_ZOMBIE
23 };
26 struct process {
27 int id, parent;
28 enum proc_state state;
30 int exit_status;
32 /* when blocked it's waiting for a wakeup on this address */
33 void *wait_addr;
35 int ticks_left;
37 /* process vm map */
38 struct rbtree vmmap;
40 /* extends of the process heap, increased by sbrk */
42 /* first page of the user stack, extends up to KMEM_START */
43 int user_stack_pg;
44 /* first page of the kernel stack, (KERN_STACK_SIZE) */
45 int kern_stack_pg;
47 struct context ctx;
49 struct process *child_list;
51 struct process *next, *prev; /* for the scheduler queues */
52 struct process *sib_next; /* for the sibling list */
53 };
55 void init_proc(void);
57 int sys_fork(void);
58 int sys_exit(int status);
59 int sys_waitpid(int pid, int *status, int opt);
61 void context_switch(int pid);
63 void set_current_pid(int pid);
64 int get_current_pid(void);
65 struct process *get_current_proc(void);
66 struct process *get_process(int pid);
68 int sys_getpid(void);
69 int sys_getppid(void);
71 /* defined in proc-asm.S */
72 uint32_t get_instr_ptr(void);
73 uint32_t get_caller_instr_ptr(void);
74 void get_instr_stack_ptr(uint32_t *iptr, uint32_t *sptr);
76 #endif /* PROC_H_ */