interprocess-0.2.1.0: src/Control/Concurrent/Process/StoredMVarPrim.cmm
#include "Cmm.h"
cmm_mvar_take(W_ mvar, W_ localDataPtr) {
W_ sptr;
CInt r;
("ptr" sptr) = ccall getStablePtr(CurrentTSO "ptr") "unsafe";
(r) = ccall mvar_take (mvar "ptr", localDataPtr "ptr", sptr "ptr") "safe";
ccall freeStablePtr (sptr "ptr") "unsafe";
return (TO_W_(r));
}
cmm_mvar_put(W_ mvar, W_ localDataPtr) {
W_ sptr;
CInt r;
("ptr" sptr) = ccall getStablePtr(CurrentTSO "ptr") "unsafe";
(r) = ccall mvar_put (mvar "ptr", localDataPtr "ptr", sptr "ptr") "safe";
ccall freeStablePtr (sptr "ptr") "unsafe";
return (TO_W_(r));
}
cmm_mvar_read(W_ mvar, W_ localDataPtr) {
W_ sptr;
CInt r;
("ptr" sptr) = ccall getStablePtr(CurrentTSO "ptr") "unsafe";
(r) = ccall mvar_read (mvar "ptr", localDataPtr "ptr", sptr "ptr") "safe";
ccall freeStablePtr (sptr "ptr") "unsafe";
return (TO_W_(r));
}
cmm_mvar_swap(W_ mvar, W_ inPtr, W_ outPtr) {
W_ sptr;
CInt r;
("ptr" sptr) = ccall getStablePtr(CurrentTSO "ptr") "unsafe";
(r) = ccall mvar_swap (mvar "ptr", inPtr "ptr", outPtr "ptr", sptr "ptr") "safe";
ccall freeStablePtr (sptr "ptr") "unsafe";
return (TO_W_(r));
}