mirror of
https://github.com/drasko/codezero.git
synced 2026-01-27 18:23:13 +01:00
Multiple updates on sleeping, vma dropping and thread suspend.
- Updated sleeping paths such that a task is atomically put into a runqueue and made RUNNABLE, or removed from a runqueue and made SLEEPING. - Modified vma dropping sources to handle both copy_on_write() and exit() cases in a common function. - Added the first infrastructure to have a pager to suspend a task and wait for suspend completion from the scheduler.
This commit is contained in:
@@ -121,10 +121,12 @@ int task_setup_regions(struct vm_file *file, struct tcb *task,
|
||||
int task_setup_registers(struct tcb *task, unsigned int pc,
|
||||
unsigned int sp, l4id_t pager);
|
||||
struct tcb *tcb_alloc_init(unsigned int flags);
|
||||
int tcb_destroy(struct tcb *task);
|
||||
int task_exec(struct vm_file *f, unsigned long task_region_start,
|
||||
unsigned long task_region_end, struct task_ids *ids);
|
||||
int task_start(struct tcb *task, struct task_ids *ids);
|
||||
int copy_tcb(struct tcb *to, struct tcb *from, unsigned int flags);
|
||||
int task_release_vmas(struct task_vma_head *vma_head);
|
||||
struct tcb *task_create(struct tcb *orig,
|
||||
struct task_ids *ids,
|
||||
unsigned int ctrl_flags,
|
||||
|
||||
@@ -139,9 +139,9 @@ struct vm_object {
|
||||
/* In memory representation of either a vfs file, a device. */
|
||||
struct vm_file {
|
||||
int openers;
|
||||
struct list_head list;
|
||||
unsigned long length;
|
||||
unsigned int type;
|
||||
struct list_head list;
|
||||
struct vm_object vm_obj;
|
||||
void *priv_data; /* Device pagers use to access device info */
|
||||
};
|
||||
@@ -230,6 +230,7 @@ struct vm_file *vm_file_alloc_init(void);
|
||||
struct vm_object *vm_object_alloc_init(void);
|
||||
struct vm_object *vm_object_create(void);
|
||||
struct vm_file *vm_file_create(void);
|
||||
int vm_file_delete(struct vm_file *f);
|
||||
int vm_object_delete(struct vm_object *vmo);
|
||||
void vm_object_print(struct vm_object *vmo);
|
||||
|
||||
@@ -254,4 +255,7 @@ static inline void task_add_vma(struct tcb *task, struct vm_area *vma)
|
||||
/* Main page fault entry point */
|
||||
int page_fault_handler(struct tcb *faulty_task, fault_kdata_t *fkdata);
|
||||
|
||||
int vma_drop_merge_delete(struct vm_area *vma, struct vm_obj_link *link);
|
||||
int vma_drop_merge_delete_all(struct vm_area *vma);
|
||||
|
||||
#endif /* __VM_AREA_H__ */
|
||||
|
||||
Reference in New Issue
Block a user