mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-07-31 01:45:10 +02:00
Updated ...md (markdown)
parent
89a602520a
commit
4ce35c1462
13
...md.md
13
...md.md
@ -32,9 +32,18 @@ Brief design details of POSIX wrapper
|
|||||||
- IO completions
|
- IO completions
|
||||||
- Signals
|
- Signals
|
||||||
- Timers
|
- Timers
|
||||||
+ All underlying Win32 IO API calls are made asynchronous (non-blocking). Blocking semantics are implemented within the wrapper by an explicit wait for IO to complete.
|
+ All underlying Win32 IO API calls are made asynchronous (non-blocking). Blocking semantics are implemented within the wrapper by an explicit "wait_for_any" for IO to complete.
|
||||||
+ Uses [APCs](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681951(v=vs.85).aspx) wherever available and minimzing use of [events](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspx). This simplifies code and has performance benefits.
|
+ Uses [APCs](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681951(v=vs.85).aspx) wherever available and minimzing use of [events](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspx). This simplifies code and has performance benefits.
|
||||||
+ Maintains internal buffers to accommodate an underlying fundamental difference between POSIX and Win32 IO APIs - IOReady Vs IOComplete (Ex for a Read operation, POSIX APIs signal when IO is ready - date will be subsequently, explicitly read, Win32 APIs signal when IO has completed - data is already copied to a user provided buffer.
|
+ Maintains internal buffers to accommodate an underlying fundamental difference between POSIX and Win32 IO APIs - IOReady Vs IOComplete (Ex for a Read operation, POSIX APIs signal when IO is ready - date will be subsequently, explicitly read, Win32 APIs signal when IO has completed - data is already copied to a user provided buffer. Though this may be perceived as a performance hit, a validation exercise did not show any major impact. It in fact proved beneficial in reducing kernel calls during "read"s (ex. reading a header, would fetch the entire packet in a single call).
|
||||||
|
+ Additional details on underlying Win32 calls used
|
||||||
|
| POSIX IO call | Underlying Win32 IO call | Additional details |
|
||||||
|
|-----|-----|
|
||||||
|
| accept | AcceptEx | No APC semantics so, explicit event used for async IO |
|
||||||
|
| connect | ConnectEx | No APC semantics so, explicit event used for async IO |
|
||||||
|
| send | WSASend | |
|
||||||
|
| recv | WSARecv | |
|
||||||
|
| open | CreateFile | |
|
||||||
|
| pipe | CreateNamedPipe | A uni directional named pipe with and internal name is created, CreateFile called to connect from other end |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user