How can we extract mutex_control

Gedare Bloom gedare at
Thu Aug 13 10:36:26 UTC 2015

On Thu, Aug 13, 2015 at 4:57 AM, Saurabh Gadia <gadia at> wrote:
> For time being I am calculating it this way:
> #define typeaddr(addr, type, member) \
>   (type *)((char *)(addr) - offsetof(type, member))
If you need this, use RTEMS_CONTAINER_OF macro

> CORE_mutex_Control *the_mutex= typeaddr(holder->Wait.queue,
> CORE_mutex_Control, Wait_queue);
if holder is from the CORE_mutex_Control, you can use container-of on
it directly.

> Is there any other easy way? Like I guess we maintain objects so is there a
> way to get Object from its id. But its again convoluted problem - how to get
> id?
id are used from the upper APIs. they get converted into pointers by
_Objects_Get(). I don't know if that is what you want to do or not,

It looks like you're in the right direction.


> Thanks,
> Saurabh Gadia
> On Thu, Aug 13, 2015 at 12:20 AM, Saurabh Gadia <gadia at> wrote:
>> Hi,
>> For a given thread waiting on a mutex, how can we extract the
>> mutex_control on which this thread is waiting? For example in
>> Thread_Change_priority(). So do the thread_control structure has any
>> reference to mutex on which it is blocked?
>> Thanks,
>> Saurabh Gadia

More information about the devel mailing list