[PATCH 2/2] c-user: Generate message manager documentation

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Apr 22 17:51:24 UTC 2021


On 22/04/2021 17:44, Gedare Bloom wrote:

>> +.. index:: RTEMS_MESSAGE_QUEUE_BUFFER()
>> +
>> +.. _InterfaceRTEMSMESSAGEQUEUEBUFFER:
>> +
>> +RTEMS_MESSAGE_QUEUE_BUFFER()
> Before now, this was not well documented. It is good to add, but I
> wonder if this is also a good time to make it more like other
> macro-based declarations?
I would like to document what we have first and then in a second step 
change the API if necessary.
> RTEMS_MESSAGE_QUEUE_BUFFER_DECLARE()?
>
> This is not strictly related to this patch, but it could be an
> opportunity to provide a uniform API for variable declarations. I
> guess it could be made more clear that  this defines a type.

One problem is that RTEMS_MESSAGE_QUEUE_ is already quite long. We have 
to balance precision and the name length.

An RTEMS_MESSAGE_QUEUE_BUFFER_TYPE( maximum_message_size ) could be an 
option. I think the current use in the code is quite readable:

#define MESSAGE_SIZE 1

static RTEMS_MESSAGE_QUEUE_BUFFER( MESSAGE_SIZE ) buffers[ 1 ];

static const rtems_message_queue_config config = {
   .name = rtems_build_name( 'M', 'S', 'G', '2' ),
   .maximum_pending_messages = RTEMS_ARRAY_SIZE( buffers ),
   .maximum_message_size = MESSAGE_SIZE,
   .storage_area = buffers,
   .storage_size = sizeof( buffers ),
   .attributes = RTEMS_GLOBAL
};

We could add an

RTEMS_MESSAGE_QUEUE_BUFFER_DEFINE( designator, maximum_message_size, maximum_pending_messages )

convenience macro in addition to RTEMS_MESSAGE_QUEUE_BUFFER().

A declare AND define macro is a bit difficult since you would need exactly one buffer type definition I guess. This is one of the reasons for the type macro. You can embed the message buffers in a custom structure type.

> Maybe,
> the API should have some way to simplify declaring/defining variables
> of this type as well?
>
> RTEMS_MESSAGE_QUEUE_BUFFER_DEFINE( name, maximum_message_size )
> RTEMS_MESSAGE_QUEUE_BUFFER_DEFINE_ARRAY( name, maximum_message_size, array_size)
>
> RTEMS_MESSAGE_QUEUE_CONFIG_DECLARE ( config_name, mq_name,
> maximum_message_size, num_buffers, attributes)
> can even further simplify things to provide an API for these static
> objects. This should be taken up separately from the doco, just
> something came to my mind while reading this, due to the addition of
> this API macro to the documentation.
For the config, we could add a

RTEMS_MESSAGE_QUEUE_CONFIG_INITIALIZER()

macro. However, this is less readable than the C version with designated initializers.

>
-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list