"Can't obtain network semaphore"
Till Straumann
strauman at slac.stanford.edu
Wed Dec 15 05:43:00 UTC 2004
Ian Caddy wrote:
> Till Straumann wrote:
>
>> Ian Caddy wrote:
>>
>>> What would happen if the network semaphore object id was corrupted.
>>> It wouldn't even get to the section of code to get the mutex, but
>>> would return on invalid ID error when it tried to get the object.
>>>
>>> Steve did not mention what the actual return code from the call to
>>> the semaphore get, does it correspond to the internal return code of 4?
>>
>>
>>
>> Yes, Steve did report earlier a return code of 4
>>
>
> If the actual return code from the actual call:
>
> sc = rtems_semaphore_obtain
You're off track. The ID isn't used but the networking code
uses the core mutex directly. Read libnetworking/rtems/rtems_glue.c
(RTEMS_FAST_MUTEX defined)
T.
>
> was 4 then (at least on 4.5.0) indicates a:
>
> RTEMS_INVALID_ID = 4, /* invalid object id */
>
> In this case it would not go into any of the mutex code.
>
>
>
>>> This could have been returned from another earlier function call.
>>
>>
>>
>> No. _CORE_mutex_Seize() sets this to 0 on entry (in 'trylock').
>>
>> T.
>>
>
> But if the ID is invalid, it will not enter the seize code, therefore
> the Wait.return_code will not get initialised or even changed from what
> ever it was set to before the call, in other words from the last call
> that modified it.
>
> The actual return code from the function is different to the
> Wait.return_code as it is translated at the end of semobtain.c:
>
> return _Semaphore_Translate_core_mutex_return_code(
> _Thread_Executing->Wait.return_code );
>
>
> The acual rtems_status_code of 4 is not possible through this mechanism.
>
> Ian Caddy
>
More information about the users
mailing list