RTEMS-CVS is broken

Thomas Doerfler Thomas.Doerfler at imd-systems.de
Thu Jul 13 17:23:08 UTC 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Joel, Ralf,

Joel Sherrill schrieb:
> 
> RTEMS CPUKit can define the standard public interface to a device driver.
> The top 1/2 of ata.h looks to be the generic driver interface similar to
> the
> *drv.h files in libcsupport.  The bottom looks implementation specific
> to me.

Moving a part of the ATA interface declarations into cpukit would not
solve the problems I wanted to solve.

Background:

Some of out customers are using the FAT filesystem inside RTEMS, with am
IDE interface. And I really hated to tell them over and over again that
they have to build their own custom device driver table for non-standard
devices (why is an ATA device "non-standard" in RTEMS?) and to configure
libblock (which is part of cpukit) through some handcoded configuration
tables and still they would have to live with hardcoded helper task
priorities in libblock and the ATA driver.

So from a "user's" point of view, I think my modifications to confdefs.h
etc. are quite fine. The ATA and IDE drivers are configured consistently
with the other drivers, libblock can be configured in a similar way AND
the helper tasks can be configured in their priority.

Ralf, I agree that I have broken the code separation between cpukit and
the BSP specific stuff, and this is not a good solution.

My proposal for a better solution would be:

1. to keep the configuration options for libblock in confdefs.h, because
libblock is part of the cpukit

2. to remove the stuff for IDE and ATA drivers from confdefs.h

3. to introduce a mechanism to add "user selected" drivers to the device
driver configuration table built in confdefs.h. I have something in mind
like:

/* in system.h */
#define CONFIGURATION_APPLICATION_SPECIFIC_DRIVERS \
    IDE_CONTROLLER_DRIVER_TABLE_ENTRY,ATA_DRIVER_TABLE_ENTRY

which would be appended to the device driver table in confdefs.h.

What I am missing now would be a proper position to replace the following:
#  ifndef CONFIGURE_ATA_DRIVER_TASK_PRIORITY
#    define CONFIGURE_ATA_DRIVER_TASK_PRIORITY \
                   ATA_DRIVER_TASK_DEFAULT_PRIORITY
#  endif
#  ifdef CONFIGURE_INIT
  rtems_task_priority ata_driver_task_priority
    = CONFIGURE_ATA_DRIVER_TASK_PRIORITY;
#  endif /* CONFIGURE_INIT */

It allows the user to configure the priority of the ata helper task,
with a default value defined. Would it be a good idea to have this in a
separate "confdefs_ata.h"?

Maybe it would even make sense o introduce a board/BSP specific
configuration headre which in turn pulls in all relevant configuration
headers form libbsp/shared, libchip and possibly cpukit, something like:

confboard.h
|
+-- libchip/conf_ata.h
|
+-- shared/conf_network_xxx.h
|
+-- confdefs.h

Any comments on this?


wkr,
Thomas.


- --

- --------------------------------------------
Embedded Brains GmbH
Thomas Doerfler        Obere Lagerstrasse 30
D-82178 Puchheim       Germany
email: Thomas.Doerfler at embedded-brains.de
Phone: +49-89-18908079-2
Fax:   +49-89-18908079-9
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEtoF859Jd6und9wsRAi7lAJ4o3SOQ9GvbBU61PoNfEg/spmZt/ACdFZZM
goQa8DSC6eX9Pkkys7X28nE=
=g3oc
-----END PGP SIGNATURE-----



More information about the users mailing list