PatchworkOS
Loading...
Searching...
No Matches
process.h
Go to the documentation of this file.
1#pragma once
2
4#include <kernel/fs/sysfs.h>
5#include <kernel/fs/vfs_ctx.h>
6#include <kernel/mem/space.h>
7#include <kernel/proc/argv.h>
9#include <kernel/sched/wait.h>
10#include <kernel/sync/futex.h>
11#include <kernel/utils/ref.h>
12
13#include <stdatomic.h>
14
47
79
91process_t* process_new(process_t* parent, const char** argv, const path_t* cwd, priority_t priority);
92
104void process_kill(process_t* process, uint64_t status);
105
113bool process_is_child(process_t* process, pid_t parentId);
114
128
132void process_procfs_init(void);
133
void process_kill(process_t *process, uint64_t status)
Kills a process.
Definition process.c:483
bool process_is_child(process_t *process, pid_t parentId)
Checks if a process is a child of another process.
Definition process.c:529
process_t * process_get_kernel(void)
Gets the kernel process.
Definition process.c:594
process_t * process_new(process_t *parent, const char **argv, const path_t *cwd, priority_t priority)
Allocates and initializes a new process.
Definition process.c:458
void process_procfs_init(void)
Initializes the /proc directory.
Definition process.c:567
uint8_t priority_t
Priority type.
Definition proc.h:41
__UINT64_TYPE__ tid_t
Thread Identifier.
Definition tid_t.h:12
__UINT64_TYPE__ pid_t
Process Identifier.
Definition pid_t.h:11
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
Argument Vector structure.
Definition argv.h:23
Directory entry structure.
Definition dentry.h:83
Per-process futex context.
Definition futex.h:34
A entry in a doubly linked list.
Definition list.h:38
A doubly linked list.
Definition list.h:51
A simple ticket lock implementation.
Definition lock.h:43
Mount structure.
Definition mount.h:36
Path structure.
Definition path.h:110
Process structure.
Definition process.h:53
dentry_t * prioFile
The /proc/[pid]/prio file.
Definition process.h:72
mount_t * self
The /proc/[pid]/self mount point.
Definition process.h:77
list_entry_t siblingEntry
Definition process.h:67
struct process * parent
Definition process.h:70
futex_ctx_t futexCtx
Definition process.h:62
dentry_t * dir
The /proc/[pid] directory for this process.
Definition process.h:71
ref_t ref
Definition process.h:54
argv_t argv
Definition process.h:58
space_t space
Definition process.h:59
dentry_t * noteFile
The /proc/[pid]/note file.
Definition process.h:75
list_entry_t zombieEntry
Definition process.h:69
dentry_t * waitFile
The /proc/[pid]/wait file.
Definition process.h:76
pid_t id
Definition process.h:55
_Atomic(uint64_t) status
vfs_ctx_t vfsCtx
Definition process.h:61
process_threads_t threads
Definition process.h:65
list_t children
Definition process.h:68
dentry_t * cwdFile
The /proc/[pid]/cwd file.
Definition process.h:73
rwlock_t childrenLock
Definition process.h:66
dentry_t * cmdlineFile
The /proc/[pid]/cmdline file.
Definition process.h:74
atomic_bool isDying
Definition process.h:64
wait_queue_t dyingWaitQueue
Definition process.h:63
_Atomic(priority_t) priority
Process threads structure.
Definition process.h:42
Reference counting structure.
Definition ref.h:30
Read-Write Ticket Lock structure.
Definition rwlock.h:59
Virtual address space structure.
Definition space.h:79
VFS context structure.
Definition vfs_ctx.h:31
Wait queue structure.
Definition wait.h:166