On 03/02/2016 11:35 AM, Roger Pau Monné wrote:
El 2/3/16 a les 17:13, Wei Liu ha escrit:
CC Linux kernel and FreeBSD maintainers.
On Wed, Mar 02, 2016 at 12:29:26AM +0300, Sergei Lebedev wrote:
Hi list,
I’m not sure if this is the expected behaviour, but it seems zero-sized reads
from /dev/xen/xenbus block. Here’s sample code in Python
import os
fd = os.open("/dev/xen/xenbus", os.O_RDWR)
os.read(fd, 0) # Blocks.
The issue is not language-specific, similar code in C blocks as well.
I've tested your code on FreeBSD (after replacing /dev/xen/xenbus with
/dev/xen/xenstore), and it doesn't block there. AFAICT this is because
0-size reads never get to the device "read" routine on FreeBSD, or else
it would block.
This is how xenbus driver is designed --- it always blocks until
something is written there.
It should indeed return zero right away but I wonder whether someone
might count on current implementation (in the toolstack or elsewhere).
Based on FreeBSD behavior I'd think this shouldn't be the case.
-boris
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel