From: sukadev-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org
To: Matt Helsley <matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: Re: [RFC][PATCH][cryo] Save/restore state of unnamed pipes
Date: Thu, 19 Jun 2008 18:54:10 -0700 [thread overview]
Message-ID: <20080620015410.GA13775@us.ibm.com> (raw)
In-Reply-To: <1213919160.28482.279.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
Matt Helsley [matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org] wrote:
|
| Yes, I think that's sufficient:
|
| int pipefds[2];
|
| ...
|
| restarted_read_fd = 11;
| restarted_write_fd = 12;
|
| ...
|
| pipe(pipefds);
|
| /*
| * pipe() may have returned one (or both) of the restarted fds
| * at the wrong end of the pipe. This could cause dup2() to
| * accidentaly close the pipe. Avoid that with an extra dup().
| */
| if (pipefds[1] == restarted_read_fd) {
| dup2(pipefds[1], last_fd + 1);
| pipefds[1] = last_fd + 1;
| }
|
| if (pipefds[0] != restarted_read_fd) {
| dup2(pipefds[0], restarted_read_fd);
| close(pipefds[0]);
| }
|
| if (pipefds[0] != restarted_read_fd) {
| dup2(pipefds[1], restarted_write_fd);
| close(pipefds[1]);
| }
Shouldn't the last if be
if (pipefds[1] != restarted_wrte_fd) ?
(otherwise it would break if pipefds[0] = 11 and pipefds[1] = 200)
I came up with something similar, but with an extra close(). And
in my code, I had restarted_* names referring to pipefds[] making
it a bit confusing initially.
How about using actual_fds[] (instead of pipefds) and expected_fds[]
instead of (restart_*) ?
Thanks,
Suka
|
| I think this code does the minimal number of operations needed in the
| restarted application too -- it counts on the second dup2() closing one
| of the fds if pipefds[1] == restarted_read_fd.
|
| Cheers,
| -Matt
next prev parent reply other threads:[~2008-06-20 1:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-17 21:29 [RFC][PATCH][cryo] Save/restore state of unnamed pipes sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080617212950.GB11826-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-17 22:30 ` Serge E. Hallyn
[not found] ` <20080617223039.GB26942-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-17 22:55 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-06-17 23:31 ` Matt Helsley
[not found] ` <1213745472.16057.37.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-18 0:32 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080618003214.GA14699-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-18 2:04 ` Matt Helsley
[not found] ` <1213754646.16057.107.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-18 18:00 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080618180025.GA25261-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-18 19:57 ` Matt Helsley
[not found] ` <1213819055.28482.50.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-18 21:56 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080618215612.GA27603-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-18 22:38 ` Matt Helsley
[not found] ` <1213828689.28482.92.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-18 22:55 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-06-19 7:59 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080619075953.GA4295-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-19 23:46 ` Matt Helsley
[not found] ` <1213919160.28482.279.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-20 1:54 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA [this message]
[not found] ` <20080620015410.GA13775-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-06-20 2:48 ` Matt Helsley
2008-06-22 21:40 ` Oren Laadan
[not found] ` <485EC6E4.4080707-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-06-23 23:30 ` Dave Hansen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080620015410.GA13775@us.ibm.com \
--to=sukadev-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=matthltc-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox