Is this intended for master only or also for the 4.11 branch?

On 7/23/2015 7:54 AM, Sebastian Huber wrote:
https://lists.rtems.org/pipermail/devel/2015-July/011989.html

Its fully functional and well tested.  It is based on the FreeBSD support:

https://git.rtems.org/rtems-libbsd/tree/rtemsbsd/include/machine/rtems-bsd-muteximpl.h
https://git.rtems.org/rtems-libbsd/tree/rtemsbsd/rtems/rtems-bsd-muteximpl.c

It is used to implement the Newlib internal locks and the libgomp (GCC OpenMP
support) operating system services.

There is one issue I am not that happy about.  There are two thread queue
definitions:

1. in Newlib <sys/lock.h>

struct _Thread_queue_Queue {
        struct _Thread_queue_Heads *_heads;
        struct _Ticket_lock_Control _Lock;
};

2. in <rtems/score/threadq.h>

typedef struct {
   Thread_queue_Heads *heads;

   /**
    * @brief Lock to protect this thread queue.
    *
    * It may be used to protect additional state of the object embedding this
    * thread queue.
    *
    * @see _Thread_queue_Acquire(), _Thread_queue_Acquire_critical() and
    * _Thread_queue_Release().
    */
#if defined(RTEMS_SMP)
   SMP_ticket_lock_Control Lock;
#endif
} Thread_queue_Queue;

In RTEMS the lock is optional.  In Newlib the storage must be always present
for the lock to be independent of the actual RTEMS build configuration.  I
ensure with static assertions that the layout of these two structures is
compatible (see top of cpukit/score/src/mutex.c).  For the Newlib definition it
would be sufficient to provide a structure with arbitrary content.  Only the
alignment and size must fit (see glibc header files for objects shared by
user/kernel space).  For debugging purposes it is quite handy to have an
identical layout.  I use a cast to get the score definition, e.g.

static Thread_queue_Queue *_Futex_Get_thread_queue(
   struct _Futex_Control *futex
)
{
   return (Thread_queue_Queue *) &futex->_Queue;
}

This may, however, lead to strict aliasing problems.  I am not sure how to
solve this technically best.

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


--
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherr...@oarcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to