|
XenevaOS
|
#include <process.h>#include <aucon.h>#include <Mm/vmmngr.h>#include <Mm/kmalloc.h>#include <pe.h>#include <clean.h>#include <Mm/pmmngr.h>#include <string.h>#include <_null.h>#include <Hal/AA64/sched.h>#include <Hal/AA64/aa64lowlevel.h>#include <Mm/shm.h>#include <loader.h>#include <Ipc/postbox.h>#include <Mm/mmap.h>#include <Drivers/uart.h>#include <timer.h>#include <Cap/capability.h>#include <Sound/sound.h>
Macros | |
| #define | USER_STACK_FLAG (1ULL << 54 | 2ULL << 6 | 1ULL << 10 | PTE_NORMAL_MEM | 1) |
| #define | USER_STACK 0x000000A000000000 |
| #define | USER_STACK 0x000000A000000000 |
Functions | |
| void | AuAddProcess (AuProcess *parent, AuProcess *proc) |
| AuAddProcess – adds process to kernel data structure. | |
| void | AuRemoveProcess (AuProcess *parent, AuProcess *proc) |
| AuRemoveProcess – removes a process from the process data structure. | |
| AuProcess * | AuProcessFindByPID (AuProcess *proc, int pid) |
| AuProcessFindByPID – finds a process by its pid. | |
| AuProcess * | AuProcessFindByThread (AuProcess *proc, AA64Thread *thread) |
| AuProcessFindByThread – finds a process by its main thread. | |
| AuProcess * | AuProcessFindPID (int pid) |
| AuProcessFindPID – finds a process by its pid from the process tree. | |
| AuProcess * | AuProcessFindThread (AA64Thread *thread) |
| AuProcessFindThread – finds a process by its main thread. | |
| AuProcess * | AuProcessFindSubThread (AA64Thread *thread) |
| AuProcessFindSubThread – find a process from its sub threads which contain a pointer to its process slot. | |
| int | AuAllocateProcessID () |
| AuAllocateProcessID – allocates a new pid and return. | |
| uint64_t * | CreateUserStack (AuProcess *proc, uint64_t *cr3) |
| CreateUserStack – creates new user stack. | |
| uint64_t * | CreateSubUserStack (AuProcess *proc, uint64_t *cr3) |
| CreateSubUserStack – creates new user stack. | |
| AuProcess * | AuCreateProcessSlot (AuProcess *parent, char *name) |
| AuCreateProcessSlot – creates a blank process slot. | |
| int | AuProcessGetFileDesc (AuProcess *proc) |
| AuProcessGetFileDesc – returns a empty file descriptor from process slot, 0, 1 & 2 are reserved for terminal output. | |
| int | AuCreateUserthread (AuProcess *proc, void(*entry)(), char *name) |
| Creates a user mode thread. | |
| void | AuProcessHeapMemDestroy (AuProcess *proc) |
| AuProcessHeapMemDestroy – destroys the heap area of process. | |
| void | AuProcessFreeKeResource (AA64Thread *thr) |
| AuProcessFreeKeResource – free up allocated kernel resources. | |
| void | AuProcessExit (AuProcess *proc, bool schedulable) |
| AuProcessExit – exits a process. | |
| AuProcess * | AuGetKillableProcess () |
| AuGetKillableProcess – returns a killable process. | |
| int | AuProcessWaitForTermination (AuProcess *proc, int pid) |
| AuProcessWaitForTermination – waits for termination of child processes. | |
| int | AuProcGetNumProcessCount () |
| AuProcGetNumProcessCount – returns the total number of process created. | |
| int | AuProcessFetch (AuProcessList *list, int num_proc_count) |
| AuProcessFetch – fetch current process table status. | |
Variables | |
| AuProcess * | proc_first |
| AuProcess * | proc_last |
| AuProcess * | root_proc |
BSD 2-Clause License
Copyright (c) 2022-2025, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| #define USER_STACK 0x000000A000000000 |
| #define USER_STACK 0x000000A000000000 |
| #define USER_STACK_FLAG (1ULL << 54 | 2ULL << 6 | 1ULL << 10 | PTE_NORMAL_MEM | 1) |
AuAddProcess – adds process to kernel data structure.
| root | – pointer to the root process |
| proc | – process to add |
| int AuAllocateProcessID | ( | ) |
AuAllocateProcessID – allocates a new pid and return.
AuCreateProcessSlot – creates a blank process slot.
| parent | – pointer to the parent process |
confusing code :hehehehe
just inherit all parent credential's to belong to that uac and group
| int AuCreateUserthread | ( | AuProcess * | proc, |
| void(*)() | entry, | ||
| char * | name | ||
| ) |
Creates a user mode thread.
| entry | – Entry point address |
| stack | – Stack address |
| cr3 | – the top most page map level address |
| name | – name of the thread |
| priority | – (currently unused) thread's priority |
| AuProcess * AuGetKillableProcess | ( | ) |
AuGetKillableProcess – returns a killable process.
| proc | – process to kill |
AuProcessExit – exits a process.
| proc | – process to exit |
| schedulable | – schedule to next thread |
free up all allocated files by this process
conditional check for cache flag
unblock all waitlisted threads
| int AuProcessFetch | ( | AuProcessList * | list, |
| int | num_proc_count | ||
| ) |
AuProcessFetch – fetch current process table status.
| list | – Pointer to AuProcessList |
| num_proc_count | – number of process count |
AuProcessFindByPID – finds a process by its pid.
| parent | – parent process to search in |
| pid | – process id to find |
AuProcessFindByThread – finds a process by its main thread.
| parent | – parent process to search in |
| thread | – thread to find |
| AuProcess * AuProcessFindPID | ( | int | pid | ) |
AuProcessFindPID – finds a process by its pid from the process tree.
| pid | – process id of the process |
| AuProcess * AuProcessFindSubThread | ( | AA64Thread * | thread | ) |
AuProcessFindSubThread – find a process from its sub threads which contain a pointer to its process slot.
| thread | – Pointer to sub thread |
| AuProcess * AuProcessFindThread | ( | AA64Thread * | thread | ) |
AuProcessFindThread – finds a process by its main thread.
| thread | – pointer to main thread |
| void AuProcessFreeKeResource | ( | AA64Thread * | thr | ) |
AuProcessFreeKeResource – free up allocated kernel resources.
| thr | – Pointer to thread which allocated kernel resources |
| int AuProcessGetFileDesc | ( | AuProcess * | proc | ) |
AuProcessGetFileDesc – returns a empty file descriptor from process slot, 0, 1 & 2 are reserved for terminal output.
| proc | – pointer to process slot |
| void AuProcessHeapMemDestroy | ( | AuProcess * | proc | ) |
AuProcessHeapMemDestroy – destroys the heap area of process.
| proc | – Pointer to process |
| int AuProcessWaitForTermination | ( | AuProcess * | proc, |
| int | pid | ||
| ) |
AuProcessWaitForTermination – waits for termination of child processes.
| proc | – pointer to process who needs to wait for termination |
| pid | – pid of the process, if -1 then any child process |
| int AuProcGetNumProcessCount | ( | ) |
AuProcGetNumProcessCount – returns the total number of process created.
AuRemoveProcess – removes a process from the process data structure.
| parent | – pointer to the parent process |
| proc | – process to remove |
CreateSubUserStack – creates new user stack.
| proc | – Pointer to process slot |
| cr3 | – pointer to the address space where to map |
CreateUserStack – creates new user stack.
| proc | – Pointer to process slot |
| cr3 | – pointer to the address space where to map |
| AuProcess* proc_first |
| AuProcess* proc_last |
| AuProcess* root_proc |