xref: /DragonOS/kernel/src/process/process.h (revision 1496ba7b24a5e6954291ca9643b9f3cec567479a)
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