[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] XenBus: Don't wait for producer to fill the ring if the ring
>>> On 17.05.17 at 16:57, <anshul.makkar@xxxxxxxxxx> wrote: > The condition to check for if there is space in the ring buffer > also becomes true if the buffer is full, thus consumer waits for > the producer to fill the buffer eventhough it is already full. > > To resolve the situation, check if the buffer is full and then > break from the loop. > e.g case: prod = 1272, cons = 248. > > Signed-off-by: Anshul Makkar <anshul.makkar@xxxxxxxxxx> Please avoid indenting the entire commit message. > --- a/tools/firmware/hvmloader/xenbus.c > +++ b/tools/firmware/hvmloader/xenbus.c > @@ -141,7 +141,18 @@ static void ring_read(char *data, uint32_t len) > /* Don't overrun the producer pointer */ > while ( (part = MASK_XENSTORE_IDX(rings->rsp_prod - > rings->rsp_cons)) == 0 ) > + { > + /* don't wait for producer to fill the ring if it is already > full. > + * Condition happens when you write string > 1K into the ring. > + * eg case prod=1272 cons=248. > + */ Comment style. > + if ( !(XENSTORE_RING_SIZE - (rings->rsp_prod - rings->rsp_cons)) > ) Is this any different from if ( rings->rsp_prod - rings->rsp_cons == XENSTORE_RING_SIZE ) ? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |