On 2014-02-20 00:36, Andre Marques wrote:



- Testing errno values in error situations. There is already a fstest named
fserror which purpose seems to be checking errno values for a bunch of
functions (rename included, but with some errno values missing). Not sure
if I
should put them in this test or add to fserror.

I would move all rename related tests to this new test program.

About the errno value testing, I'm currently missing EIO, ENOSPC, EROFS and
EXDEV.

EROFS and EXDEV require mounting a second filesystem. How can I do this in
RTEMS? Can it be done at runtime? I've been looking at the fileio sample, which
uses the fsmount() function, but I need a disk to mount with it.

For EROFS there is already a test in fstests/fsrofs01.


So I leave EROFS out of this test?

Yes, I would leave the EROFS test out.


You can mount as many file system instances as you want.  You can do this
with mount().  The mount() parameters are file system dependent. The generic
file system tests (and your rename test should be one of them) use a support
file for this:

./testsuites/fstests/mrfs_support/fs_support.c
./testsuites/fstests/mimfs_support/fs_support.c
./testsuites/fstests/mdosfs_support/fs_support.c
./testsuites/fstests/imfs_support/fs_support.c
./testsuites/fstests/jffs2_support/fs_support.c

Yes I'm using support files on Makefile.am.

For mount() should I use a ramdisk for the device file?

I tried to create a ramdisk as in

http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__rtems__ramdisk.html#gac6c99eed9f3b92bb4cf5184b25972e65


but the program exits during the rtems_blkdev_create() call, if I use
"/dev/rda" as the device path.

How does the code look like?



You can use the system file system as the second file system for the EXDEV test.


I'm reading this as mounting an instance of the system filesystem. Am I right?

You need two file system instances. If you configure the system with CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM, then it starts with the IMFS as the root file system. For the file system tests you need a file system instance to test. This is set up with the test_initialize_filesystem() function, e.g.

void test_initialize_filesystem(void)
{
  int rv;

  erase_all();

  rv = mkdir(BASE_FOR_TEST, S_IRWXU | S_IRWXG | S_IRWXO);
  rtems_test_assert(rv == 0);

  rtems_resource_snapshot_take(&before_mount);

  rv = mount(
    NULL,
    BASE_FOR_TEST,
    RTEMS_FILESYSTEM_TYPE_JFFS2,
    RTEMS_FILESYSTEM_READ_WRITE,
    &mount_data
  );
  rtems_test_assert(rv == 0);
}

void test_shutdown_filesystem(void)
{
  int rv = unmount(BASE_FOR_TEST);
  rtems_test_assert(rv == 0);
  rtems_test_assert(rtems_resource_snapshot_check(&before_mount));
}

So for the EXDEV test you can use for example:

rename("/abc.txt", BASE_FOR_TEST "/abc.txt");

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to