-
Kirill Tkhai authored
The idea is symilar to kernel's wake_up() and wait_event(). One task needs some event. It checks the event has not happened yet (fle hasn't received, unix peer hasn't bound, etc) and calls get_fds_event(). Other task makes the event (sends a fle, binds the peer to a name, etc) and calls set_fds_event(). So, while there is no an event, the first task is sleeping, and the second wakes it up later: Task A: clear_fds_event(); if (!socket_bound) wait_fds_event(); /* sleep */ Task B: bind_socket(); set_fds_event(); /* wake up */ For the details of using see next patches. v5: Use bit operations. Split clear_fds_event from wait function. v2: Do not wait for foreign transport sock is ready, as it's guarantied by we create it before CR_STATE_FORKING. travis-ci: success for Rework file opening scheme to make it asynchronous (rev5) Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
735461e1
Name |
Last commit
|
Last update |
---|---|---|
Documentation | ||
contrib | ||
coredump | ||
crit | ||
criu | ||
images | ||
include/common | ||
lib | ||
scripts | ||
soccr | ||
test | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
COPYING | ||
CREDITS | ||
INSTALL.md | ||
Makefile | ||
Makefile.config | ||
Makefile.install | ||
Makefile.versions | ||
README.md |