this whole process is quite complicated because the kernel can't allocate during IRQs. so we preallocate a ring buffer per UART, and fill it up as data comes in, then deblock the driver process. implementing the buffers so they can be written from one thread and read from another is quite tricky!
Mastodon is a server for a federated social network: everyone can run a server if they want to, including me. So this is a Mastodon server for me (Vierkantor) and my friends.