<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 3/20/2013 9:25 AM, Matthew J
Fletcher wrote:<br>
</div>
<blockquote
cite="mid:CAPy9Tin+sFWrdgtJsG=tnFSAtrOaG2a1O1TAEOoP6F7HNupqKw@mail.gmail.com"
type="cite">
<p dir="ltr">Joel,</p>
<p dir="ltr">I did try that but I am using mingw and there is no
functioning autoconf 2.69 package available, so I can't
bootstrap a git head checkout.<br>
</p>
</blockquote>
<br>
Sigh... :(<br>
<br>
Ok. I am sure Alan and Chris can try to reproduce this on the head.
<br>
<br>
--joel<br>
<blockquote
cite="mid:CAPy9Tin+sFWrdgtJsG=tnFSAtrOaG2a1O1TAEOoP6F7HNupqKw@mail.gmail.com"
type="cite">
<p dir="ltr">
</p>
<div class="gmail_quote">On 20 Mar 2013 14:22, "Joel Sherrill"
<<a moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>>
wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>On 3/20/2013 8:30 AM, Matthew J Fletcher wrote:<br>
</div>
<blockquote type="cite">Hi,<br>
<br>
I wonder if this is target specific now, if i literately
use the sources you posted i get an error '-1' returned
from the rtems_mkdir().<br>
<br>
The only change i made was to malloc a smaller chuck, 32k.
Of course my malloc() is operating of the same SRAM chip,
but it was in a different address range.<br>
<br>
Not sure what to do now, i guess i have to work out whats
up with RFS on ARM thumb. Does anyone know what platforms
RFS was tested/developed on ?<br>
<br>
<br>
</blockquote>
These are tested by the fstests set of tests. I don't
believe these were in the 4.10<br>
tree. Now these are tested on every target that has the
testsuite run. This would<br>
primarily be i386, SPARC, MIPS, PowerPC, Coldfire and ARM.
That's where most<br>
of the daily developer activity is.<br>
<br>
The code was initially developed and tested primarily on
Coldfire, SPARC, and i386.<br>
<br>
Chris can say more about it specifically.<br>
<br>
I would suggest that it would be good to see if this fails
on 4.11 if you haven't<br>
already.<br>
<blockquote type="cite"><br>
<div class="gmail_quote">On 19 March 2013 21:36, Cudmore,
Alan P. (GSFC-5820) <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:alan.p.cudmore@nasa.gov"
target="_blank">alan.p.cudmore@nasa.gov</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">No problem. I have a
pretty easy to use 4.10 setup right now.
<div><br>
</div>
<div>I did have to run the memset code for the
address space. If you pass a 0 in the cold_boot
parameter, it fails.<span><font color="#888888">
<div> <br>
</div>
<div>Alan</div>
</font></span>
<div>
<div>
<div><br>
<div>
<div>On Mar 19, 2013, at 5:21 PM, Matthew
J Fletcher <<a moz-do-not-send="true"
href="mailto:amimjf@gmail.com"
target="_blank">amimjf@gmail.com</a>>
wrote:</div>
<br>
<blockquote type="cite">
<p dir="ltr">Alan,</p>
<p dir="ltr">Thanks very much for
running this test, its given me quite
a bit of confidence.</p>
<p dir="ltr">Did you have to memset the
address space to 0xff before you could
register/format the device ?, I found
I had to do that to not get an error
code.</p>
<p dir="ltr">I suppose the memset would
rapidly throw up problems if I had
addresses wrong. I can't think what
the issue might be. I will try a
mallocd area like your example though
to see if I get a good result.</p>
<div class="gmail_quote">On 19 Mar 2013
21:05, "Cudmore, Alan P. (GSFC-5820)"
<<a moz-do-not-send="true"
href="mailto:alan.p.cudmore@nasa.gov"
target="_blank">alan.p.cudmore@nasa.gov</a>>
wrote:<br type="attribution">
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div style="word-wrap:break-word">I
took your code below and created
an example that would build and
run on my 4.10.2 setup. I ran this
on the sparc-sis simulator, and it
seems to work fine.
<div><br>
</div>
<div>Are you sure you have valid
memory for the nvramdisk device?</div>
<div><br>
</div>
<div>We rely on RFS on 4.10.2 and
are giving a pretty good stress
test right now.</div>
<div><br>
</div>
<div>Alan</div>
<div><br>
</div>
<div>------------------------------</div>
<div><br>
</div>
<div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#include <span
style="color:#d12f1b"><errno.h></span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#include
<span style="color:#d12f1b"><stdio.h></span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span style="color:#78492a">#include
</span><stdlib.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><sys/stat.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#include <span
style="color:#d12f1b"><fcntl.h></span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#include <span
style="color:#d12f1b"><rtems.h></span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/bdbuf.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span style="color:#78492a">#include
</span><rtems/blkdev.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/diskdevs.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/error.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span style="color:#78492a">#include
</span><rtems/flashdisk.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/fsmount.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/rtems-rfs.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span style="color:#78492a">#include
</span><rtems/rtems-rfs-format.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/nvdisk-sram.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">uint32_t
rtems_nvdisk_configuration_size
=<span style="color:#272ad8">1</span>;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span
style="color:#bb2ca2">const</span><span>
</span><span
style="color:#bb2ca2">char</span><span>*
sram_driver = </span><span
style="color:#d12f1b">"/dev/nvda"</span><span>;
</span>//
RTEMS_NVDISK_DEVICE_BASE_NAME,
1st device</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo"><span
style="color:#bb2ca2">const</span>
<span style="color:#bb2ca2">char</span>*
sram_path = <span
style="color:#d12f1b">"/sram"</span>;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">/*</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
* Let the IO system
allocation the next available
major number.</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">*/</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
RTEMS_DRIVER_AUTO_MAJOR (<span
style="color:#272ad8">0</span>)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
/*</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> *
The SRAM Device setup</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">*/</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_nvdisk_device_desc
rtems_sram_device_descriptor[]
=</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
flags: <span
style="color:#272ad8">0</span>,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
base: <span
style="color:#272ad8">0</span>,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
<span> size: </span><span
style="color:#272ad8">256</span><span>
* </span><span
style="color:#272ad8">1024</span><span>,
</span>// 256K (Adjust when
ROM.ld, _IMFS_DiskSize is
changed)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
nv_ops:
&rtems_nvdisk_sram_handlers</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
};</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo"><span
style="color:#bb2ca2">const</span>
rtems_nvdisk_config
rtems_nvdisk_configuration[] =</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
block_size: <span
style="color:#272ad8">512</span>,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
device_count: <span
style="color:#272ad8">1</span>,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
devices:
&rtems_sram_device_descriptor[<span
style="color:#272ad8">0</span>],</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
flags: <span
style="color:#272ad8">0</span>,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
info_level: <span
style="color:#272ad8">0</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">};</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
/**</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> *
Create the SRAM Disk Driver
entry.</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> */</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_driver_address_table
rtems_sram_ops = {</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
initialization_entry:
rtems_nvdisk_initialize,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
open_entry:
rtems_blkdev_generic_open,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
close_entry:
rtems_blkdev_generic_close,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
read_entry:
rtems_blkdev_generic_read,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
write_entry:
rtems_blkdev_generic_write,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
control_entry:
rtems_blkdev_generic_ioctl</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">};</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo"><span
style="color:#bb2ca2">void</span>
setup_sram_disk (<span
style="color:#bb2ca2">int</span>
cold_boot)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_device_major_number
major;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_status_code
sc;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"><span>
</span>// settings</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_sram_device_descriptor[<span
style="color:#272ad8">0</span>].base
= (uint32_t *) malloc (<span
style="color:#272ad8">256</span>*<span
style="color:#272ad8">1024</span>);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">if</span>
(cold_boot)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
memset(rtems_sram_device_descriptor[<span
style="color:#272ad8">0</span>].base,
<span style="color:#272ad8">0xff</span>,
rtems_sram_device_descriptor[<span
style="color:#272ad8">0</span>].size
);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#008400">/*</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
* Register the NV Disk
driver.</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
*/</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
sc =
rtems_io_register_driver
(RTEMS_DRIVER_AUTO_MAJOR,
&rtems_sram_ops,
&major);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">if</span>
( sc < <span
style="color:#272ad8">0</span>
)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf(</span>"RTEMS
Register IO driver failed\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">else</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf(</span>"RTEMS
register IO driver OK\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">/*</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> *</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
* RFS on SRAM</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> *</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)"> */</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo"><span
style="color:#bb2ca2">void</span>
mount_rfs_on_sram(<span
style="color:#bb2ca2">int</span>
cold_boot)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_rfs_format_config
config;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_status_code
rc;</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
setup_sram_disk (cold_boot);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">
<span> </span>// zero is a
good set of defaults</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
memset (&config, <span
style="color:#272ad8">0</span>,
<span style="color:#bb2ca2">sizeof</span>
(rtems_rfs_format_config));</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">if</span>
(rtems_rfs_format
(sram_driver, &config)
< <span
style="color:#272ad8">0</span>)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
printf(<span
style="color:#d12f1b">"error:
format of %s failed: %s\n"</span>,
sram_driver, strerror
(errno));</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">else</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf(</span>"RTEMS RFS
format OK\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">if</span>
(mount_and_make_target_path(</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
sram_driver,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
sram_path,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
RTEMS_FILESYSTEM_TYPE_RFS,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
RTEMS_FILESYSTEM_READ_WRITE,</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span
style="color:#bb2ca2">NULL</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
) != <span
style="color:#272ad8">0</span>)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
printf(<span
style="color:#d12f1b">"error:
mount of %s to %s failed:
%s\n"</span>, sram_driver,
sram_path, strerror (errno));</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span
style="color:#bb2ca2">else</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf(</span>"mount and
make target path OK\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rc = rtems_mkdir(<span
style="color:#d12f1b">"sram/DB"</span>,
S_IRWXU | S_IRGRP | S_IXGRP |
S_IROTH | S_IXOTH);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">if</span>
( rc < <span
style="color:#272ad8">0</span>
)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf(</span>"rtems_mkdir
failed\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
<span style="color:#bb2ca2">else</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span> printf(</span>"mkdir
sdram/DB OK\n"<span>);</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">rtems_task
Init(</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
rtems_task_argument ignored</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">{</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)">
<span> printf( </span>"\n\n***
Starting NVRAM Disk Test
***\n"<span> );</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
mount_rfs_on_sram(<span
style="color:#272ad8">1</span>);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span>
printf( </span>"*** END OF
TEST ***\n"<span> );</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">
exit( <span
style="color:#272ad8">0</span>
);</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo">}</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_EXTRA_TASK_STACKS
(CONFIGURE_MAXIMUM_TASKS
* RTEMS_MINIMUM_STACK_SIZE)</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MAXIMUM_DRIVERS
<span
style="color:#272ad8">6</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(0,132,0)">/*
NOTICE: the clock driver is
explicitly disabled */</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_MAXIMUM_TASKS <span
style="color:#272ad8">40</span>
<span
style="color:#008400">// TX
MAX_THREAD</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_MAXIMUM_TIMERS <span
style="color:#272ad8">40</span>
<span
style="color:#008400">// TX
MAX_TIMER</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MAXIMUM_SEMAPHORES <span
style="color:#272ad8">40</span>
<span
style="color:#008400">// TX
MAX_MUTEX</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MAXIMUM_MESSAGE_QUEUES
<span style="color:#272ad8">40</span>
<span
style="color:#008400">// TX
MAX_MSG_QUEUE</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_MAXIMUM_PARTITIONS <span
style="color:#272ad8">5</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MAXIMUM_REGIONS <span
style="color:#272ad8">5</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_MAXIMUM_PORTS <span
style="color:#272ad8">0</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_MAXIMUM_PERIODS <span
style="color:#272ad8">0</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MAXIMUM_BARRIERS <span
style="color:#272ad8">0</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_MICROSECONDS_PER_TICK
<span style="color:#272ad8">10000</span>
<span style="color:#008400">/*
10 milliseconds */</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_TICKS_PER_TIMESLICE
<span
style="color:#272ad8">50</span>
<span style="color:#008400">/*
50 milliseconds */</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_APPLICATION_NEEDS_LIBBLOCK</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
<span style="color:#272ad8">2</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
<span
style="color:#272ad8">8</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_SWAPOUT_TASK_PRIORITY
<span
style="color:#272ad8">15</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">
#define
CONFIGURE_FILESYSTEM_RFS</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
<span style="color:#272ad8">10</span></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_RTEMS_INIT_TASKS_TABLE</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(120,73,42)">#define
CONFIGURE_INIT</div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(209,47,27)"><span
style="color:#78492a">#include
</span><rtems/confdefs.h></div>
<div
style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br>
</div>
</div>
<div>-------------------------------</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<div>
<div>On Mar 18, 2013, at 2:35
PM, Matthew J Fletcher <<a
moz-do-not-send="true"
href="mailto:amimjf@gmail.com"
target="_blank">amimjf@gmail.com</a>>
wrote:</div>
<br>
<blockquote type="cite">Hi,<br>
<br>
<br>
Alas the mkdir() is the
first filesystem operation i
am doing. I am not sure if i
can send attachments to the
list so i've cut and pasted
the relivant functions
below. I guess the following
would run on any BSP, its
just a 256k block of sram.
If there is a BSP with
enough memory the base
pointer for the filesystem
could just be a big
malloc().<br>
<br>
------------------- snip
-------------------------<br>
<br>
<br>
#define
CONFIGURE_IDLE_TASK_BODY
rtems_idle<br>
#define
CONFIGURE_EXTRA_TASK_STACKS
(CONFIGURE_MAXIMUM_TASKS *
RTEMS_MINIMUM_STACK_SIZE)<br>
<br>
#define
CONFIGURE_MAXIMUM_DRIVERS
6<br>
<br>
/* NOTICE: the clock driver
is explicitly disabled */<br>
#define
CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER<br>
#define
CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER<br>
<br>
#define
CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS<br>
#define
CONFIGURE_MAXIMUM_TASKS
40 // TX
MAX_THREAD<br>
#define
CONFIGURE_MAXIMUM_TIMERS
40 // TX
MAX_TIMER<br>
#define
CONFIGURE_MAXIMUM_SEMAPHORES
40 // TX
MAX_MUTEX<br>
#define
CONFIGURE_MAXIMUM_MESSAGE_QUEUES
40 // TX
MAX_MSG_QUEUE<br>
#define
CONFIGURE_MAXIMUM_PARTITIONS
5<br>
#define
CONFIGURE_MAXIMUM_REGIONS 5<br>
#define
CONFIGURE_MAXIMUM_PORTS 0<br>
#define
CONFIGURE_MAXIMUM_PERIODS 0<br>
#define
CONFIGURE_MAXIMUM_BARRIERS 0<br>
<br>
#define
CONFIGURE_MICROSECONDS_PER_TICK
10000 /* 10 milliseconds */<br>
#define
CONFIGURE_TICKS_PER_TIMESLICE
50 /* 50 milliseconds */<br>
<br>
#define
CONFIGURE_APPLICATION_NEEDS_LIBBLOCK<br>
#define
CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
2<br>
#define
CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
8<br>
#define
CONFIGURE_SWAPOUT_TASK_PRIORITY
15<br>
#define
CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM<br>
#define
CONFIGURE_FILESYSTEM_RFS<br>
#define
CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
10<br>
<br>
#define
CONFIGURE_RTEMS_INIT_TASKS_TABLE<br>
#define CONFIGURE_INIT<br>
#include
<rtems/confdefs.h><br>
<br>
<br>
uint32_t
rtems_flashdisk_configuration_size
=1;<br>
const char* flash_driver =
"/dev/fdda"; //
RTEMS_FLASHDISK_DEVICE_BASE_NAME,
1st device<br>
const char* flash_path =
"/flash";<br>
<br>
uint32_t
rtems_nvdisk_configuration_size
=1;<br>
const char* sram_driver =
"/dev/nvda"; //
RTEMS_NVDISK_DEVICE_BASE_NAME,
1st device<br>
const char* sram_path =
"/sram";<br>
<br>
<br>
/**<br>
* Let the IO system
allocation the next
available major number.<br>
*/<br>
#define
RTEMS_DRIVER_AUTO_MAJOR (0)<br>
<br>
#define
FLASHDISK_SEGMENT_COUNT 8 /*
128*/ // Spansion
S29GL128S, 128Mbit part<br>
#define
FLASHDISK_SEGMENT_SIZE (128
* 1024) // Spansion
S29GL128S, 128k sized
sectors<br>
#define FLASHDISK_BLOCK_SIZE
512<br>
#define
FLASHDISK_BLOCKS_PER_SEGMENT
(FLASHDISK_SEGMENT_SIZE /
FLASHDISK_BLOCK_SIZE)<br>
#define FLASHDISK_SIZE
(FLASHDISK_SEGMENT_COUNT *
FLASHDISK_SEGMENT_SIZE)<br>
<br>
<br>
/**<br>
* The SRAM Device setup<br>
*/<br>
rtems_nvdisk_device_desc
rtems_sram_device_descriptor[]
=<br>
{<br>
{<br>
flags: 0,<br>
base: 0,<br>
size: 256 * 1024,
// 256K (Adjust when ROM.ld,
_IMFS_DiskSize is changed)<br>
nv_ops:
&rtems_nvdisk_sram_handlers<br>
}<br>
};<br>
<br>
const rtems_nvdisk_config
rtems_nvdisk_configuration[]
=<br>
{<br>
{<br>
block_size:
512,<br>
device_count:
1,<br>
devices:
&rtems_sram_device_descriptor[0],<br>
flags:
0,<br>
info_level:
0<br>
}<br>
};<br>
<br>
<br>
<br>
<br>
/**<br>
* Create the SRAM Disk
Driver entry.<br>
*/<br>
rtems_driver_address_table
rtems_sram_ops = {<br>
initialization_entry:
rtems_nvdisk_initialize,<br>
open_entry:
rtems_blkdev_generic_open,<br>
close_entry:
rtems_blkdev_generic_close,<br>
read_entry:
rtems_blkdev_generic_read,<br>
write_entry:
rtems_blkdev_generic_write,<br>
control_entry:
rtems_blkdev_generic_ioctl<br>
};<br>
<br>
<br>
<br>
int setup_sram_disk (int
cold_boot)<br>
{<br>
rtems_device_major_number
major;<br>
rtems_status_code
sc;<br>
<br>
// settings<br>
rtems_sram_device_descriptor[0].base
= (unsigned
long)eTalus_IMFS_start;<br>
<br>
if (cold_boot)<br>
{<br>
memset(rtems_sram_device_descriptor[0].base,
0xff,
rtems_sram_device_descriptor[0].size
);<br>
}<br>
<br>
/*<br>
* Register the NV Disk
driver.<br>
*/<br>
sc =
rtems_io_register_driver
(RTEMS_DRIVER_AUTO_MAJOR,
&rtems_sram_ops,
&major);<br>
}<br>
<br>
<br>
/*<br>
*<br>
* RFS on SRAM<br>
*<br>
*/<br>
<br>
void mount_rfs_on_sram(int
cold_boot)<br>
{<br>
rtems_rfs_format_config
config;<br>
<br>
setup_sram_disk
(cold_boot);<br>
<br>
// zero is a good set of
defaults<br>
memset (&config, 0,
sizeof
(rtems_rfs_format_config));<br>
<br>
if (rtems_rfs_format
(sram_driver, &config)
< 0)<br>
{<br>
sprintf(inital_print_buffer,"error:
format of %s failed: %s\n",
sram_driver, strerror
(errno));<br>
UART0_SendStr(inital_print_buffer);<br>
}<br>
<br>
if
(mount_and_make_target_path(<br>
sram_driver,<br>
sram_path,<br>
RTEMS_FILESYSTEM_TYPE_RFS,<br>
RTEMS_FILESYSTEM_READ_WRITE,<br>
NULL<br>
) != 0)<br>
{<br>
sprintf(inital_print_buffer,"error:
mount of %s to %s failed:
%s\n", sram_driver,
sram_path, strerror
(errno));<br>
UART0_SendStr(inital_print_buffer);<br>
}<br>
<br>
rc =
rtems_mkdir("sram/DB",
S_IRWXU | S_IRGRP | S_IXGRP
| S_IROTH | S_IXOTH);<br>
}<br>
<br>
<br>
<br>
------------------- end
------------------------<br>
<br>
<br>
<br>
<br>
<br>
<div class="gmail_quote"> On
18 March 2013 17:42, Joel
Sherrill <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:joel.sherrill@oarcorp.com" target="_blank">joel.sherrill@oarcorp.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Is this reproducible
with something you can
share?<br>
<br>
Looking at the source, I
think this case is that
you<br>
filled the filesystem
and there were no free
blocks.<br>
But I am looking at the
head and not that
familiar<br>
with this filesystem.<br>
<br>
--joel
<div><br>
On 3/18/2013 12:20 PM,
Matthew J Fletcher
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi,<br>
<br>
I have an RFS
filesystem using the
nvram device, its
formatted ok and
mount_and_make_target_path()
also worked ok. But
attempting to
mkdir() causes a
really lowlevel
issue.<br>
<br>
The callstack;<br>
<br>
rtems_rfs_block_map_find()
at
rtems-rfs-block.c:246
0x81198bd8<br>
rtems_rfs_block_map_next_block()
at
rtems-rfs-block.c:353
0x81198d1e<br>
rtems_rfs_dir_lookup_ino()
at
rtems-rfs-dir.c:204
0x8119951c<br>
rtems_rfs_rtems_eval_for_make()
at
rtems-rfs-rtems.c:440
0x8118e142<br>
IMFS_evaluate_for_make()
at imfs_eval.c:435
0x81190718<br>
mknod() at
mknod.c:64
0x81183d5c<br>
mkdir() at
mkdir.c:29
0x81183cf0<br>
build() at
rtems_mkdir.c:101
0x811843a0<br>
rtems_mkdir() at
rtems_mkdir.c:136
0x811843a0<br>
<br>
<br>
the
rtems_rfs_block_pos_block_past_end
macro is failing and
causing the return
of ENXIO.<br>
<br>
The two arguments to
the macro are;<br>
<br>
bpos->bno = 1<br>
bpos->boff = 0<br>
bpos->block = 0<br>
<br>
map->size->count
= 1<br>
map->size->offset
= 0<br>
<br>
Which seems to me
the cause of ENXIO
being returned, but
i dont know how my
BSP could affect
this.<br>
<br>
Do people use RFS in
production systems ?
i am using the
4.10.2 sources.<br>
<br>
<br>
regards<br>
---<br>
Matthew J Fletcher<br>
<br>
</blockquote>
<br>
<br>
</div>
<span><font
color="#888888"> --
<br>
Joel Sherrill, Ph.D.
Director
of Research &
Development<br>
<a
moz-do-not-send="true"
href="mailto:joel.sherrill@OARcorp.com" target="_blank">joel.sherrill@OARcorp.com</a>
On-Line
Applications
Research<br>
Ask me about RTEMS:
a free RTOS
Huntsville AL 35805<br>
Support Available
(256)
722-9985<br>
<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
<div><br>
regards</div>
<div>---</div>
<div>Matthew J Fletcher</div>
<br>
_______________________________________________<br>
rtems-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rtems-users@rtems.org"
target="_blank">rtems-users@rtems.org</a><br>
<a moz-do-not-send="true"
href="http://www.rtems.org/mailman/listinfo/rtems-users"
target="_blank">http://www.rtems.org/mailman/listinfo/rtems-users</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
<div><br>
regards</div>
<div>---</div>
<div>Matthew J Fletcher</div>
<br>
</blockquote>
<br>
<br>
<pre cols="72">--
Joel Sherrill, Ph.D. Director of Research & Development
<a moz-do-not-send="true" href="mailto:joel.sherrill@OARcorp.com" target="_blank">joel.sherrill@OARcorp.com</a> On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985 </pre>
</div>
</blockquote>
</div>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Joel Sherrill, Ph.D. Director of Research & Development
<a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">joel.sherrill@OARcorp.com</a> On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985 </pre>
</body>
</html>