docs: documented processes
This commit is contained in:
parent
b732145fef
commit
7cc053be5c
|
@ -1091,13 +1091,16 @@ This function fills all the interrupt gates (handlers) into the IDT and loads it
|
|||
|
||||
#### `thread_T` - struct
|
||||
| Name | Type | Description |
|
||||
|------------|-------------|--------------------------------------------------------------------------------------------------|
|
||||
|-------------|-------------|--------------------------------------------------------------------------------------------------|
|
||||
| state | cpu_state_T | The last saved state of the thread. ( -> _context switching_) |
|
||||
| cpu_time | uint64_t | The amount of cpu time the thread had. (currently the amount of context switches the thread had) |
|
||||
| stack | void* | The bottom of the threads stack |
|
||||
| stack_size | uint32_t | The size of the threads stack (in bytes) |
|
||||
| prev | thread_T* | The previous thread in the scheduling queue (**should only be accessed by the scheduler!**) |
|
||||
| next | thread_T* | The next thread in the scheduling queue (**should only be accessed by the scheduler!**) |
|
||||
| process | process_T* | The process, to which the thread belongs to |
|
||||
| global_prev | thread_T* | The previous thread in the scheduling queue (**should only be accessed by the scheduler!**) |
|
||||
| global_next | thread_T* | The next thread in the scheduling queue (**should only be accessed by the scheduler!**) |
|
||||
| local_prev | thread_T* | The previous thread of _process_ (**should only be accessed by the scheduler!**) |
|
||||
| local_next | thread_T* | The next thread of _process_ (**should only be accessed by the scheduler!**) |
|
||||
|
||||
|
||||
#### `thread_spawn(function)` - function (thread_T*)
|
||||
|
@ -1125,13 +1128,57 @@ Pauses **_thread_**.
|
|||
Kills **_thread_**.
|
||||
The threads stack and `thread_T` structure will be freed.
|
||||
|
||||
### process.h
|
||||
|
||||
#### `pid_t` - typedef
|
||||
A typedef for `uint32_t`, used for process identification.
|
||||
Such an identification number is also called `pid`.
|
||||
|
||||
#### `processes_standard_E` - enum
|
||||
These are standard pids
|
||||
- **None** - This pid is invalid, like `NULL` is an invalid pointer
|
||||
- **Kernel** - The kernels' main process
|
||||
|
||||
#### `process_T` - struct
|
||||
|
||||
| Name | Type | Description |
|
||||
|----------|------------|--------------------------------------------------------|
|
||||
| name | char[128] | The processes' name |
|
||||
| id | pid_t | The process-identification number |
|
||||
| chunk | void* | A pointer to the chunk, where the process is stored in |
|
||||
| chunk_id | uint32_t | The processes id inside of its chunk |
|
||||
| parent | process_T* | The process, that spawned this process |
|
||||
| threads | void* | A pointer to the processes' first thread |
|
||||
|
||||
|
||||
#### `process_spawn(parent, name)` - function (pid_t)
|
||||
Spawns a process named **_name_** as child of **_parent_** and returns its pid.
|
||||
|
||||
#### `process_kill(process)` - function (void)
|
||||
Kills **_process_** and all of its threads and child processes.
|
||||
|
||||
### scheduler.h
|
||||
|
||||
#### `scheduler_processes_chunk_T` - struct
|
||||
These chunks are a combination of static array and linked list.
|
||||
They store the `process_T` pointer for each valid `pid_T`.
|
||||
|
||||
| Name | Type | Description |
|
||||
|------------------|------------------------------|------------------------------------------------------------------------------------|
|
||||
| processes | process_T** | The array of process pointers |
|
||||
| processes_bitmap | bitmap_T | If a bit in this bitmap is set, the _processes_ entry with the same index is valid |
|
||||
| num_free_pids | uint32_t | The amount of free slots in this chunk |
|
||||
| prev | scheduler_processes_chunk_T* | The previous chunk |
|
||||
| next | scheduler_processes_chunk_T* | The next chunk |
|
||||
|
||||
|
||||
#### `scheduler_T` - struct
|
||||
| Name | Type | Description |
|
||||
|----------------|-----------|--------------------------------------------------------------------|
|
||||
|----------------|------------------------------|--------------------------------------------------------------------|
|
||||
| num_threads | uint32_t | Total amount of currently spawned threads |
|
||||
| num_processes | uint32_t | Total amount of currently spawned processes |
|
||||
| running_thread | thread_T* | A pointer to the currently running thread. |
|
||||
| processes | scheduler_processes_chunk_T* | The first processes store chunk |
|
||||
| blocked | bool | Set to true, while switching the context. Thread safety mechanism. |
|
||||
| initialized | bool | Set to true, if the scheduler is initialized and started. |
|
||||
|
||||
|
@ -1162,9 +1209,21 @@ Starts **_thread_**, by linking it into the scheduling queue.
|
|||
#### `scheduler_kill_thread(thread)` - function (void)
|
||||
Pauses and unregisters **_thread_**.
|
||||
|
||||
#### `scheduler_register_process(process)` - function (pid_t)
|
||||
Reqisters **_process_** and returns its pid.
|
||||
|
||||
#### `scheduler_kill_process(process)` - function (void)
|
||||
Kills **_process_** and its threads and childs.
|
||||
|
||||
#### `scheduler_get_process(pid)` - function (process_T*)
|
||||
Returns the `process_T` pointer that is associated with **_pid_**.
|
||||
|
||||
#### `scheduler_get_current_thread()` - function (thread_T*)
|
||||
Returns a pointer to the currently running thread.
|
||||
|
||||
#### `scheduler_get_current_process()` - function (process_T*)
|
||||
Returns a pointer to the currently running threads process.
|
||||
|
||||
#### `scheduler_switch_context(state)` - function (cpu_state_T*)
|
||||
Saves **_state_** in the running threads _state_ value and increments their _cpu_time_ value.
|
||||
Then it sets the next thread as the running thread and returns its _state_.
|
||||
|
|
Loading…
Reference in New Issue