seq: simplified pvPut and pvGet implementation
Instead of using per channel semaphores to check for completion, the new implementation uses the request pointer. A NULL pointer means that no request is pending, i.e. either the request was cancelled or it completed sucessfully or we lost connection to the PV. The CA callback resets the request pointer before signalling to the state set where the request originated, that /some/ event happened. This re-uses the the existing sync semaphore. ASYNC operations no longer use a semaphore at all, only the SYNC variants do. However, it becomes even more important to check whether a disconnect happened, since this is "some event", too, i.e. it causes pending requests to be cancelled.
Loading
Please register or sign in to comment