| int set_sjf_params(int pid, int burst_time, int confidence) ; | |
| // Add function declarations | |
| int set_sjf_proc(int pid, int priority_ratio, int burst_time); | |
| int set_sjf_sys(int priority_ratio, int burst_time); | |
| int print_processes_infos(void); | |
| void sort_syscalls(void); | |
| int get_most_invoked(void); | |
| // int set_estimated_runtime(int pid, int runtime, int confidence); | |
| // System call to set a process's scheduling queue | |
| int sys_set_scheduling_queue(void) | |
| { | |
| int pid, queue; | |
| if(argint(0, &pid) < 0 || argint(1, &queue) < 0) | |
| return -1; | |
| return change_queue(pid, queue); | |
| } | |
| int sys_set_sjf_proc(void) { | |
| int pid; | |
| int a, b; | |
| if (argint(0, &pid) < 0 || argint(1, &a) < 0 || argint(2, &b) < 0) | |
| return -1; | |
| return set_sjf_proc(pid, a, b); | |
| } | |
| int sys_set_sjf_sys(void) { | |
| int a, b; | |
| if (argint(0, &a) < 0 || argint(1, &b) < 0 ) | |
| return -1; | |
| return set_sjf_sys(a, b); | |
| } | |
| // Correct function names | |
| int sys_print_processes_info(void) { | |
| print_processes_infos(); | |
| return 0; | |
| } | |
| int | |
| sys_fork(void) | |
| { | |
| return fork(); | |
| } | |
| int | |
| sys_exit(void) | |
| { | |
| exit(); | |
| return 0; // not reached | |
| } | |
| int | |
| sys_wait(void) | |
| { | |
| return wait(); | |
| } | |
| int | |
| sys_kill(void) | |
| { | |
| int pid; | |
| if(argint(0, &pid) < 0) | |
| return -1; | |
| return kill(pid); | |
| } | |
| int | |
| sys_getpid(void) | |
| { | |
| return myproc()->pid; | |
| } | |
| int | |
| sys_sbrk(void) | |
| { | |
| int addr; | |
| int n; | |
| if(argint(0, &n) < 0) | |
| return -1; | |
| addr = myproc()->sz; | |
| if(growproc(n) < 0) | |
| return -1; | |
| return addr; | |
| } | |
| int | |
| sys_sleep(void) | |
| { | |
| int n; | |
| uint ticks0; | |
| if(argint(0, &n) < 0) | |
| return -1; | |
| acquire(&tickslock); | |
| ticks0 = ticks; | |
| while(ticks - ticks0 < n){ | |
| if(myproc()->killed){ | |
| release(&tickslock); | |
| return -1; | |
| } | |
| sleep(&ticks, &tickslock); | |
| } | |
| release(&tickslock); | |
| return 0; | |
| } | |
| // return how many clock tick interrupts have occurred | |
| // since start. | |
| int | |
| sys_uptime(void) | |
| { | |
| uint xticks; | |
| acquire(&tickslock); | |
| xticks = ticks; | |
| release(&tickslock); | |
| return xticks; | |
| } | |
| int | |
| sys_create_palindrome(void) | |
| { | |
| int num; | |
| if (argint(0, &num) < 0) | |
| return -1; | |
| if(num == 0){ | |
| cprintf("Palindrome: %d\n",num); | |
| return 0; | |
| } | |
| int reversed = 0, temp = num; | |
| while (temp != 0) { | |
| reversed = reversed * 10 + temp % 10; | |
| temp /= 10; | |
| } | |
| cprintf("Palindrome: %d%d\n", num,reversed); | |
| return 0; | |
| } | |
| int | |
| sys_sort_syscalls(void) | |
| { | |
| sort_syscalls(); | |
| } | |
| int | |
| sys_get_most_invoked_syscall(void) | |
| { | |
| return get_most_invoked(); | |
| } | |
| // Correct function names | |
| int sys_list_all_processes(void) { | |
| list_proceases(); | |
| return 0; | |
| } | |
| // int | |
| // sys_set_estimated_runtime(void) | |
| // { | |
| // int pid, runtime, confidence; | |
| // if(argint(0, &pid) < 0) | |
| // return -1; | |
| // if(argint(1, &runtime) < 0) | |
| // return -1; | |
| // if(argint(2, &confidence) < 0) | |
| // return -1; | |
| // return set_estimated_runtime(pid, runtime, confidence); | |
| // } | |
| int | |
| sys_change_queue(void) | |
| { | |
| int pid, new_queue_level; | |
| if(argint(0, &pid) < 0) | |
| return -1; | |
| if(argint(1, &new_queue_level) < 0) | |
| return -1; | |
| return change_queue(pid, new_queue_level); | |
| } | |
| // Alias for change_queue | |
| int sys_chqueue(void) { | |
| return sys_change_queue(); | |
| } | |
| int sys_set_SJF_params(void) { | |
| int pid, burst_time, confidence; | |
| if(argint(0, &pid) < 0) | |
| return -1; | |
| if(argint(1, &burst_time) < 0) | |
| return -1; | |
| if(argint(2, &confidence) < 0) | |
| return -1; | |
| return set_SJF_params(pid, burst_time, confidence); | |
| } | |
| // int sys_user_program(void) { | |
| // return user_program(); | |
| // } | |
Xet Storage Details
- Size:
- 3.68 kB
- Xet hash:
- 4f945e3039312784ab40b8f2e31e18d04b324aef7fe1d9a0b0b4f0188f6d0583
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.