Get state binary semaphore

Suprunenko Evgeniy suprunenko at fastwel.ru
Thu Jul 9 10:05:00 UTC 2015


Hello.

I am trying to get state of my binary semaphore. I need state, because I release semaphore at my interrupt handler (If semaphore didn't obtained, I must print error).
I found similar sample in testsuites (sptests/spincritical06).

uint32_t getState(rtems_id Semaphore)
{
            Objects_Locations  location;
            Semaphore_Control *sem;
            CORE_mutex_Control           *the_mutex;

            sem = (Semaphore_Control *)_Objects_Get(
              &_Semaphore_Information, Semaphore, &location );

            if ( location != OBJECTS_LOCAL ) {
                        printf( "Bad object lookup", location);
            }

the_mutex = &sem->Core_control.mutex;
...
Print("lock %x\n", the_mutex->lock);
}
At my interrupt handler I print elements of structure CORE_mutex_Control:
typedef struct {
...
uint32_t                lock;
  uint32_t                nest_count;
  uint32_t                blocked_count;
...
}   CORE_mutex_Control;


At all variants:
nest_count = 1
lock = 0
blocked count increase after every rtems_semaphore_send.

Elements don't change after rtems_semaphore_release

Please, help me. How to get real state?

Evgeniy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20150709/c8d5177a/attachment.html>


More information about the users mailing list