|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [help] problem with watch_pipe in xenstore
On Fri, Aug 10, 2012 at 4:22 AM, éç <aware.why@xxxxxxxxx> wrote:
> Hi all,
> In src/tools/xenstore/xs.c : get_handle(), it says
>
> /* Watch pipe is allocated on demand in xs_fileno(). */
> h->watch_pipe[0] = h->watch_pipe[1] = -1;
>
>
> but in xs_fileno() function:
>
> 137-int xs_fileno(struct xs_handle *h)
> 138{
> 139 char c = 0;
> 140
> 141 mutex_lock(&h->watch_mutex);
> 142
> 143 if ((h->watch_pipe[0] == -1) && (pipe(h->watch_pipe) != -1)) {
> 144 /* Kick things off if the watch list is already
> non-empty. */
> 145 if (!list_empty(&h->watch_list))
> 146 while (write(h->watch_pipe[1], &c, 1) != 1)
> 147 continue;
> 148 }
> 149
> 150 mutex_unlock(&h->watch_mutex);
> 151
> 152 return h->watch_pipe[0];
> 153}
>
> When did it assign value to watch_pipe[0] and what does watch_pipe[0] and
> watch_pipe[1] stands for respectively?
>
> In addition, the two lines `while (read(h->watch_pipe[0], &c, 1) != 1)` and
> `while (write(h->watch_pipe[1], &c, 1) != 1)` appears many times,
> it's odd that why always writing to watch_pipe[1] but nobody read from it
> and why always reading from watch_pipe[0] but nobody write to it?
>
> Grep found no answer and it's difficult to search for the trivial question
> by goole!
"man pipe" can answer all your questions.
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |