custom-allocators
Custom allocator skill for memory allocation strategies. Use when implementing…
Kernel memory management skill for Linux mm subsystem. Use when using kmalloc, vmalloc, page allocator, SLUB, or debugging OOM and memory zones. Activates on queries about buddy allocator, kmalloc sizes, vmalloc vs kmalloc, SLUB, memory zones, or kernel OOM.
$ npx -y skills add mohitmishra786/low-level-dev-skills --skill kernel-memory-management --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/kernel-memory-managementContext preview
The summary Claude sees to decide when to auto-load this skill.
Kernel memory management skill for Linux mm subsystem. Use when using kmalloc, vmalloc, page allocator, SLUB, or debugging OOM and memory zones. Activates on queries about buddy allocator, kmalloc sizes, vmalloc vs kmalloc, SLUB, memory zones, or kernel OOM.
name: kernel-memory-management description: Kernel memory management skill for Linux mm subsystem. Use when using kmalloc, vmalloc, page allocator, SLUB, or debugging OOM and memory zones. Activates on queries about buddy allocator, kmalloc sizes, vmalloc vs kmalloc, SLUB, memory zones, or kernel OOM.
Guide agents through Linux kernel memory allocation: physical page allocator (buddy), SLUB kmalloc caches, vmalloc virtual mappings, zones (DMA/Normal), and safe allocation patterns in drivers — extending `skills/kernel/kernel-internals`.
Need physically contiguous memory for DMA?
├── Yes → dma_alloc_coherent() or CMA pool
└── No
├── Size ≤ ~128K (arch-dependent) → kmalloc / kzalloc
├── Large or non-contiguous OK → vmalloc / vzalloc
└── Whole pages → alloc_pages() / __get_free_pages()SLUB is the default general-purpose kmalloc backend (per [kernel memory allocation guide](https://docs.kernel.org/core-api/memory-allocation.html)); the legacy SLAB allocator was removed in Linux 6.12.
void *buf = kmalloc(size, GFP_KERNEL);
if (!buf)
return -ENOMEM;
/* ... */
kfree(buf);| GFP flag | Context | |----------|---------| | `GFP_KERNEL` | Process context, may sleep | | `GFP_ATOMIC` | IRQ / holding spinlock — smaller pools | | `GFP_DMA` | DMA zone (legacy 32-bit devices) |
Check `/proc/slabinfo` and `cat /sys/kernel/slab/*/object_size`.
void *v = vmalloc(size); /* virtually contiguous, physically scattered */ vfree(v);
Use for large buffers where contiguous physical pages are unnecessary. Do not use for DMA without `dma_map_*`.
struct page *page = alloc_pages(GFP_KERNEL, order); void *addr = page_address(page); __free_pages(page, order);
`order` n allocates `2^n` pages. Zone selection: `ZONE_DMA`, `ZONE_NORMAL`, `ZONE_MOVABLE` (see `include/linux/mmzone.h`).
On NUMA systems, `kmalloc` prefers local node; use `alloc_pages_node()` or `mbind` policies for HPC paths — see `skills/allocators/numa-programming`.
cat /proc/meminfo cat /proc/slabinfo dmesg | grep -i oom
Kernel config: `CONFIG_SLUB_DEBUG`, `CONFIG_KASAN` for use-after-free.
/kernel-memory-management Choose allocator for 2 MiB driver ring buffer in process context
| Symptom | Cause | Fix | |---------|-------|-----| | `kmalloc` fails large | Exceeds kmalloc limit | Use `vmalloc` or pages | | DMA buffer wrong | Used `vmalloc` for HW DMA | `dma_alloc_coherent` | | OOM killer | Unbounded cache growth | Limit pools; use shrinker | | Slab corruption | Use-after-free | KASAN; audit `kfree` pairing | | `GFP_KERNEL` in IRQ | Sleeping allocator in atomic | `GFP_ATOMIC` |
A curated suite of AI agent skills for systems and low-level programming — C/C++, Rust, Zig, GPU, bare-metal firmware, Linux kernel/driver development, computer architecture, compiler internals, HPC, and more.
Repo: mohitmishra786/low-level-dev-skills
Custom allocator skill for memory allocation strategies. Use when implementing…
NUMA programming skill for multi-socket memory locality. Use when detecting NUMA topology,…
AF_XDP skill for high-performance XDP sockets. Use when creating AF_XDP sockets, configuring…
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers,…
io_uring skill for Linux async I/O. Use when building high-performance servers with liburing,…
Bare-metal ADC and DAC skill. Use when configuring analog sampling, DMA-driven ADC,…