[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.