Hi,

I am not able to correlate this patch with the problem description of 
#2248.

I see the changes mentioned in the patch are not required. Probably need 
to do more evaluation why the test hangs forever for 
SysfTmrTest.TestIntervalTimer. Any supporting logs?

Thanks,
Ramesh.

On 1/10/2017 6:48 PM, Anders Widell wrote:
> Hi!
>
> I don't understand this patch. To me it looks like both the timer 
> thread and the main thread will be waiting on the same selection 
> object (gl_tcb.sel_obj). Shouldn't a separate selection object be used 
> to synchronize thread start-up, to avoid a race here? Secondly, I 
> don't understand why we need this synchronization in the first place. 
> Shouldn't the timer functions work no matter if the timer thread is 
> running or not? Of course, no timer will expire until the timer thread 
> has started, but it should be possible to create timers regardless of 
> whether the thread is running or not.
>
> regards,
>
> Anders Widell
>
> On 01/03/2017 04:42 PM, Zoran Milinkovic wrote:
>>   src/base/sysf_tmr.c |  16 ++++++++++++++++
>>   1 files changed, 16 insertions(+), 0 deletions(-)
>>
>>
>> sysfTmrCreate() will wait for max 1 second for the timer thread to be 
>> fully ready to start timers.
>>
>> diff --git a/src/base/sysf_tmr.c b/src/base/sysf_tmr.c
>> --- a/src/base/sysf_tmr.c
>> +++ b/src/base/sysf_tmr.c
>> @@ -402,6 +402,10 @@ static uint32_t ncs_tmr_wait(void)
>>         ts_current = ts_start;
>>   +    /* Send the first indication to the selection object
>> +     * to synchronize threads */
>> +    m_NCS_SEL_OBJ_IND(&gl_tcb.sel_obj);
>> +
>>       while (true) {
>>           set.fd = m_GET_FD_FROM_SEL_OBJ(gl_tcb.sel_obj);
>>           set.events = POLLIN;
>> @@ -526,6 +530,18 @@ bool sysfTmrCreate(void)
>>           m_NCS_SEL_OBJ_DESTROY(&gl_tcb.sel_obj);
>>           return false;
>>       }
>> +
>> +    /* Wait for max 1 sec for ncs_tmr_wait() to be fully ready.
>> +     * The function fails if the timer thread is not ready within 1 
>> sec */
>> +    rc = osaf_poll_one_fd(gl_tcb.sel_obj.rmv_obj, 1000);
>> +    if(rc != 1) {
>> +        m_NCS_TASK_RELEASE(gl_tcb.p_tsk_hdl);
>> +        ncs_patricia_tree_destroy(&gl_tcb.tmr_pat_tree);
>> +        m_NCS_SEL_OBJ_DESTROY(&gl_tcb.sel_obj);
>> +        return false;
>> +    }
>> +    m_NCS_SEL_OBJ_RMV_IND(&gl_tcb.sel_obj, true, true);
>> +
>>       return true;
>>   }
>>
>> ------------------------------------------------------------------------------
>>  
>>
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>> _______________________________________________
>> Opensaf-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>
>


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to