johnsonjh/duma

View on GitHub
Attic/kduma/docs/files/kduma-c.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

<html>
  <head>
    <title>C:\projects\duma\kduma\kduma.c</title>
    <link rel="stylesheet" type="text/css" href="../styles/main.css" />
    <script language="JavaScript" src="../javascript/main.js"></script>
  </head>
  <body class="UnframedPage" onLoad="NDOnLoad()">
    <script language="JavaScript">
      <!--
      if (browserType) {
        document.write("<div class=" + browserType + ">");
        if (browserVer) {
          document.write("<div class=" + browserVer + ">");
        }
      } // -->
    </script>

    <!--  Generated by Natural Docs, version 1.35 -->
    <!--  http://www.naturaldocs.org  -->

    <!-- saved from url=(0026)http://www.naturaldocs.org -->

    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr>
        <td class="MenuSection" valign="top">
          <!--START_ND_MENU-->
          <div class="MEntry">
            <div class="MFile"><a href="README-txt.html">00README</a></div>
          </div>
          <div class="MEntry">
            <div class="MFile">
              <a href="duma_config-h.html">duma_config.h</a>
            </div>
          </div>
          <div class="MEntry">
            <div class="MFile" id="MSelected">kduma.c</div>
          </div>
          <div class="MEntry">
            <div class="MFile"><a href="kduma-h.html">kduma.h</a></div>
          </div>
          <div class="MEntry">
            <div class="MFile"><a href="log-h.html">log.h</a></div>
          </div>
          <div class="MEntry">
            <div class="MFile"><a href="paging-h.html">paging.h</a></div>
          </div>
          <div class="MEntry">
            <div class="MGroup">
              <a href="javascript:ToggleMenu('MGroupContent1')">Index</a>
              <div class="MGroupContent" id="MGroupContent1">
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/General.html">Everything</a>
                  </div>
                </div>
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/Classes.html">Classes</a>
                  </div>
                </div>
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/Files.html">Files</a>
                  </div>
                </div>
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/Functions.html">Functions</a>
                  </div>
                </div>
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/Types.html">Types</a>
                  </div>
                </div>
                <div class="MEntry">
                  <div class="MIndex">
                    <a href="../index/Variables.html">Variables</a>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <!--END_ND_MENU-->
        </td>

        <td class="ContentSection" valign="top">
          <div class="CFile" id="MainTopic">
            <div class="CTopic">
              <h1 class="CTitle"><a name="kduma.c"></a>kduma.c</h1>
              <div class="CBody">
                <!--START_ND_SUMMARY-->
                <div class="Summary">
                  <div class="STitle">Summary</div>
                  <div class="SBorder">
                    <table
                      border="0"
                      cellspacing="0"
                      cellpadding="0"
                      class="STable"
                    >
                      <tr>
                        <td class="SEntrySize">
                          <div class="SMain">
                            <div class="SEntry">
                              <a href="#kduma.c">kduma.c</a>
                            </div>
                          </div>
                        </td>
                        <td class="SDescriptionSize">
                          <div class="SMain">
                            <div class="SDescription"></div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SGroup">
                            <div class="SEntry">
                              <a href="#Variables">Variables</a>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SGroup">
                            <div class="SDescription"></div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#version"
                                  id="link1"
                                  onMouseOver="ShowTip(event, 'tt1', 'link1')"
                                  onMouseOut="HideTip('tt1')"
                                  >version</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">KDUMA version string</div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#MEMORY_CREATION_SIZE"
                                  >MEMORY_CREATION_SIZE</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                MEMORY_CREATION_SIZE is the amount of memory to
                                get from the operating system at one time.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SGroup">
                            <div class="SEntry">
                              <a href="#Enumerations">Enumerations</a>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SGroup">
                            <div class="SDescription"></div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SEnumeration">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_SlotState">_DUMA_SlotState</a>
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SEnumeration">
                            <div class="SDescription">
                              <div class="SIndent1">
                                State of slot values (empty, free, etc)
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SEnumeration">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_Slot_FileSource"
                                  >_DUMA_Slot_FileSource</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SEnumeration">
                            <div class="SDescription">
                              <div class="SIndent1">
                                Where did we get file info
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SEnumeration">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_InitState">_DUMA_InitState</a>
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SEnumeration">
                            <div class="SDescription">
                              <div class="SIndent1">
                                Whats are initialization start
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SEnumeration">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_MemRegion">_DUMA_MemRegion</a>
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SEnumeration">
                            <div class="SDescription">
                              <div class="SIndent1">Memory region of slot.</div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SClass">
                            <div class="SEntry">
                              <a href="#_DUMA_Slot">_DUMA_Slot</a>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SClass">
                            <div class="SDescription">
                              Struct Slot contains all of the information about
                              a malloc buffer except for the contents of its
                              memory.
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SGroup">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_Slot.Variables">Variables</a>
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SGroup">
                            <div class="SDescription">
                              <div class="SIndent1"></div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_ALIGNMENT"
                                  id="link2"
                                  onMouseOver="ShowTip(event, 'tt2', 'link2')"
                                  onMouseOut="HideTip('tt2')"
                                  >DUMA_ALIGNMENT</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_ALIGNMENT is a global variable used to
                                control the default alignment of buffers
                                returned by malloc(), calloc(), and realloc().
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_PROTECT_BELOW"
                                  id="link3"
                                  onMouseOver="ShowTip(event, 'tt3', 'link3')"
                                  onMouseOut="HideTip('tt3')"
                                  >DUMA_PROTECT_BELOW</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_PROTECT_BELOW is used to modify the
                                behavior of the allocator.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_FILL"
                                  id="link4"
                                  onMouseOver="ShowTip(event, 'tt4', 'link4')"
                                  onMouseOut="HideTip('tt4')"
                                  >DUMA_FILL</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_FILL is set to 0-255 if DUMA should fill
                                all new allocated memory with the specified
                                value.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_SLACKFILL"
                                  id="link5"
                                  onMouseOver="ShowTip(event, 'tt5', 'link5')"
                                  onMouseOut="HideTip('tt5')"
                                  >DUMA_SLACKFILL</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_SLACKFILL is set to 0-255.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_PROTECT_FREE"
                                  id="link6"
                                  onMouseOver="ShowTip(event, 'tt6', 'link6')"
                                  onMouseOut="HideTip('tt6')"
                                  >DUMA_PROTECT_FREE</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_PROTECT_FREE is used to control the
                                disposition of memory that is released using
                                free().
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_MAX_ALLOC"
                                  id="link7"
                                  onMouseOver="ShowTip(event, 'tt7', 'link7')"
                                  onMouseOut="HideTip('tt7')"
                                  >DUMA_MAX_ALLOC</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_MAX_ALLOC is used to control the maximum
                                memory print of the program in total: When the
                                sum of allocated and protected memory would
                                exceed this value in kB, the protected memory is
                                freed/deleted.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_ALLOW_MALLOC_0"
                                  id="link8"
                                  onMouseOver="ShowTip(event, 'tt8', 'link8')"
                                  onMouseOut="HideTip('tt8')"
                                  >DUMA_ALLOW_MALLOC_0</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_ALLOW_MALLOC_0 is set if DUMA is to allow
                                malloc(0).
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_MALLOC_FAILEXIT"
                                  id="link9"
                                  onMouseOver="ShowTip(event, 'tt9', 'link9')"
                                  onMouseOut="HideTip('tt9')"
                                  >DUMA_MALLOC_FAILEXIT</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_MALLOC_FAILEXIT controls the behaviour of
                                DUMA when malloc() fails and would return NULL.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_FREE_ACCESS"
                                  id="link10"
                                  onMouseOver="ShowTip(event, 'tt10', 'link10')"
                                  onMouseOut="HideTip('tt10')"
                                  >DUMA_FREE_ACCESS</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_FREE_ACCESS is set if DUMA is to write
                                access memory before freeing it.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.DUMA_SHOW_ALLOC"
                                  id="link11"
                                  onMouseOver="ShowTip(event, 'tt11', 'link11')"
                                  onMouseOut="HideTip('tt11')"
                                  >DUMA_SHOW_ALLOC</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                DUMA_SHOW_ALLOC is set if DUMA is to print all
                                allocations and deallocations to the console.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_allocList"
                                  id="link12"
                                  onMouseOver="ShowTip(event, 'tt12', 'link12')"
                                  onMouseOut="HideTip('tt12')"
                                  >_duma_allocList</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                _DUMA_allocList points to the array of slot
                                structures used to manage the malloc arena.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_allocListSize"
                                  id="link13"
                                  onMouseOver="ShowTip(event, 'tt13', 'link13')"
                                  onMouseOut="HideTip('tt13')"
                                  >_duma_allocListSize</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                _duma_allocListSize is the size of the
                                allocation list.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.slotCount"
                                  id="link14"
                                  onMouseOver="ShowTip(event, 'tt14', 'link14')"
                                  onMouseOut="HideTip('tt14')"
                                  >slotCount</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                slotCount is the number of Slot structures in
                                allocationList.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.unUsedSlots"
                                  id="link15"
                                  onMouseOver="ShowTip(event, 'tt15', 'link15')"
                                  onMouseOut="HideTip('tt15')"
                                  >unUsedSlots</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                unUsedSlots is the number of Slot structures
                                that are currently available to represent new
                                malloc buffers.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.slotsPerPage"
                                  id="link16"
                                  onMouseOver="ShowTip(event, 'tt16', 'link16')"
                                  onMouseOut="HideTip('tt16')"
                                  >slotsPerPage</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                slotsPerPage is the number of slot structures
                                that fit in a virtual memory page.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.sumAllocatedMem"
                                  id="link17"
                                  onMouseOver="ShowTip(event, 'tt17', 'link17')"
                                  onMouseOut="HideTip('tt17')"
                                  >sumAllocatedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: sum of allocated -freed
                                +protected memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.sumTotalAllocatedMem"
                                  id="link18"
                                  onMouseOver="ShowTip(event, 'tt18', 'link18')"
                                  onMouseOut="HideTip('tt18')"
                                  >sumTotalAllocatedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: sum of allocated memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.sumProtectedMem"
                                  id="link19"
                                  onMouseOver="ShowTip(event, 'tt19', 'link19')"
                                  onMouseOut="HideTip('tt19')"
                                  >sumProtectedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: sum of protected memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.numDeallocs"
                                  id="link20"
                                  onMouseOver="ShowTip(event, 'tt20', 'link20')"
                                  onMouseOut="HideTip('tt20')"
                                  >numDeallocs</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: number of deallocations
                                processed so far
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.numAllocs"
                                  id="link21"
                                  onMouseOver="ShowTip(event, 'tt21', 'link21')"
                                  onMouseOut="HideTip('tt21')"
                                  >numAllocs</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: number of allocations
                                processed so far
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a href="#_DUMA_Slot.duma_init_done"
                                  >duma_init_done</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent2">
                                internal variable: state of initialization
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SGroup">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_Slot.Functions">Functions</a>
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SGroup">
                            <div class="SDescription">
                              <div class="SIndent1"></div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_assert"
                                  id="link22"
                                  onMouseOver="ShowTip(event, 'tt22', 'link22')"
                                  onMouseOut="HideTip('tt22')"
                                  >_duma_assert</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                Print message and halt program execution in
                                crazy way.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.duma_init"
                                  id="link23"
                                  onMouseOver="ShowTip(event, 'tt23', 'link23')"
                                  onMouseOut="HideTip('tt23')"
                                  >duma_init</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                duma_init sets configuration settings.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_init"
                                  id="link24"
                                  onMouseOver="ShowTip(event, 'tt24', 'link24')"
                                  onMouseOut="HideTip('tt24')"
                                  >_duma_init</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                _duma_init sets up the memory allocation arena
                                and the run-time configuration information.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot.allocateMoreSlots"
                                  id="link25"
                                  onMouseOver="ShowTip(event, 'tt25', 'link25')"
                                  onMouseOut="HideTip('tt25')"
                                  >allocateMoreSlots</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                allocateMoreSlots is called when there are only
                                enough slot structures left to support the
                                allocation of a single malloc buffer.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_allocate"
                                  id="link26"
                                  onMouseOver="ShowTip(event, 'tt26', 'link26')"
                                  onMouseOut="HideTip('tt26')"
                                  >_duma_allocate</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                This is the memory allocator.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_deallocate"
                                  id="link27"
                                  onMouseOver="ShowTip(event, 'tt27', 'link27')"
                                  onMouseOut="HideTip('tt27')"
                                  >_duma_deallocate</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">
                                Deallocate allocated memory after running some
                                checks, then open slot for use.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent2">
                                <a
                                  href="#_DUMA_Slot._duma_kmalloc"
                                  id="link28"
                                  onMouseOver="ShowTip(event, 'tt28', 'link28')"
                                  onMouseOut="HideTip('tt28')"
                                  >_duma_kmalloc</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent2">A version of kmalloc.</div>
                            </div>
                          </div>
                        </td>
                      </tr>
                    </table>
                  </div>
                </div>
                <!--END_ND_SUMMARY-->
              </div>
            </div>
          </div>

          <div class="CGroup">
            <div class="CTopic">
              <h3 class="CTitle"><a name="Variables"></a>Variables</h3>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle"><a name="version"></a>version</h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static const char version[]</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">KDUMA version string</p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="MEMORY_CREATION_SIZE"></a>MEMORY_CREATION_SIZE
              </h3>
              <div class="CBody">
                <p class="CParagraph">
                  MEMORY_CREATION_SIZE is the amount of memory to get from the
                  operating system at one time.&nbsp; We&rsquo;ll break that
                  memory down into smaller pieces for malloc buffers.&nbsp; One
                  megabyte is probably a good value.
                </p>
              </div>
            </div>
          </div>

          <div class="CGroup">
            <div class="CTopic">
              <h3 class="CTitle"><a name="Enumerations"></a>Enumerations</h3>
            </div>
          </div>

          <div class="CEnumeration">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_SlotState"></a>_DUMA_SlotState
              </h3>
              <div class="CBody">
                <p class="CParagraph">
                  State of slot values (empty, free, etc)
                </p>
              </div>
            </div>
          </div>

          <div class="CEnumeration">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot_FileSource"></a>_DUMA_Slot_FileSource
              </h3>
              <div class="CBody">
                <p class="CParagraph">Where did we get file info</p>
              </div>
            </div>
          </div>

          <div class="CEnumeration">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_InitState"></a>_DUMA_InitState
              </h3>
              <div class="CBody">
                <p class="CParagraph">Whats are initialization start</p>
              </div>
            </div>
          </div>

          <div class="CEnumeration">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_MemRegion"></a>_DUMA_MemRegion
              </h3>
              <div class="CBody">
                <p class="CParagraph">
                  Memory region of slot.&nbsp; Really we should only hang onto
                  NORMAL memory.&nbsp; DMA should be released fast.
                </p>
              </div>
            </div>
          </div>

          <div class="CClass">
            <div class="CTopic">
              <h2 class="CTitle"><a name="_DUMA_Slot"></a>_DUMA_Slot</h2>
              <div class="CBody">
                <p class="CParagraph">
                  Struct Slot contains all of the information about a malloc
                  buffer except for the contents of its memory.
                </p>
                <!--START_ND_SUMMARY-->
                <div class="Summary">
                  <div class="STitle">Summary</div>
                  <div class="SBorder">
                    <table
                      border="0"
                      cellspacing="0"
                      cellpadding="0"
                      class="STable"
                    >
                      <tr>
                        <td class="SEntrySize">
                          <div class="SGroup">
                            <div class="SEntry">
                              <a href="#_DUMA_Slot.Variables">Variables</a>
                            </div>
                          </div>
                        </td>
                        <td class="SDescriptionSize">
                          <div class="SGroup">
                            <div class="SDescription"></div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_ALIGNMENT"
                                  id="link29"
                                  onMouseOver="ShowTip(event, 'tt2', 'link29')"
                                  onMouseOut="HideTip('tt2')"
                                  >DUMA_ALIGNMENT</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_ALIGNMENT is a global variable used to
                                control the default alignment of buffers
                                returned by malloc(), calloc(), and realloc().
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_PROTECT_BELOW"
                                  id="link30"
                                  onMouseOver="ShowTip(event, 'tt3', 'link30')"
                                  onMouseOut="HideTip('tt3')"
                                  >DUMA_PROTECT_BELOW</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_PROTECT_BELOW is used to modify the
                                behavior of the allocator.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_FILL"
                                  id="link31"
                                  onMouseOver="ShowTip(event, 'tt4', 'link31')"
                                  onMouseOut="HideTip('tt4')"
                                  >DUMA_FILL</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_FILL is set to 0-255 if DUMA should fill
                                all new allocated memory with the specified
                                value.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_SLACKFILL"
                                  id="link32"
                                  onMouseOver="ShowTip(event, 'tt5', 'link32')"
                                  onMouseOut="HideTip('tt5')"
                                  >DUMA_SLACKFILL</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_SLACKFILL is set to 0-255.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_PROTECT_FREE"
                                  id="link33"
                                  onMouseOver="ShowTip(event, 'tt6', 'link33')"
                                  onMouseOut="HideTip('tt6')"
                                  >DUMA_PROTECT_FREE</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_PROTECT_FREE is used to control the
                                disposition of memory that is released using
                                free().
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_MAX_ALLOC"
                                  id="link34"
                                  onMouseOver="ShowTip(event, 'tt7', 'link34')"
                                  onMouseOut="HideTip('tt7')"
                                  >DUMA_MAX_ALLOC</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_MAX_ALLOC is used to control the maximum
                                memory print of the program in total: When the
                                sum of allocated and protected memory would
                                exceed this value in kB, the protected memory is
                                freed/deleted.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_ALLOW_MALLOC_0"
                                  id="link35"
                                  onMouseOver="ShowTip(event, 'tt8', 'link35')"
                                  onMouseOut="HideTip('tt8')"
                                  >DUMA_ALLOW_MALLOC_0</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_ALLOW_MALLOC_0 is set if DUMA is to allow
                                malloc(0).
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_MALLOC_FAILEXIT"
                                  id="link36"
                                  onMouseOver="ShowTip(event, 'tt9', 'link36')"
                                  onMouseOut="HideTip('tt9')"
                                  >DUMA_MALLOC_FAILEXIT</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_MALLOC_FAILEXIT controls the behaviour of
                                DUMA when malloc() fails and would return NULL.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_FREE_ACCESS"
                                  id="link37"
                                  onMouseOver="ShowTip(event, 'tt10', 'link37')"
                                  onMouseOut="HideTip('tt10')"
                                  >DUMA_FREE_ACCESS</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_FREE_ACCESS is set if DUMA is to write
                                access memory before freeing it.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.DUMA_SHOW_ALLOC"
                                  id="link38"
                                  onMouseOver="ShowTip(event, 'tt11', 'link38')"
                                  onMouseOut="HideTip('tt11')"
                                  >DUMA_SHOW_ALLOC</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                DUMA_SHOW_ALLOC is set if DUMA is to print all
                                allocations and deallocations to the console.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_allocList"
                                  id="link39"
                                  onMouseOver="ShowTip(event, 'tt12', 'link39')"
                                  onMouseOut="HideTip('tt12')"
                                  >_duma_allocList</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                _DUMA_allocList points to the array of slot
                                structures used to manage the malloc arena.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_allocListSize"
                                  id="link40"
                                  onMouseOver="ShowTip(event, 'tt13', 'link40')"
                                  onMouseOut="HideTip('tt13')"
                                  >_duma_allocListSize</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                _duma_allocListSize is the size of the
                                allocation list.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.slotCount"
                                  id="link41"
                                  onMouseOver="ShowTip(event, 'tt14', 'link41')"
                                  onMouseOut="HideTip('tt14')"
                                  >slotCount</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                slotCount is the number of Slot structures in
                                allocationList.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.unUsedSlots"
                                  id="link42"
                                  onMouseOver="ShowTip(event, 'tt15', 'link42')"
                                  onMouseOut="HideTip('tt15')"
                                  >unUsedSlots</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                unUsedSlots is the number of Slot structures
                                that are currently available to represent new
                                malloc buffers.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.slotsPerPage"
                                  id="link43"
                                  onMouseOver="ShowTip(event, 'tt16', 'link43')"
                                  onMouseOut="HideTip('tt16')"
                                  >slotsPerPage</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                slotsPerPage is the number of slot structures
                                that fit in a virtual memory page.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.sumAllocatedMem"
                                  id="link44"
                                  onMouseOver="ShowTip(event, 'tt17', 'link44')"
                                  onMouseOut="HideTip('tt17')"
                                  >sumAllocatedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: sum of allocated -freed
                                +protected memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.sumTotalAllocatedMem"
                                  id="link45"
                                  onMouseOver="ShowTip(event, 'tt18', 'link45')"
                                  onMouseOut="HideTip('tt18')"
                                  >sumTotalAllocatedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: sum of allocated memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.sumProtectedMem"
                                  id="link46"
                                  onMouseOver="ShowTip(event, 'tt19', 'link46')"
                                  onMouseOut="HideTip('tt19')"
                                  >sumProtectedMem</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: sum of protected memory in kB
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.numDeallocs"
                                  id="link47"
                                  onMouseOver="ShowTip(event, 'tt20', 'link47')"
                                  onMouseOut="HideTip('tt20')"
                                  >numDeallocs</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: number of deallocations
                                processed so far
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.numAllocs"
                                  id="link48"
                                  onMouseOver="ShowTip(event, 'tt21', 'link48')"
                                  onMouseOut="HideTip('tt21')"
                                  >numAllocs</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: number of allocations
                                processed so far
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SVariable">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a href="#_DUMA_Slot.duma_init_done"
                                  >duma_init_done</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SVariable">
                            <div class="SDescription">
                              <div class="SIndent1">
                                internal variable: state of initialization
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SGroup">
                            <div class="SEntry">
                              <a href="#_DUMA_Slot.Functions">Functions</a>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SGroup">
                            <div class="SDescription"></div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_assert"
                                  id="link49"
                                  onMouseOver="ShowTip(event, 'tt22', 'link49')"
                                  onMouseOut="HideTip('tt22')"
                                  >_duma_assert</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                Print message and halt program execution in
                                crazy way.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.duma_init"
                                  id="link50"
                                  onMouseOver="ShowTip(event, 'tt23', 'link50')"
                                  onMouseOut="HideTip('tt23')"
                                  >duma_init</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                duma_init sets configuration settings.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_init"
                                  id="link51"
                                  onMouseOver="ShowTip(event, 'tt24', 'link51')"
                                  onMouseOut="HideTip('tt24')"
                                  >_duma_init</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                _duma_init sets up the memory allocation arena
                                and the run-time configuration information.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot.allocateMoreSlots"
                                  id="link52"
                                  onMouseOver="ShowTip(event, 'tt25', 'link52')"
                                  onMouseOut="HideTip('tt25')"
                                  >allocateMoreSlots</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                allocateMoreSlots is called when there are only
                                enough slot structures left to support the
                                allocation of a single malloc buffer.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_allocate"
                                  id="link53"
                                  onMouseOver="ShowTip(event, 'tt26', 'link53')"
                                  onMouseOut="HideTip('tt26')"
                                  >_duma_allocate</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                This is the memory allocator.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr>
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_deallocate"
                                  id="link54"
                                  onMouseOver="ShowTip(event, 'tt27', 'link54')"
                                  onMouseOut="HideTip('tt27')"
                                  >_duma_deallocate</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">
                                Deallocate allocated memory after running some
                                checks, then open slot for use.
                              </div>
                            </div>
                          </div>
                        </td>
                      </tr>
                      <tr class="SMarked">
                        <td>
                          <div class="SFunction">
                            <div class="SEntry">
                              <div class="SIndent1">
                                <a
                                  href="#_DUMA_Slot._duma_kmalloc"
                                  id="link55"
                                  onMouseOver="ShowTip(event, 'tt28', 'link55')"
                                  onMouseOut="HideTip('tt28')"
                                  >_duma_kmalloc</a
                                >
                              </div>
                            </div>
                          </div>
                        </td>
                        <td>
                          <div class="SFunction">
                            <div class="SDescription">
                              <div class="SIndent1">A version of kmalloc.</div>
                            </div>
                          </div>
                        </td>
                      </tr>
                    </table>
                  </div>
                </div>
                <!--END_ND_SUMMARY-->
              </div>
            </div>
          </div>

          <div class="CGroup">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.Variables"></a>Variables
              </h3>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_ALIGNMENT"></a>DUMA_ALIGNMENT
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>size_t DUMA_ALIGNMENT</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_ALIGNMENT is a global variable used to control the
                  default alignment of buffers returned by malloc(), calloc(),
                  and realloc().&nbsp; It is all-caps so that its name matches
                  the name of the environment variable that is used to set
                  it.&nbsp; This gives the programmer one less name to remember.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_PROTECT_BELOW"></a>DUMA_PROTECT_BELOW
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>int DUMA_PROTECT_BELOW</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_PROTECT_BELOW is used to modify the behavior of the
                  allocator.&nbsp; When its value is non-zero, the allocator
                  will place an inaccessable page immediately <u>before</u> the
                  malloc buffer in the address space, instead of
                  <u>after</u> it.&nbsp; Use this to detect malloc buffer
                  under-runs, rather than over-runs.&nbsp; It won&rsquo;t detect
                  both at the same time, so you should test your software twice,
                  once with this value clear, and once with it set.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_FILL"></a>DUMA_FILL
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>int DUMA_FILL</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_FILL is set to 0-255 if DUMA should fill all new
                  allocated memory with the specified value.&nbsp; Set to -1
                  when DUMA should not initialise allocated memory. default is
                  set to initialise with 255, cause many programs rely on
                  initialisation to 0!
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_SLACKFILL"></a>DUMA_SLACKFILL
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static int DUMA_SLACKFILL</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_SLACKFILL is set to 0-255.&nbsp; The slack / no mans land
                  of all new allocated memory is filled with the specified
                  value. default is set to initialise with 0xAA (=binary
                  10101010) initialisation to 0!
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_PROTECT_FREE"></a>DUMA_PROTECT_FREE
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long DUMA_PROTECT_FREE</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_PROTECT_FREE is used to control the disposition of memory
                  that is released using free().&nbsp; It is all-caps so that
                  its name matches the name of the environment variable that is
                  used to set it.&nbsp; If its value is non-zero, memory
                  released by free is made inaccessable.&nbsp; Any software that
                  touches free memory will then get a segmentation fault.&nbsp;
                  Depending on your application and your resources you may tell
                  DUMA not to use this memory ever again by setting a negative
                  value f.e.&nbsp; -1.&nbsp; You can tell DUMA to limit the sum
                  of protected memory by setting a positive value, which is
                  interpreted in kB.&nbsp; If its value is zero, freed memory
                  will be available for reallocation, but will still be
                  inaccessable until it is reallocated.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_MAX_ALLOC"></a>DUMA_MAX_ALLOC
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long DUMA_MAX_ALLOC</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_MAX_ALLOC is used to control the maximum memory print of
                  the program in total: When the sum of allocated and protected
                  memory would exceed this value in kB, the protected memory is
                  freed/deleted.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_ALLOW_MALLOC_0"></a>DUMA_ALLOW_MALLOC_0
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static int DUMA_ALLOW_MALLOC_0</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_ALLOW_MALLOC_0 is set if DUMA is to allow
                  malloc(0).&nbsp; I trap malloc(0) by default because it is a
                  common source of bugs.&nbsp; But you should know the
                  allocation with size 0 is ANSI conform.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_MALLOC_FAILEXIT"></a
                >DUMA_MALLOC_FAILEXIT
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static int DUMA_MALLOC_FAILEXIT</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_MALLOC_FAILEXIT controls the behaviour of DUMA when
                  malloc() fails and would return NULL.&nbsp; But most
                  applications don&rsquo;t check the return value for errors ...
                  so default to Exit on Fail
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_FREE_ACCESS"></a>DUMA_FREE_ACCESS
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static int DUMA_FREE_ACCESS</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_FREE_ACCESS is set if DUMA is to write access memory
                  before freeing it.&nbsp; This makes easier using watch
                  expressions in debuggers as the process is interrupted even if
                  the memory is going to be freed.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.DUMA_SHOW_ALLOC"></a>DUMA_SHOW_ALLOC
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static int DUMA_SHOW_ALLOC</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  DUMA_SHOW_ALLOC is set if DUMA is to print all allocations and
                  deallocations to the console.&nbsp; Although this generates a
                  lot of messages, the option can be useful to detect
                  inefficient code containing many allocations / deallocations
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_allocList"></a>_duma_allocList
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>struct _DUMA_Slot * _duma_allocList</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  _DUMA_allocList points to the array of slot structures used to
                  manage the malloc arena.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_allocListSize"></a>_duma_allocListSize
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static size_t _duma_allocListSize</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  _duma_allocListSize is the size of the allocation list.&nbsp;
                  This will always be a multiple of the page size.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.slotCount"></a>slotCount
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static size_t slotCount</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  slotCount is the number of Slot structures in allocationList.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.unUsedSlots"></a>unUsedSlots
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static size_t unUsedSlots</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  unUsedSlots is the number of Slot structures that are
                  currently available to represent new malloc buffers.&nbsp;
                  When this number gets too low, we will create new slots.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.slotsPerPage"></a>slotsPerPage
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static size_t slotsPerPage</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  slotsPerPage is the number of slot structures that fit in a
                  virtual memory page.
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.sumAllocatedMem"></a>sumAllocatedMem
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long sumAllocatedMem</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  internal variable: sum of allocated -freed +protected memory
                  in kB
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.sumTotalAllocatedMem"></a
                >sumTotalAllocatedMem
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long sumTotalAllocatedMem</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  internal variable: sum of allocated memory in kB
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.sumProtectedMem"></a>sumProtectedMem
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long sumProtectedMem</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  internal variable: sum of protected memory in kB
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.numDeallocs"></a>numDeallocs
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long numDeallocs</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  internal variable: number of deallocations processed so far
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.numAllocs"></a>numAllocs
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>static long numAllocs</td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  internal variable: number of allocations processed so far
                </p>
              </div>
            </div>
          </div>

          <div class="CVariable">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.duma_init_done"></a>duma_init_done
              </h3>
              <div class="CBody">
                <p class="CParagraph">
                  internal variable: state of initialization
                </p>
              </div>
            </div>
          </div>

          <div class="CGroup">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.Functions"></a>Functions
              </h3>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_assert"></a>_duma_assert
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void _duma_assert(
                            </td>
                            <td class="PTypePrefix" nowrap>const&nbsp;</td>
                            <td class="PType" nowrap>char&nbsp;</td>
                            <td class="PParameterPrefix" nowrap>*</td>
                            <td class="PParameter" nowrap>exprstr,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap>const&nbsp;</td>
                            <td class="PType" nowrap>char&nbsp;</td>
                            <td class="PParameterPrefix" nowrap>*</td>
                            <td class="PParameter" nowrap>filename,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>int&nbsp;</td>
                            <td class="PParameterPrefix" nowrap></td>
                            <td class="PParameter" nowrap>lineno</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  Print message and halt program execution in crazy way.
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.duma_init"></a>duma_init
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void duma_init(
                            </td>
                            <td class="PParameter" nowrap>void</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  duma_init sets configuration settings.&nbsp; Can sometimes
                  cause problems when called from _duma_init.
                </p>
                <p class="CParagraph">
                  See Also:
                  <a
                    href="#_DUMA_Slot._duma_init"
                    class="LFunction"
                    id="link56"
                    onMouseOver="ShowTip(event, 'tt24', 'link56')"
                    onMouseOut="HideTip('tt24')"
                    >_duma_init</a
                  >
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_init"></a>_duma_init
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void _duma_init(
                            </td>
                            <td class="PParameter" nowrap>void</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  _duma_init sets up the memory allocation arena and the
                  run-time configuration information.&nbsp; We will call
                  duma_init unless DUMA_EXPLICIT_INIT is defined at compile
                  time.
                </p>
                <p class="CParagraph">
                  See Also:
                  <a
                    href="#_DUMA_Slot.duma_init"
                    class="LFunction"
                    id="link57"
                    onMouseOver="ShowTip(event, 'tt23', 'link57')"
                    onMouseOut="HideTip('tt23')"
                    >duma_init</a
                  >
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot.allocateMoreSlots"></a>allocateMoreSlots
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              static void allocateMoreSlots(
                            </td>
                            <td class="PParameter" nowrap>void</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  allocateMoreSlots is called when there are only enough slot
                  structures left to support the allocation of a single malloc
                  buffer.
                </p>
                <p class="CParagraph">
                  See Also:
                  <a
                    href="#_DUMA_Slot._duma_allocate"
                    class="LFunction"
                    id="link58"
                    onMouseOver="ShowTip(event, 'tt26', 'link58')"
                    onMouseOut="HideTip('tt26')"
                    >_duma_allocate</a
                  >
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_allocate"></a>_duma_allocate
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void * _duma_allocate(
                            </td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>size_t&nbsp;</td>
                            <td class="PParameter" nowrap>alignment,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>size_t&nbsp;</td>
                            <td class="PParameter" nowrap>userSize,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>int&nbsp;</td>
                            <td class="PParameter" nowrap>protectBelow,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>int&nbsp;</td>
                            <td class="PParameter" nowrap>fillByte,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>int&nbsp;</td>
                            <td class="PParameter" nowrap>protectAllocList,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap>enum&nbsp;</td>
                            <td class="PType" nowrap>_DUMA_Allocator&nbsp;</td>
                            <td class="PParameter" nowrap>allocator,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap>
                              enum _DUMA_FailReturn&nbsp;
                            </td>
                            <td class="PType" nowrap>fail&nbsp;</td>
                            <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  This is the memory allocator.&nbsp; When asked to allocate a
                  buffer, allocate it in such a way that the end of the buffer
                  is followed by an inaccessable memory page.&nbsp; If software
                  overruns that buffer, it will touch the bad page and get an
                  immediate segmentation fault.&nbsp; It&rsquo;s then easy to
                  zero in on the offending code with a debugger.
                </p>
                <p class="CParagraph">
                  There are a few complications.&nbsp; If the user asks for an
                  odd-sized buffer, we would have to have that buffer start on
                  an odd address if the byte after the end of the buffer was to
                  be on the inaccessable page.&nbsp; Unfortunately, there is
                  lots of software that asks for odd-sized buffers and then
                  requires that the returned address be word-aligned, or the
                  size of the buffer be a multiple of the word size.&nbsp; An
                  example are the string-processing functions on Sun systems,
                  which do word references to the string memory and may refer to
                  memory up to three bytes beyond the end of the string.&nbsp;
                  For this reason, I take the alignment requests to memalign()
                  and valloc() seriously, and
                </p>
                <p class="CParagraph">DUMA wastes lots of memory.</p>
                <p class="CParagraph">
                  See Also:
                  <a
                    href="#_DUMA_Slot._duma_deallocate"
                    class="LFunction"
                    id="link59"
                    onMouseOver="ShowTip(event, 'tt27', 'link59')"
                    onMouseOut="HideTip('tt27')"
                    >_duma_deallocate</a
                  >
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_deallocate"></a>_duma_deallocate
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void _duma_deallocate(
                            </td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>void&nbsp;</td>
                            <td class="PParameterPrefix" nowrap>*</td>
                            <td class="PParameter" nowrap>address,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>int&nbsp;</td>
                            <td class="PParameterPrefix" nowrap></td>
                            <td class="PParameter" nowrap>protectAllocList,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap>
                              enum _DUMA_Allocator&nbsp;
                            </td>
                            <td class="PType" nowrap>allocator&nbsp;</td>
                            <td class="PParameterPrefix" nowrap></td>
                            <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">
                  Deallocate allocated memory after running some checks, then
                  open slot for use.&nbsp; Uses Page_Delete to free the
                  underlying memory.
                </p>
                <p class="CParagraph">
                  See Also:
                  <a
                    href="paging-h.html#Page_Delete"
                    class="LFunction"
                    id="link60"
                    onMouseOver="ShowTip(event, 'tt29', 'link60')"
                    onMouseOut="HideTip('tt29')"
                    >Page_Delete</a
                  >
                  <a
                    href="#_DUMA_Slot._duma_allocate"
                    class="LFunction"
                    id="link61"
                    onMouseOver="ShowTip(event, 'tt26', 'link61')"
                    onMouseOut="HideTip('tt26')"
                    >_duma_allocate</a
                  >
                </p>
              </div>
            </div>
          </div>

          <div class="CFunction">
            <div class="CTopic">
              <h3 class="CTitle">
                <a name="_DUMA_Slot._duma_kmalloc"></a>_duma_kmalloc
              </h3>
              <div class="CBody">
                <blockquote>
                  <table
                    border="0"
                    cellspacing="0"
                    cellpadding="0"
                    class="Prototype"
                  >
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td class="PBeforeParameters" nowrap>
                              void * _duma_kmalloc(
                            </td>
                            <td class="PTypePrefix" nowrap></td>
                            <td class="PType" nowrap>size_t&nbsp;</td>
                            <td class="PParameter" nowrap>size,</td>
                          </tr>
                          <tr>
                            <td></td>
                            <td class="PTypePrefix" nowrap>int&nbsp;</td>
                            <td class="PType" nowrap>flags&nbsp;</td>
                            <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                            <td class="PAfterParameters" nowrap>)</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </blockquote>
                <p class="CParagraph">A version of kmalloc.</p>
              </div>
            </div>
          </div>
        </td>
      </tr>
    </table>
    <div class="Footer">
      <!--START_ND_FOOTER-->Generated by
      <a href="http://www.naturaldocs.org">Natural Docs</a
      ><!--END_ND_FOOTER-->
    </div>
    <!--START_ND_TOOLTIPS-->
    <div class="CToolTip" id="tt1">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static const char version[]</td>
            </tr>
          </table>
        </blockquote>
        KDUMA version string
      </div>
    </div>
    <div class="CToolTip" id="tt2">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>size_t DUMA_ALIGNMENT</td>
            </tr>
          </table>
        </blockquote>
        DUMA_ALIGNMENT is a global variable used to control the default
        alignment of buffers returned by malloc(), calloc(), and realloc().
      </div>
    </div>
    <div class="CToolTip" id="tt3">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>int DUMA_PROTECT_BELOW</td>
            </tr>
          </table>
        </blockquote>
        DUMA_PROTECT_BELOW is used to modify the behavior of the allocator.
      </div>
    </div>
    <div class="CToolTip" id="tt4">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>int DUMA_FILL</td>
            </tr>
          </table>
        </blockquote>
        DUMA_FILL is set to 0-255 if DUMA should fill all new allocated memory
        with the specified value.
      </div>
    </div>
    <div class="CToolTip" id="tt5">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static int DUMA_SLACKFILL</td>
            </tr>
          </table>
        </blockquote>
        DUMA_SLACKFILL is set to 0-255.
      </div>
    </div>
    <div class="CToolTip" id="tt6">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long DUMA_PROTECT_FREE</td>
            </tr>
          </table>
        </blockquote>
        DUMA_PROTECT_FREE is used to control the disposition of memory that is
        released using free().
      </div>
    </div>
    <div class="CToolTip" id="tt7">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long DUMA_MAX_ALLOC</td>
            </tr>
          </table>
        </blockquote>
        DUMA_MAX_ALLOC is used to control the maximum memory print of the
        program in total: When the sum of allocated and protected memory would
        exceed this value in kB, the protected memory is freed/deleted.
      </div>
    </div>
    <div class="CToolTip" id="tt8">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static int DUMA_ALLOW_MALLOC_0</td>
            </tr>
          </table>
        </blockquote>
        DUMA_ALLOW_MALLOC_0 is set if DUMA is to allow malloc(0).
      </div>
    </div>
    <div class="CToolTip" id="tt9">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static int DUMA_MALLOC_FAILEXIT</td>
            </tr>
          </table>
        </blockquote>
        DUMA_MALLOC_FAILEXIT controls the behaviour of DUMA when malloc() fails
        and would return NULL.
      </div>
    </div>
    <div class="CToolTip" id="tt10">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static int DUMA_FREE_ACCESS</td>
            </tr>
          </table>
        </blockquote>
        DUMA_FREE_ACCESS is set if DUMA is to write access memory before freeing
        it.
      </div>
    </div>
    <div class="CToolTip" id="tt11">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static int DUMA_SHOW_ALLOC</td>
            </tr>
          </table>
        </blockquote>
        DUMA_SHOW_ALLOC is set if DUMA is to print all allocations and
        deallocations to the console.
      </div>
    </div>
    <div class="CToolTip" id="tt12">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>struct _DUMA_Slot * _duma_allocList</td>
            </tr>
          </table>
        </blockquote>
        _DUMA_allocList points to the array of slot structures used to manage
        the malloc arena.
      </div>
    </div>
    <div class="CToolTip" id="tt13">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static size_t _duma_allocListSize</td>
            </tr>
          </table>
        </blockquote>
        _duma_allocListSize is the size of the allocation list.
      </div>
    </div>
    <div class="CToolTip" id="tt14">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static size_t slotCount</td>
            </tr>
          </table>
        </blockquote>
        slotCount is the number of Slot structures in allocationList.
      </div>
    </div>
    <div class="CToolTip" id="tt15">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static size_t unUsedSlots</td>
            </tr>
          </table>
        </blockquote>
        unUsedSlots is the number of Slot structures that are currently
        available to represent new malloc buffers.
      </div>
    </div>
    <div class="CToolTip" id="tt16">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static size_t slotsPerPage</td>
            </tr>
          </table>
        </blockquote>
        slotsPerPage is the number of slot structures that fit in a virtual
        memory page.
      </div>
    </div>
    <div class="CToolTip" id="tt17">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long sumAllocatedMem</td>
            </tr>
          </table>
        </blockquote>
        internal variable: sum of allocated -freed +protected memory in kB
      </div>
    </div>
    <div class="CToolTip" id="tt18">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long sumTotalAllocatedMem</td>
            </tr>
          </table>
        </blockquote>
        internal variable: sum of allocated memory in kB
      </div>
    </div>
    <div class="CToolTip" id="tt19">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long sumProtectedMem</td>
            </tr>
          </table>
        </blockquote>
        internal variable: sum of protected memory in kB
      </div>
    </div>
    <div class="CToolTip" id="tt20">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long numDeallocs</td>
            </tr>
          </table>
        </blockquote>
        internal variable: number of deallocations processed so far
      </div>
    </div>
    <div class="CToolTip" id="tt21">
      <div class="CVariable">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>static long numAllocs</td>
            </tr>
          </table>
        </blockquote>
        internal variable: number of allocations processed so far
      </div>
    </div>
    <div class="CToolTip" id="tt22">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>void _duma_assert(</td>
                    <td class="PTypePrefix" nowrap>const&nbsp;</td>
                    <td class="PType" nowrap>char&nbsp;</td>
                    <td class="PParameterPrefix" nowrap>*</td>
                    <td class="PParameter" nowrap>exprstr,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap>const&nbsp;</td>
                    <td class="PType" nowrap>char&nbsp;</td>
                    <td class="PParameterPrefix" nowrap>*</td>
                    <td class="PParameter" nowrap>filename,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>int&nbsp;</td>
                    <td class="PParameterPrefix" nowrap></td>
                    <td class="PParameter" nowrap>lineno</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        Print message and halt program execution in crazy way.
      </div>
    </div>
    <div class="CToolTip" id="tt23">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>void duma_init(</td>
                    <td class="PParameter" nowrap>void</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        duma_init sets configuration settings.
      </div>
    </div>
    <div class="CToolTip" id="tt24">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>void _duma_init(</td>
                    <td class="PParameter" nowrap>void</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        _duma_init sets up the memory allocation arena and the run-time
        configuration information.
      </div>
    </div>
    <div class="CToolTip" id="tt25">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>
                      static void allocateMoreSlots(
                    </td>
                    <td class="PParameter" nowrap>void</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        allocateMoreSlots is called when there are only enough slot structures
        left to support the allocation of a single malloc buffer.
      </div>
    </div>
    <div class="CToolTip" id="tt26">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>
                      void * _duma_allocate(
                    </td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>size_t&nbsp;</td>
                    <td class="PParameter" nowrap>alignment,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>size_t&nbsp;</td>
                    <td class="PParameter" nowrap>userSize,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>int&nbsp;</td>
                    <td class="PParameter" nowrap>protectBelow,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>int&nbsp;</td>
                    <td class="PParameter" nowrap>fillByte,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>int&nbsp;</td>
                    <td class="PParameter" nowrap>protectAllocList,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap>enum&nbsp;</td>
                    <td class="PType" nowrap>_DUMA_Allocator&nbsp;</td>
                    <td class="PParameter" nowrap>allocator,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap>
                      enum _DUMA_FailReturn&nbsp;
                    </td>
                    <td class="PType" nowrap>fail&nbsp;</td>
                    <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        This is the memory allocator.
      </div>
    </div>
    <div class="CToolTip" id="tt27">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>
                      void _duma_deallocate(
                    </td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>void&nbsp;</td>
                    <td class="PParameterPrefix" nowrap>*</td>
                    <td class="PParameter" nowrap>address,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>int&nbsp;</td>
                    <td class="PParameterPrefix" nowrap></td>
                    <td class="PParameter" nowrap>protectAllocList,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap>
                      enum _DUMA_Allocator&nbsp;
                    </td>
                    <td class="PType" nowrap>allocator&nbsp;</td>
                    <td class="PParameterPrefix" nowrap></td>
                    <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        Deallocate allocated memory after running some checks, then open slot
        for use.
      </div>
    </div>
    <div class="CToolTip" id="tt28">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>
                      void * _duma_kmalloc(
                    </td>
                    <td class="PTypePrefix" nowrap></td>
                    <td class="PType" nowrap>size_t&nbsp;</td>
                    <td class="PParameter" nowrap>size,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PTypePrefix" nowrap>int&nbsp;</td>
                    <td class="PType" nowrap>flags&nbsp;</td>
                    <td class="PParameter" nowrap>DUMA_PARAMLIST_FL</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        A version of kmalloc.
      </div>
    </div>
    <div class="CToolTip" id="tt29">
      <div class="CFunction">
        <blockquote>
          <table border="0" cellspacing="0" cellpadding="0" class="Prototype">
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="PBeforeParameters" nowrap>
                      static void Page_Delete(
                    </td>
                    <td class="PType" nowrap>void&nbsp;</td>
                    <td class="PParameterPrefix" nowrap>*</td>
                    <td class="PParameter" nowrap>address,</td>
                  </tr>
                  <tr>
                    <td></td>
                    <td class="PType" nowrap>size_t&nbsp;</td>
                    <td class="PParameterPrefix" nowrap></td>
                    <td class="PParameter" nowrap>size</td>
                    <td class="PAfterParameters" nowrap>)</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </blockquote>
        Free&rsquo;s DUMA allocated memory.
      </div>
    </div>
    <!--END_ND_TOOLTIPS-->

    <script language="JavaScript">
      <!--
      if (browserType) {
        if (browserVer) {
          document.write("</div>");
        }
        document.write("</div>");
      } // -->
    </script>
  </body>
</html>