Denis Oliver Kropp wrote:
> Victor Liu wrote:
>> Hi,
>>
>> while I am using DirectFB with fusion, some time the application was locked.
>> we debugged into, find lock is in fusion. I looked the code, found a place
>> seems missed unlock (see red line or comment). if any one knows
>> linux-fusion, please make sure. both 3.x or 7.x have same code.
>>
>> Thanks,
>> Victor Liu
>>
>> int
>> fusion_skirmish_prevail (FusionDev *dev, int id, int fusion_id)
>> {
>> int ret;
>> FusionSkirmish *skirmish;
>> #ifdef FUSION_DEBUG_SKIRMISH_DEADLOCK
>> FusionSkirmish *s;
>> int i;
>> bool outer = true;
>> #endif
>> dev->stat.skirmish_prevail_swoop++;
>> ret = fusion_skirmish_lock( &dev->skirmish, id, true, &skirmish );
>> if (ret)
>> return ret;
>>
>> ......
>>
>> up( &dev->skirmish.lock );
>> while (skirmish->lock_pid) {
>> ret = fusion_skirmish_wait( skirmish, NULL );
>> if (ret)
>> {
>> fusion_skirmish_unlock( skirmish ); // original code does not have
>> this line
>
> IIRC, a non-zero return value (error) means the lock is not reacquired.
> Only if the call was successful, the code needs to unlock it.
>
> But I'm checking the code now (fusion_entry_wait).
The code looks fine. Where exactly is it blocking in your case?
--
Best regards,
Denis Oliver Kropp
.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/ |
"------------------------------------------"
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev