# Credits and References This project has been influenced and inspired by other projects and resources. License information can be found in the [LICENSES.md](LICENSES.md) file. ## General - [OSDev Wiki](https://wiki.osdev.org/Main_Page) - [GCC x86 Built-in Functions](https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html#x86-Built-in-Functions) - [GCC Common Function Attributes](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes) - [LemonOS Project](https://github.com/LemonOSProject/LemonOS) - [ToaruOS](https://github.com/klange/toaruos) - [Various SIMD functions](https://wiki.osdev.org/User:01000101/optlib/) ## C++ STL - [cppreference.com](https://cppreference.com) ## Virtual terminal - [vtconsole](https://github.com/sleepy-monax/vtconsole) ## Font - [Tamsyn Font](http://www.fial.com/~scott/tamsyn-font/) ## CPU XCR0 Structure - [CPU Registers x86 - XCR0](https://wiki.osdev.org/CPU_Registers_x86#XCR0) ## CPUID 0x7 - [CPUID](https://en.wikipedia.org/wiki/CPUID) ## Network - [Beej's Guide to Network Programming](https://web.archive.org/web/20051210132103/http://users.pcnet.ro/dmoroian/beej/Beej.html) - [UDP Socket Programming](https://web.archive.org/web/20060229214053/http://www.cs.rutgers.edu/~pxk/417/notes/sockets/udp.html) - [EtherType](https://en.wikipedia.org/wiki/EtherType) - [Linux Network Packet Reception](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-network-packet-reception) - [Linux Kernel Networking Labs](https://linux-kernel-labs.github.io/refs/heads/master/labs/networking.html) - [smoltcp](https://github.com/smoltcp-rs/smoltcp) - [Understanding Linux Network Internals](https://www.cs.unh.edu/~cruse/cs326f04/RTL8139D_DataSheet.pdf) - [Address Resolution Protocol (ARP)](https://en.wikipedia.org/wiki/Address_Resolution_Protocol) - [C++ Operators](https://en.cppreference.com/w/cpp/language/operators) - [Dynamic Host Configuration Protocol (DHCP)](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) - [RTL8139 Programmer's Guide](https://www.cs.usfca.edu/~cruse/cs326f04/RTL8139_ProgrammersGuide.pdf) - [RTL8139CP Datasheet](http://realtek.info/pdf/rtl8139cp.pdf) - [IPv4](https://en.wikipedia.org/wiki/IPv4) - [ICMP Parameters](https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) ## Loading ELF Shared Libraries and Dynamic Linking - [How To Write Shared Libraries](https://www.akkadia.org/drepper/dsohowto.pdf) - [Dynamic Linker](https://wiki.osdev.org/Dynamic_Linker) - [Nightingale OS](https://github.com/tyler569/nightingale) - [PLT and GOT: The Key to Code Sharing and Dynamic Libraries](https://www.technovelty.org/linux/plt-and-got-the-key-to-code-sharing-and-dynamic-libraries.html) - [YouTube Video on Dynamic Linking](https://www.youtube.com/watch?v=kUk5pw4w0h4) - [Oracle: Position Independent Code](https://docs.oracle.com/cd/E19683-01/817-3677/chapter6-42444/index.html) - [PLT and GOT Explained](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt_and_got) ## Inter-Process Communication (IPC) - [Oracle IPC](https://docs.oracle.com/cd/E19048-01/chorus5/806-6897/architecture-103/index.html) - [Inter-Process Communication in OS](https://www.scaler.com/topics/operating-system/inter-process-communication-in-os/) - [IPC on Wikipedia](https://en.wikipedia.org/wiki/Inter-process_communication) - [GeeksforGeeks IPC Guide](https://www.geeksforgeeks.org/inter-process-communication-ipc/) ## PCI (Peripheral Component Interconnect) - [OSDev PCI](https://wiki.osdev.org/PCI) - [PCI Configuration Space](https://en.wikipedia.org/wiki/PCI_configuration_space) ## Audio - [FFmpeg Audio Types](https://trac.ffmpeg.org/wiki/audio%20types) - [AC97 on OSDev](https://wiki.osdev.org/AC97) - [AC97 Revision 2.3 Specification](https://inst.eecs.berkeley.edu//~cs150/Documents/ac97_r23.pdf) ## Intrinsics (x86) - [Microsoft x86 Intrinsics](https://learn.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list) - [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html) ## CPUID Information - [AMD CPUID Instruction](https://www.amd.com/system/files/TechDocs/40332.pdf) - [CPUID Instruction Note](https://www.scss.tcd.ie/~jones/CS4021/processor-identification-cpuid-instruction-note.pdf) ## SMBIOS (System Management BIOS) - [DMTF DSP0134](https://www.dmtf.org/dsp/DSP0134) - [DSP0134 Version 3.6.0](https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf) - [OSDev SMBIOS](https://wiki.osdev.org/System_Management_BIOS) ## EDBA (Effective Direct Bus Access) - [Memory Map (x86)](https://wiki.osdev.org/Memory_Map_(x86)) ## UMIP, SMAP, and SMEP - [Control Register on Wikipedia](https://en.wikipedia.org/wiki/Control_register) - [Control Register and UMIP](https://web.archive.org/web/20160312223150/http://ncsi.com/nsatc11/presentations/wednesday/emerging_technologies/fischer.pdf) - [Supervisor Mode Access Prevention (SMEP)](https://en.wikipedia.org/wiki/Supervisor_Mode_Access_Prevention) ## Atomic Operations - [C++ Atomic Operations](https://en.cppreference.com/w/cpp/atomic/atomic) ## ELF (Executable and Linkable Format) - [ELF Header Format](https://www.sco.com/developers/gabi/latest/ch4.eheader.html) - [ELF File Format Specification](https://refspecs.linuxfoundation.org/elf/elf.pdf) - [Oracle: Executable and Linkable Format](https://docs.oracle.com/cd/E19683-01/817-3677/chapter6-42444/index.html) - [Oracle: ELF Program Headers](https://docs.oracle.com/cd/E19683-01/816-1386/chapter6-83432/index.html) - [YouTube Video on ELF](https://www.youtube.com/watch?v=nC1U1LJQL8o) - [Stevens' UNIX Network Programming](https://stevens.netmeister.org/631/elf.html) - [Linux Kernel ELF Header](https://github.com/torvalds/linux/blob/master/include/uapi/linux/elf.h) ## C++ ABI (Application Binary Interface) - [GCC libstdc++ Source](https://github.com/gcc-mirror/gcc/tree/master/libstdc%2B%2B-v3) - [Itanium C++ ABI](https://itanium-cxx-abi.github.io/cxx-abi/abi.html) ## signal.h - [POSIX signal.h](https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html) - [Linux signal(7) Manual](https://man7.org/linux/man-pages/man7/signal.7.html) ## PS/2 - [Scan Codes](https://www.win.tue.nl/~aeb/linux/kbd/scancodes-11.html) - [PS/2 Keyboard on OSDev](https://wiki.osdev.org/PS2_Keyboard) - [PS/2 Mouse on OSDev](https://wiki.osdev.org/PS2_Mouse) - [Mouse Input on OSDev](https://wiki.osdev.org/Mouse_Input) - [I/O Ports on OSDev](https://wiki.osdev.org/I/O_ports) - [PS/2 Controller on OSDev](https://wiki.osdev.org/%228042%22_PS/2_Controller) - [AIP on OSDev](https://wiki.osdev.org/Advanced_Integrated_Peripheral) ## UART - [Interfacing the Serial / RS232 Port V5.0](http://www.senet.com.au/~cpeacock) --- Special thanks to all contributors and the creators of the referenced projects and resources!