RTOS Context Switching
This post is going to be a deep-dive into how context switching works in my RTOS learning project. 90% of the code is going to be in ARM Assembly, so before we touch on anything else, below is a link to a “cheat sheet” of the ARM Assembly operations used in the context switching logic. It is by no means a comprehensive list, but it will be sufficient for understanding the assembly that is used in this context. ...
My First Contribution to Zig: Implementing insque() and remque()
I recently made my first contribution to the Zig programming language by implementing insque() and remque(), two doubly-linked list functions from the C standard library. What are insque and remque? These functions are used to insert and remove from queues built from doubly-linked lists, with the function signatures below: void insque(void *element, void *pred); void remque(void *element); Their implementations were surprisingly simple, just involving casting pointers into node structs and hooking up the new node to its neighbors or the opposite if removing, which is why I chose this to be my first contribution. ...