Mon 14 Oct 23:06:38 CEST 2024
This commit is contained in:
		
							parent
							
								
									1055ac73cc
								
							
						
					
					
						commit
						5925b2af52
					
				
							
								
								
									
										86
									
								
								kernel/process.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								kernel/process.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,86 @@ | ||||||
|  | /*
 | ||||||
|  | Copyright (C) 2015-2019 The University of Notre Dame | ||||||
|  | This software is distributed under the GNU General Public License. | ||||||
|  | See the file LICENSE for details. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #ifndef PROCESS_H | ||||||
|  | #define PROCESS_H | ||||||
|  | 
 | ||||||
|  | #include "kernel/types.h" | ||||||
|  | #include "kernel/stats.h" | ||||||
|  | #include "list.h" | ||||||
|  | #include "pagetable.h" | ||||||
|  | #include "kobject.h" | ||||||
|  | #include "x86.h" | ||||||
|  | #include "fs.h" | ||||||
|  | 
 | ||||||
|  | #define PROCESS_STATE_CRADLE  0 | ||||||
|  | #define PROCESS_STATE_READY   1 | ||||||
|  | #define PROCESS_STATE_RUNNING 2 | ||||||
|  | #define PROCESS_STATE_BLOCKED 3 | ||||||
|  | #define PROCESS_STATE_GRAVE   4 | ||||||
|  | 
 | ||||||
|  | #define PROCESS_MAX_OBJECTS 32 | ||||||
|  | #define PROCESS_MAX_PID 1024 | ||||||
|  | 
 | ||||||
|  | #define PROCESS_EXIT_NORMAL   0 | ||||||
|  | #define PROCESS_EXIT_KILLED   1 | ||||||
|  | 
 | ||||||
|  | struct process { | ||||||
|  | 	struct list_node node; | ||||||
|  | 	int state; | ||||||
|  | 	int exitcode; | ||||||
|  | 	int exitreason; | ||||||
|  | 	struct pagetable *pagetable; | ||||||
|  | 	char *kstack; | ||||||
|  | 	char *kstack_top; | ||||||
|  | 	char *kstack_ptr; | ||||||
|  | 	struct kobject *ktable[PROCESS_MAX_OBJECTS]; | ||||||
|  | 	struct process_stats stats; | ||||||
|  | 	uint32_t pid; | ||||||
|  | 	uint32_t ppid; | ||||||
|  | 	uint32_t vm_data_size; | ||||||
|  | 	uint32_t vm_stack_size; | ||||||
|  | 	uint32_t waiting_for_child_pid; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | void process_init(); | ||||||
|  | 
 | ||||||
|  | struct process *process_create(); | ||||||
|  | void process_delete(struct process *p); | ||||||
|  | void process_launch(struct process *p); | ||||||
|  | void process_pass_arguments(struct process *p, int argc, char **argv); | ||||||
|  | void process_inherit(struct process *parent, struct process *child); | ||||||
|  | void process_selective_inherit(struct process *parent, struct process *child, int * fds, int fd_len); | ||||||
|  | 
 | ||||||
|  | void process_stack_reset(struct process *p, unsigned size); | ||||||
|  | void process_kstack_reset(struct process *p, unsigned entry_point); | ||||||
|  | void process_kstack_copy(struct process *parent, struct process *child); | ||||||
|  | 
 | ||||||
|  | int process_data_size_set(struct process *p, unsigned size); | ||||||
|  | int process_stack_size_set(struct process *p, unsigned size); | ||||||
|  | 
 | ||||||
|  | int process_available_fd(struct process *p); | ||||||
|  | int process_object_max(struct process *p); | ||||||
|  | 
 | ||||||
|  | void process_yield(); | ||||||
|  | void process_preempt(); | ||||||
|  | void process_exit(int code); | ||||||
|  | void process_dump(struct process *p); | ||||||
|  | 
 | ||||||
|  | void process_wait(struct list *q); | ||||||
|  | void process_wakeup(struct list *q); | ||||||
|  | void process_wakeup_parent(struct list *q); | ||||||
|  | void process_wakeup_all(struct list *q); | ||||||
|  | void process_reap_all(); | ||||||
|  | 
 | ||||||
|  | int process_kill(uint32_t pid); | ||||||
|  | int process_wait_child(uint32_t pid, struct process_info *info, int timeout); | ||||||
|  | int process_reap(uint32_t pid); | ||||||
|  | 
 | ||||||
|  | int process_stats(int pid, struct process_stats *stat); | ||||||
|  | 
 | ||||||
|  | extern struct process *current; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user