Purpose of rtems_device_driver?

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Sep 30 06:04:28 UTC 2020

Hello Peter,

On 29/09/2020 20:01, Peter Dufault wrote:
>> On Sep 29, 2020, at 10:13 , Joel Sherrill<joel at rtems.org>  wrote:
>> On Tue, Sep 29, 2020 at 8:54 AM Sebastian Huber<sebastian.huber at embedded-brains.de>  wrote:
>> On 29/09/2020 15:47, Sebastian Huber wrote:
>>> On 29/09/2020 15:42, Joel Sherrill wrote:
>>>> On Tue, Sep 29, 2020 at 8:37 AM Sebastian Huber
>>>> <sebastian.huber at embedded-brains.de
>>>> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>>>>      Hello,
>>>>      I work currently on the documentation of the IO Manager. What is the
>>>>      purpose of
>>>>      typedef rtems_status_code rtems_device_driver;
>>>>      ?
>>>>      For me this looks a bit like camouflage.
>>>> No. It is a use of typedef to make the purpose of the method clear.
>>>> You have nibbled at these for years. There were at least types for
>>>> Classic Tasks, ASRs, and TSRs at one point.
>>> Yes, the typedefs to void.
>>>> If this is the last one, I'm not going to fight it. This isn't the
>>>> hill I am
>>>> going to die on.
>>> I am not suggesting to remove them although I find these typedefs
>>> pretty odd. I just look for some documentation text.
>> What about this:
>> /**
>>    * @ingroup RTEMSAPIClassicIO
>>    *
>>    * @brief This type shall be used in device driver entry declarations and
>>    *   definitions.
>>    *
>>    * Device driver entries return an #rtems_status_code status code. This
>> type
>>    * definition helps to document device driver entries in the source code.
>>    */
>> typedef rtems_status_code rtems_device_driver;
>> That's more than sufficient.
>> Thanks.
> This typedef is odd.  Unless I'm missing a fine-point.
> If the typedef is, and always will remain, "rtems_status_code" I would not use a typedef.

I don't want to change the API, I just want to document it. However, I 
am not sure if we should advertise the use of these typedefs in 
application code:

typedef rtems_status_code rtems_device_driver;

typedef void rtems_task;

typedef void rtems_timer_service_routine;

typedef void rtems_asr;

If you consistently use these types, then for example you can grep for 
"\<rtems_task\>" and find all task entry functions. I guess some people 
like this, other don't like it.

> The RTEMS API documentation is moving to Doxygen (and more formally than that given Sebastian's ESA work). Using a typedef to indicate a function is part of a device driver as "documentation" is not a good idea.

The API documentation is not really moving to Doxygen. It moves to specification items after consolidation and then it moves back to Doxygen and the manuals. A common data set and the generation through a script ensures that the documentation in both parts is consistent.

More information about the devel mailing list