This repository hosts some modular, drop-in, C utilities that you can copy into your project and and kick-start your work.
The following methods/utils are available in this repo:
- arg_parser - Command line argument parsing helper
- bus_server - A broadcasting IPC server for connected clients
- channel - A Communication protocol (uart, msgq, tcp, etc.,) abstraction layer
- circbuf - Generic, lock-free, circular/ring buffer implementation
- disjoint_set - Disjoint-set library
- event - Event notifier for multi-threaded applications
- fdutils - Collection of operations that are commonly performed on unix file descriptors
- file - Collection of methods that operate on directories, files and paths
- filo - First-In Last-Out (stack) implementation
- hashmap - Hashmap/dictionary/map library
- list - Singly and doubly linked list data library
- logger - Logging module for C applications with log-levels, colors, and log-to-file features
- memory - Do-or-die helper methods that allow use of mallloc/calloc/strdups without NULL checks
- procutils - Linux process manipulation utilities
- queue - Last-in First-out (queue) implementation
- serial - Library to interact with uart devices
- slab - Poor man's slab allocator for dynamic memory without using heap
- sockutils - Collection of methods that operate on sockets
- stack - Stack implementation using linked lists
- strlib - A string_t type and some common methods that operate on them
- strutils - Commonly used C string utils
- utils - Other ad-hoc methods that don't fit anywhere else
- workqueue - Worker thread library that waits for a job to execute
You can clone this repo and copy individual files from src/ and link it to your project.