[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/2017 16:56, Jan Beulich wrote: Oh. sorry about that. I saw this format in few previous commits and adopted it. Will correct it.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 ) No, its same. Ok, will use the suggested approach. ? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |