[PATCH rtems6 - v1 06/16] Flashdev: Make mutex name more generic
Bernd Moessner
berndmoessner80 at gmail.com
Thu Jan 4 21:53:05 UTC 2024
On 04.01.2024 19:55, Kinsey Moore wrote:
> On Thu, Jan 4, 2024 at 12:35 PM <berndmoessner80 at gmail.com> wrote:
>
> From: Bernd Moessner <berndmoessner80 at gmail.com>
>
> ---
> cpukit/dev/flash/flashdev.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/cpukit/dev/flash/flashdev.c b/cpukit/dev/flash/flashdev.c
> index 8bd3d11246..0020e8d2c1 100644
> --- a/cpukit/dev/flash/flashdev.c
> +++ b/cpukit/dev/flash/flashdev.c
> @@ -34,6 +34,7 @@
>
> #include <errno.h>
> #include <fcntl.h>
> +#include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <unistd.h>
> @@ -490,7 +491,9 @@ static int rtems_flashdev_do_init(
> void ( *destroy )( rtems_flashdev *flash )
> )
> {
> - rtems_recursive_mutex_init( &flash->mutex, "RTEMS_FLASHDEV
> Flash" );
> + char mtx_name[19];
> + sprintf(mtx_name, "FDEV_MTX_%08x", (unsigned int) flash);
> + rtems_recursive_mutex_init( &flash->mutex, (const char*)
> &mtx_name );
>
>
> None of the other uses of mutexes in cpukit differentiate between
> various instantiations and the information you've added here is
> already available if you know the mutex address and know that it's a
> flash mutex.
>
> Is there a reason this needs to differentiate between the various
> instances where others don't?
>
> Kinsey
I already know that i will require two instances of flashedev.
I had two thoughts on my mind:
a) I was worried that creating two mutex with the same name could cause
problems
b) Not sure if that already exists for RTEMS but I had those debug views
in mind where you can immediately see all kernel objects (tasks, mutex,
etc.).
Therefore, I thought about a way to make the mutex name unique.
Note: You've hit the weak spot and I've changed the implementation in a
later patch. Perhaps, I have completely misunderstood the docs:
https://docs.rtems.org/branches/master/c-user/self_contained_objects.html
The|name|must be persistent throughout the life-time of the mutex.
A|name|of|NULL|is valid. The mutex is unlocked after initialization.
Things worked out on my side, but I the "persistent" made me a worry
about the fact that mtx_name goes out scope. Therefore, I've added the
required buffer to the flashdev struct to store the name there.
I am open for all solutions: keeping Aarons implementation, passing NULL
as name, better ideas to create unique names.
More information about the devel
mailing list