<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML ><HEAD ><TITLE >kmem_cache_create</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="The Linux Kernel API" HREF="book1.html"><LINK REL="UP" TITLE="The Slab Cache" HREF="c2455.html#AEN2457"><LINK REL="PREVIOUS" TITLE="Memory Management in Linux" HREF="c2455.html"><LINK REL="NEXT" TITLE="kmem_cache_shrink" HREF="r2532.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >The Linux Kernel API</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="c2455.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="r2532.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="AEN2459" ></A ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >kmem_cache_create</SPAN ></SPAN ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN2463" ></A ><H2 >Name</H2 >kmem_cache_create -- Create a cache. </DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN2466" ></A ><H2 >Synopsis</H2 ><DIV CLASS="FUNCSYNOPSIS" ><A NAME="AEN2468" ></A ><P ></P ><P ><CODE ><CODE CLASS="FUNCDEF" >kmem_cache_t * <TT CLASS="FUNCTION" >kmem_cache_create </TT ></CODE >(const char * <TT CLASS="PARAMETER" ><I >name</I ></TT >, size_t <TT CLASS="PARAMETER" ><I >size</I ></TT >, size_t <TT CLASS="PARAMETER" ><I >offset</I ></TT >, unsigned long <TT CLASS="PARAMETER" ><I >flags</I ></TT >, void (*<TT CLASS="PARAMETER" ><I >ctor</I ></TT >) (void*, kmem_cache_t *, unsigned long), void (*<TT CLASS="PARAMETER" ><I >dtor</I ></TT >) (void*, kmem_cache_t *, unsigned long));</CODE ></P ><P ></P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2486" ></A ><H2 >Arguments</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="PARAMETER" ><I >name</I ></TT ></DT ><DD ><P > A string which is used in /proc/slabinfo to identify this cache. </P ></DD ><DT ><TT CLASS="PARAMETER" ><I >size</I ></TT ></DT ><DD ><P > The size of objects to be created in this cache. </P ></DD ><DT ><TT CLASS="PARAMETER" ><I >offset</I ></TT ></DT ><DD ><P > The offset to use within the page. </P ></DD ><DT ><TT CLASS="PARAMETER" ><I >flags</I ></TT ></DT ><DD ><P > SLAB flags </P ></DD ><DT ><TT CLASS="PARAMETER" ><I >ctor</I ></TT ></DT ><DD ><P > A constructor for the objects. </P ></DD ><DT ><TT CLASS="PARAMETER" ><I >dtor</I ></TT ></DT ><DD ><P > A destructor for the objects. </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2519" ></A ><H2 >Description</H2 ><P > Returns a ptr to the cache on success, NULL on failure. Cannot be called within a int, but can be interrupted. The <TT CLASS="PARAMETER" ><I >ctor</I ></TT > is run when new pages are allocated by the cache and the <TT CLASS="PARAMETER" ><I >dtor</I ></TT > is run before the pages are handed back. The flags are </P ><P > <TT CLASS="CONSTANT" >SLAB_POISON</TT > - Poison the slab with a known test pattern (a5a5a5a5) to catch references to uninitialised memory. </P ><P > <TT CLASS="CONSTANT" >SLAB_RED_ZONE</TT > - Insert `Red' zones around the allocated memory to check for buffer overruns. </P ><P > <TT CLASS="CONSTANT" >SLAB_NO_REAP</TT > - Don't automatically reap this cache when we're under memory pressure. </P ><P > <TT CLASS="CONSTANT" >SLAB_HWCACHE_ALIGN</TT > - Align the objects in this cache to a hardware cacheline. This can be beneficial if you're counting cycles as closely as davem. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="c2455.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="r2532.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Memory Management in Linux</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c2455.html#AEN2457" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >kmem_cache_shrink</SPAN ></SPAN ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >