---
name: "kmem_cache_create"
section: "9"
platform: "linux"
package: "linux-manual-3.2"
version: "3.2.78-1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/kmem_cache_create"
---

# kmem\_cache\_create(9)

Create a cache.

## NAME

kmem\_cache\_create - Create a cache.

## SYNOPSIS

**struct kmem\_cache \* kmem\_cache\_create(const char \*** *name***, size\_t** *size***, size\_t** *align***, unsigned long** *flags***, void (\****ctor***) (void \*));**

## ARGUMENTS

*name*

A string which is used in /proc/slabinfo to identify this cache.

*size*

The size of objects to be created in this cache.

*align*

The required alignment for the objects.

*flags*

SLAB flags

*ctor*

A constructor for the objects.

## DESCRIPTION

Returns a ptr to the cache on success, NULL on failure. Cannot be called within a int, but can be interrupted. The *ctor* is run when new pages are allocated by the cache.

*name* must be valid until the cache is destroyed. This implies that the module calling this has to destroy the cache before getting unloaded.

The flags are

**SLAB\_POISON** - Poison the slab with a known test pattern (a5a5a5a5) to catch references to uninitialised memory.

**SLAB\_RED\_ZONE** - Insert \`Red' zones around the allocated memory to check for buffer overruns.

**SLAB\_HWCACHE\_ALIGN** - Align the objects in this cache to a hardware cacheline. This can be beneficial if you're counting cycles as closely as davem.

## COPYRIGHT
