<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaTempEditStyle"></style><style title="owaParaStyle"><!--P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
--></style>
</head>
<body ocsi="x">
<div style="FONT-FAMILY: Tahoma; DIRECTION: ltr; COLOR: #000000; FONT-SIZE: x-small">
<div></div>
<div dir="ltr"><font color="#000000" size="2" face="Tahoma">Hi,</font></div>
<div dir="ltr"><font face="tahoma"></font> </div>
<div dir="ltr"><font face="tahoma">Before filing a bug report, I would like to share some thoughts<a></a> about the following code of bspgetworkarea.c<a></a>:</font></div>
<div dir="ltr"><font face="tahoma"></font> </div>
<div dir="ltr"><font face="tahoma"><b><font color="#7f0055" size="1"><font color="#7f0055" size="1">
<p align="left"><font size="2" face="Courier New">void</font></b></font></font><font face="Courier New">
<b><b>bsp_get_work_area</b><a></a></b>(</font></p>
<p align="left"><b><font color="#7f0055"><font color="#7f0055"><font face="Courier New">   void</font></b></font></font><font face="Courier New"> **<font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff">work_area_start</font></font><a></a></font></font>,</font></p>
<p align="left"><font color="#005032"><font color="#005032"><font face="Courier New">   uintptr_t</font><a></a></font></font><font face="Courier New"> *<font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff">work_area_size</font></font><a></a></font></font>,</font></p>
<p align="left"><b><font color="#7f0055"><font color="#7f0055"><font face="Courier New">   void</font></b></font></font><font face="Courier New"> **<font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff">heap_start</font></font><a></a></font></font>,</font></p>
<p align="left"><font color="#005032"><font color="#005032"><font face="Courier New">   uintptr_t</font><a></a></font></font><font face="Courier New"> *<font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff">heap_size</font></font><a></a></p>
</font></font></font>
<p align="left"><font face="Courier New">)</font></p>
<p align="left"><font face="Courier New">{</font></p>
<p align="left"><font face="Courier New">(... removed for simplicity)</font></p>
<p align="left"><font face="Courier New">   *<font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff"><font color="#1e90ff">work_area_size</font></font><a></a></font></font> = (<font color="#005032"><font color="#005032"><font color="#005032"><font color="#005032">uintptr_t</font></font><a></a></font></font>) <b><i><font color="#ff0000"><font color="#ff0000"><b><i><font color="#ff0000"><font color="#ff0000">bsp_mem_size</font></font></i></b><a></a></b></font></i></font></font><font face="Courier New">
 - (<font color="#005032"><font color="#005032"><font color="#005032"><font color="#005032">uintptr_t</font></font><a></a></font></font>)
<b><i><font color="#ff0000"><font color="#ff0000"><b><i><font color="#ff0000"><font color="#ff0000">rtemsWorkAreaStart</font></font></i></b><a></a></b></font></i></font></font><font face="Courier New">;</font></p>
<p align="left"><font face="Courier New">(... removed for simplicity)</font></p>
<p align="left"><font face="Courier New"></font> </p>
<font size="1"><font face="tahoma">
<div dir="ltr"><font face="tahoma"><font size="2">I've done an experiment by forcing my app to statically allocate a huge memory area producing a bss</font><a></a><font size="2"> larger than the physical memory available on my board. I expected a message like
 "not enough</font><a></a><font size="2"> memory for RTEMS</font><a></a><font size="2"> workspace". But, this caused the rtemsWorkAreaStart</font><a></a><font size="2"> be greater than bsp_mem_size</font><a></a><font size="2">, producing a work_area_size</font><a></a><font size="2">
 a very large value since it they are unsigned. The program, then, entered a very long loop while dirtying</font><a></a><font size="2"> the memory (because I defined BSP_DIRT_MEMORY</font><a></a><font size="2">) back on bootcard.c</font><a></a><font size="2">.</font></font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">My questions are:</font></div>
<div dir="ltr"><font size="2" face="tahoma"> - Where is the good place the check if bsp_mem_size<a></a> got less than rtemsWorkAreaStart<a></a>?</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">My sugestion<a></a>:</font></div>
<div dir="ltr"><font size="2" face="tahoma"> - force work_are_size<a></a> = 0, when bsp_mem_size<a></a> is less than rtemsWorkAreaStart<a></a> inside bsp_get_work_area<a></a>().</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">More info:</font></div>
<div dir="ltr"><font size="2" face="tahoma">Code verified: RTEMS 4.11 (4.10.99), RTEMS 4.10.2</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">Best regards for all.</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">--Wendell.</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
</font></font></font></div>
</div>
</body>
</html>