Hi Cody,

I take your points. Rather than discuss the rest further I think it's
most useful to focus on the following:

> Perhaps on windows it would. On linux "read-at-least-x" can be done
> almost entirely in the kernel (via setting VMIN)
> My point is that if there was a higher level API the library could
> choose to use os-specific impls if avaliable (and if they made sense),
> otherwise fall back to a generic method that uses the existing API.

As I've said already, we *can't* set VMIN and use the kernel's support
for this. To do that we would need to open the port without O_NONBLOCK,
which would prevent sp_nonblocking_read() and sp_nonblocking_write) from
working unless the port was reopened first.

It was a specific design goal of the library to be able to support both
blocking and non-blocking operations on the same port without reopening
it. This was because it's a specific pain point when writing drivers for
serial devices: either you open the port non-blocking and have to set
up blocking when you want it, or you open it blocking and have to bodge
things with select() and single-byte requests, whenever you want to
ensure you don't block. And all this code maps maps badly to Windows,
which uses an async request model rather than POSIX-style nonblocking I/O.

Providing separate blocking and nonblocking operations, so that you can
decide which you want at every call site, has massively simplified this
stuff for us and fixed dozens of subtle bugs in the process.

I say this to explain why the obvious answer: specifying what behaviour
you want at sp_open() time - is not an acceptable option for me.

So - I could add a function which has the semantics you want, but it
would do exactly the same thing as calling sp_wait() followed by
sp_nonblocking_read(). It would not actually set VMIN=1. Do you see that
as worthwhile?


Martin

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
sigrok-devel mailing list
sigrok-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to