diff --git a/docs/doc-syntax.txt b/docs/doc-syntax.txt new file mode 100644 index 0000000..8c92d89 --- /dev/null +++ b/docs/doc-syntax.txt @@ -0,0 +1,57 @@ +Documentation Syntax +==================== + +Headers +------- +You may utilize three levels of headers. The highest headers are underlined with +equal signs (see the top of this document). The second header level is +underlined with dashes (see the header of this section). The lowest level of +headings are underlined with asterisks. The number of underline characters shall +be the same length as the header. + +Lists +----- +There are two types of lists: ordered and unordered lists. Ordered lists are +written with hashes separated by a space at the start of lines like this: +# First entry +# Another entry +# The last entry + +Unordered lists are written with a asterisk separated by a space instead: +* No numbers here +* Not even here + +Lists may also be indented with a tab. + +Ephasizing +---------- +If you want to emphasize some text you have these options: +* **Bold** +* __Italics__ +* ~~Strikethrough~~ + +If you don't want some text to be formatted, you can escape it with a backslash. + +Code blocks +----------- +One can write code blocks either as inline by wrapping the code in backticks +like this: `malloc()`. Multiline code blocks can be written by indenting the +code as so: + #include + + int main(int argc, char** argv) { + printf("Args for %s:\n", argv[0]); + for (size_t i = 1; i < argc; i++) { + printf("\t%s\n", argv[i]); + } + return 0; + } +Code blocks ignore all documentation formatting. + +References +---------- +References to other pieces of documentation may be inserted using this syntax: +* `[[doc-syntax]]` displays as [[doc-syntax]] and links to `doc-syntax.txt` +* `[[Documentation syntax|doc-syntax]]` displays as [[Documentation syntax|doc-syntax]] and links to `doc-syntax.txt` +* `[[doc-syntax]]-document` displays as [[doc-syntax]]-document and links to `doc-syntax.txt` + diff --git a/docs/memory-management.txt b/docs/memory-management.txt new file mode 100644 index 0000000..d5c8159 --- /dev/null +++ b/docs/memory-management.txt @@ -0,0 +1,20 @@ +Memory Management +================= + +Memory management is split into three layers: physical, virtual & the heap. + +The **physical memory manager** (PMM) is responsible for allocating physical +memory. It gives `pmm_*` functions. The `pmm_allocPage()` function allocates a +4kB page frame and retuns its **physical address**. + +The **virtual memory manager** (VMM) is responsible for allocating virtual +memory. It provides `vmm_*` functions. The `vmm_alloc()` function takes in a +number of 4kB pages to allocate and returns the **virtual address** of the +first page. Userspace can interface with the VMM using the `mmap()` and +`munmap()` syscalls. + +**The heap** is an area of memory that both kernel and user space have. +Kernel space uses the `kalloc()` and it's derivative functions for the heap. +User space may use the `brk()` and `sbrk()` syscalls to grow and shrink the +heap. +