Questions about complete

loody miloody at
Fri Jan 7 09:21:30 EST 2011

hi all:

2011/1/6 Rajat Sharma <fs.rajat at>:
> Hi loody,
> calling complete will make the waiter process runnable but won't
> necessarily switch to waiter thread and make it run. Its upto
> scheduler to pick this process from run queue and execute based on its
> priority value. I think there is not deterministic time in which the
> waiter process will start executing.
> Probably what you want to do is calibrate timeout value in
> wait_for_completion_timeout. I would suggest to do a binary search
> between minimum timeout value (latency by which function A calls
> complete, though this process can also schedule in between) to max
> value (max your application can afford).
> Rajat
> On Thu, Jan 6, 2011 at 1:35 PM, loody <miloody at> wrote:
>> hi:
>> 2011/1/6 Pavan Savoy <pavan_savoy at>:
>>> On Thu, Jan 6, 2011 at 12:23 PM, loody <miloody at> wrote:
>>>> hi:
>>>> 2011/1/6 Pavan Savoy <pavan_savoy at>:
>>>>> On Thu, Jan 6, 2011 at 11:48 AM, loody <miloody at> wrote:
>>>>>> Dear all:
>>>>>> I know complete will wake up the process who call wait_complete.
>>>>>> Is there any methods I can use to measure how long from calling
>>>>>> complete to the process that detect done=1?
>>>>>> Regards,
>>>>>> miloody
>>>>> returned value of wait_for_completion_timeout ?
>>>> No.
>>>> I want to measure the duration of complete to the time of wake up
>>>> process who is pending on wait.
>>> Ah, Ok, Got it...
>>> I would do a copy of jiffies before the complete and do a diff for
>>> jiffies after the
>>> wait_for_ ...
>>> I suppose there would be much more better/optimized way ....
>> thank U :)
>> why I ask so is I am porting kernel to other platform right now.
>> and I found the time of getting complete is too long.
>> What I mean is
>> function A call wait_complete_timeout
>> function B complete
>> theoretically A will get complete and leave successfully
>> but my platform A will told me that before timeout the complete is not got.

I doubt my problem comes from cpu timer interrupt is so often such
that when function B get the change to complete, the left time is
almost exhausted.
for not to be confused, I take following jiffies for example:
1               2            3            4            5
6            8
start wait                                      B try complete
       time out

B try to complete but cpu timer keep firing and at 8 it is time out.
My platform is mips and is there any possibility to only let cpu timer
be preemptible?

BTW, in x86 or other ARCH, will they try to let timer ISR be preemptible?


More information about the Kernelnewbies mailing list