Re: question on resume()



Am Mittwoch, 31. Januar 2007 09:49 schrieb Rafael J. Wysocki:
On Wednesday, 31 January 2007 09:40, Oliver Neukum wrote:
Am Mittwoch, 31. Januar 2007 09:33 schrieb Rafael J. Wysocki:
On Tuesday, 30 January 2007 23:32, Rafael J. Wysocki wrote:

Generally, you are safe if your driver only calls wake_up() from a process
context, but not from .resume() or .suspend() routines (or from an
unfreezeable kernel thread).

Ah, sorry, I've just realized I was wrong. Processes in TASK_UNINTERRUPTIBLE
cannot be frozen! So, the above only applies to wake_up_interruptible().

So the kernel will wait for tasks in TASK_UNINTERRUPTIBLE to finish IO
before it calls suspend()? I am confused.

Yes, it will. The process freezer can only return success if there are no more
TASK_UNINTERRUPTIBLE tasks. Otherwise it fails (after a timeout).

So, this means, on suspend():

1. Don't worry about TASK_UNINTERRUPTIBLE
2. Do worry about TASK_INTERRUPTIBLE
We have to cease IO and must not call wake_up_interruptible()

Isn't that a race until suspend() is called?

On resume():

1. Don't worry about TASK_UNINTERRUPTIBLE
2. Do not restart IO that may call wake_up_interruptible()

When do we restart such IO?

Regards
Oliver
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: question on resume()
    ... but not from .resumeor .suspendroutines (or from an ... unfreezeable kernel thread). ... before it calls suspend()? ... The process freezer can only return success if there are no more ...
    (Linux-Kernel)
  • Re: question on resume()
    ... context, but not from .resumeor .suspendroutines (or from an ... unfreezeable kernel thread). ... before it calls suspend()? ...
    (Linux-Kernel)
  • Re: Thread ending
    ... Can you tell us therefore what is the reason for you to restart it. ... So I don't want to start another thread that computes the new primes while ... parameters but everywhere I read says that abort is not the way to go yet ... But the suspend() is depreciated in 2.0;/ Seems the only thing I'm ...
    (microsoft.public.dotnet.languages.csharp)
  • hibernate vs. WoL
    ... poweroff is not called for the 'shutdown' or 'restart' ... hibernate methods. ... drivers platforms that have no 'platform' suspend method then cannot WoL ... for 'restart' that isn't very relevant). ...
    (Linux-Kernel)
  • Re: Restarting a CWinThread when it is running halfway.
    ... the triggers comes from an interrupt. ... to suspend immediately. ... restart, so it's a little hard to suggest a very specific approach. ... I have a trigger event via interrupt. ...
    (microsoft.public.windowsce.embedded.vc)