/**
@mainpage
@anchor static_memory
@brief @copybrief iot_static_memory.h <br><br>

The static memory component manages statically-allocated buffers for other libraries that are used instead of dynamic memory allocation when @ref IOT_STATIC_MEMORY_ONLY is `1`. Using static memory only <b>does not guarantee that memory allocation will always succeed</b>; it's possible for all statically-allocated buffers to be in-use. However, static memory only <b>can guarantee the availability of <i>at least</i> a certain amount of resources</b>. Because space must be reserved for statically-allocated buffers, binaries compiled with static memory only will be larger.

This component primarily provides functions for libraries to manage static buffers, @ref static_memory_function_findfree and @ref static_memory_function_returninuse. By itself it provides "message buffers", intended to hold strings, such as log messages or bytes transmitted over a network.

@dependencies{static_memory,static memory component}
@dot "Static memory direct dependencies"
digraph static_memory_dependencies
{
    node[shape=box, fontname=Helvetica, fontsize=10, style=filled];
    static_memory[label="Static memory", fillcolor="#aed8a9ff"];
    subgraph
    {
        rank = same;
        platform_threads[label="Thread management", fillcolor="#e89025ff", URL="@ref platform_threads"];
        standard_library[label="Standard library\nstdbool, stddef, string", fillcolor="#d15555ff"];
    }
    static_memory -> platform_threads;
    static_memory -> standard_library;
}
@enddot
*/

/**
@configpage{static_memory,statically-allocated buffer pools}

@section IOT_MESSAGE_BUFFERS
@brief The number of statically-allocated message buffers. This setting has no effect if @ref IOT_STATIC_MEMORY_ONLY is `0`.

Message buffers are fixed-size buffers used for strings, such as log messages or bytes transmitted over a network. Their size and number can be configured with the constants @ref IOT_MESSAGE_BUFFERS (number) and @ref IOT_MESSAGE_BUFFER_SIZE (size of each message buffer). Message buffers may be used by any library, and are analogous to the generic buffers allocated by [malloc](http://pubs.opengroup.org/onlinepubs/9699919799/functions/malloc.html) (though all message buffers are the same size).

@configpossible Any positive integer. <br>
@configdefault `8`

@section IOT_MESSAGE_BUFFER_SIZE
@brief The size (in bytes) of each statically-allocated message buffer. This setting has no effect if @ref IOT_STATIC_MEMORY_ONLY is `0`.

@configpossible Any positive integer. <br>
@configdefault `1024`
*/
