12813126eSlogin /** 22813126eSlogin * @file process.h 32813126eSlogin * @author longjin 42813126eSlogin * @brief 进程 52813126eSlogin * @date 2022-01-29 62813126eSlogin * 72813126eSlogin * @copyright Copyright (c) 2022 82813126eSlogin * 92813126eSlogin */ 102813126eSlogin 112813126eSlogin #pragma once 122813126eSlogin #include "ptrace.h" 13cffd7144Slogin #include <common/cpu.h> 142813126eSlogin #include <common/errno.h> 15cffd7144Slogin #include <common/glib.h> 16587086d3Slogin #include <filesystem/vfs/VFS.h> 172813126eSlogin #include <mm/mm-types.h> 18cffd7144Slogin #include <syscall/syscall.h> 192813126eSlogin 202813126eSlogin #include "proc-types.h" 212813126eSlogin 222813126eSlogin /** 232813126eSlogin * @brief 进程退出时执行的函数 242813126eSlogin * 252813126eSlogin * @param code 返回码 262813126eSlogin * @return ul 272813126eSlogin */ 28*1496ba7bSLoGin extern ul rs_process_do_exit(ul code); 292813126eSlogin 30*1496ba7bSLoGin extern int rs_current_cpu_id(); 312813126eSlogin 322813126eSlogin extern unsigned long head_stack_start; // 导出内核层栈基地址(定义在head.S) 332813126eSlogin extern ul _stack_start; 342813126eSlogin extern void ret_from_intr(void); // 导出从中断返回的函数(定义在entry.S) 352813126eSlogin 36*1496ba7bSLoGin extern uint32_t rs_current_pcb_cpuid(); 37*1496ba7bSLoGin extern uint32_t rs_current_pcb_pid(); 38*1496ba7bSLoGin extern uint32_t rs_current_pcb_preempt_count(); 39*1496ba7bSLoGin extern uint32_t rs_current_pcb_flags(); 40*1496ba7bSLoGin extern int64_t rs_current_pcb_thread_rbp(); 412813126eSlogin 42*1496ba7bSLoGin #define PF_NEED_SCHED (1UL << 1) 43