On Mar 2, 2012 10:37 AM, "Lennert Buytenhek" <buyt...@wantstofly.org> wrote: > > One problem you can get into with this scheme is a kind of priority > inversion. If the low priority process does: > > fd = open("/foo/bar", O_RDWR); > flock(fd, LOCK_EX); > > and the high priority process then also does: > > fd = open("/foo/bar", O_RDWR); > flock(fd, LOCK_EX); > > and the low priority process then does: > > sleep(1); > flock(fd, LOCK_UN); > > and the system then goes into suspend, you'll not wake up again > after that second expires, and you might not wake up again soon > at all. The low priority process doesn't even have to sleep > explicitly, if it takes a page fault you get basically the same > thing.
I believe the cgroup method will catch this though. I would have to double check, but I think that the cgroup becomes partially frozen returning EBUSY until all the processes can properly be frozen. At that time I believe it is up to userspace to thaw, or refreeze the group, unless the blocking process ends in which case the entire cgroup is set to the frozen state. -Jon
_______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel