==== MouSynch ====
**Bindings**: [[synch#C bindings|C]], [[synch#MASM bindings|MASM]]
This call provides synchronous access for a mouse subsystem to the mouse device driver.
//MouSynch// (IOWait)
//IOWait// (**USHORT**) - input
Wait for access. The flag Word is defined as follows:
^Value ^Definition ^
|0 |Control immediately returned to requestor. |
|1 |Requestor waits until mouse device driver is free. |
//rc// (**USHORT**) - return
Return code descriptions are:
|0 |NO_ERROR |
|121 |ERROR_SEM_TIMEOUT |
**Remarks**
[[en:ibm:prcp:mou:synch|MouSynch]] blocks all other threads within a session until the semaphore clears (returns from the subsystem to the router). To ensure proper synchronization, MouSynch should be issued by a mouse subsystem if it intends to access dynamically modifiable shared data for each session or if it intends to issue a [[en:ibm:prcp:cpi:dosdevioctl|DosDevIOCtl]]. [[en:ibm:prcp:mou:synch|MouSynch]] does not protect globally shared data from threads in other sessions.
=== C bindings ===
#define INCL_MOU
USHORT rc = MouSynch(IOWait);
USHORT IOWait; /* Indicate wait/no wait */
USHORT rc; /* return code */
=== MASM bindings ===
EXTRN MouSynch:FAR
INCL_MOU EQU 1
PUSH WORD IOWait ;Indicate wait/no wait
CALL MouSynch
Returns WORD