Re: interference of FFI with poll(3)?

"Edward Z. Yang" <[email protected]> Sun, 29 Apr 2012 00:48:27 -0400
Newsgroups gmane.comp.lang.haskell.ffi
Message-ID <1335674853-sup-9536@ezyang>
SGVsbG8gTmljaywKClRoZSBHSEMgcnVudGltZSBzeXN0ZW0gdXNlcyBhbGFybSBzaWduYWxzIGZv
ciBhIHZhcmlldHkgb2YgcHVycG9zZXMsCmFuZCBwYXJ0IG9mIHRoaXMgbWVhbnMgdGhhdCB5b3Vy
IGNvZGUgbmVlZHMgdG8gcHJvcGVybHkgaGFuZGxlCkVJTlRSLiAgUGxlYXNlIHNlZTogaHR0cDov
L2hhY2thZ2UuaGFza2VsbC5vcmcvdHJhYy9naGMvd2lraS9Db21tZW50YXJ5L1J0cy9TaWduYWxz
CmZvciBtb3JlIGluZm9ybWF0aW9uLgoKQ2hlZXJzLApFZHdhcmQKCkV4Y2VycHRzIGZyb20gTmlj
ayBSdWRuaWNrJ3MgbWVzc2FnZSBvZiBTYXQgQXByIDI4IDA3OjIxOjMwIC0wNDAwIDIwMTI6Cj4g
RGVhciBhbGwsCj4gCj4gYWZ0ZXIgbm90aWNpbmcgcHJvYmxlbXMgd2l0aCBsaWJzc2gyLCBhbmQg
dHJ5aW5nIHRvIGZpeCB0aGlzIG15c2VsZiwgSSByYW4KPiBpbnRvIGEgc3RyYW5nZSBleHBlcmll
bmNlIHdoaWNoIEkgd2lzaCB0byBnZXQgYW4gZXhwbGFuYXRpb24gZm9yLgo+IAo+IEFmdGVyIGNv
bXBpbGluZyBhbiBPcGVuU1NIIHNlcnZlciBhbmQgYSByYXcgQyBsaWJzc2gyIChmb3IgY29tcGFy
aXNvbikgd2l0aAo+IGRlYnVnIG1lc3NhZ2luZywgSSB3aXRoIHN1cHBvcnQgb2YgdGhlIGxpYnNz
aDIgY29tbXVuaXR5IHdhcyBhYmxlIHRvIHRyYWNlCj4gdGhlIHByb2JsZW0gYmFjayB0byBhIGNh
bGwgdG8gcG9sbCgzKSBpbiBzZXNzaW9uLmM6Ol9saWJzc2gyX3dhaXRfc29ja2V0KCksCj4gCj4g
ICAgcmMgPSBwb2xsKHNvY2tldHMsIDEsIGhhc190aW1lb3V0P21zX3RvX25leHQ6IC0xKTsKPiAK
PiB3aGVyZSBzb2NrZXRzIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHNvY2tldCwgc2Vzc2lvbi0+c29j
a2V0X2ZkLgo+IAo+IFRoaXMgaXMgcm91Z2hseSBhIHBvbGxpbmcgd2l0aCB0aW1lb3V0IGZvciB0
aGUgY29ubmVjdGlvbiDigJMgYW5kLCB3aXRoIHRoZQo+IEhhc2tlbGwgRkZJLCBhbgo+IAo+ICAg
ZXJyb3IgNCAvIEVJTlRSIC8gSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwKPiAKPiBpcyB0aHJvd24s
IGFuZCBJIHdhcyBleHBsYWluZWQgdGhhdCB0aGlzIHByb2JhYmx5IGlzIGNhdXNlZCBieSBhbm90
aGVyCj4gc2lnbmFsIG9mIHRoZSBzYW1lIGNvZGUgdW5pdC4gTm90IGZpbmRpbmcgYW55dGhpbmcs
IEkgYXQgdGhlIGVuZCBleHRlbmRlZAo+IGxpYnNzaDIgYnkgYSBmdW5jdGlvbiwKPiAKPiBMSUJT
U0gyX0FQSSB2b2lkIGxpYnNzaDJfdGVzdCh2b2lkKXsKPiAgIHN0cnVjdCBzb2NrYWRkcl9pbiBz
aW47Cj4gICBMSUJTU0gyX1NFU1NJT04gKnNlc3Npb247Cj4gICBjb25zdCBjaGFyICpmaW5nZXJw
cmludDsKPiAgIExJQlNTSDJfQ0hBTk5FTCAqY2hhbm5lbDsKPiAgIGNvbnN0IHVuc2lnbmVkIGxv
bmcgaG9zdGFkZHI9IGh0b25sKDB4N0YwMDAwMDEpOwo+ICAgY29uc3QgY2hhciAqdXNlcm5hbWU9
ICJpIjsKPiAgIGNvbnN0IGNoYXIgKmtleWZpbGUxPSIvaG9tZS9pLy5zc2gvaWRfcnNhLnB1YiI7
Cj4gICBjb25zdCBjaGFyICprZXlmaWxlMj0iL2hvbWUvaS8uc3NoL2lkX3JzYSI7Cj4gICBjb25z
dCBjaGFyICpwYXNzd29yZD0gIkQwcjFuaGEyMyI7Cj4gICBpbnQgZ290PSAwOwo+ICAgaW50IHNv
Y2s9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7Cj4gICBzaW4uc2luX2ZhbWlseT0g
QUZfSU5FVDsKPiAgIHNpbi5zaW5fcG9ydD0gaHRvbnMoMjIpOwo+ICAgc2luLnNpbl9hZGRyLnNf
YWRkcj0gaG9zdGFkZHI7Cj4gICBpZihjb25uZWN0KCBzb2NrLCAoc3RydWN0IHNvY2thZGRyKiko
JnNpbiksIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pCj4gICAgICAgICAgICAgKSAhPSAwICkg
ewo+ICAgICBmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCB0byBjb25uZWN0IVxuIik7Cj4gICAgIHJl
dHVybjsKPiAgIH0KPiAgIHNlc3Npb249IGxpYnNzaDJfc2Vzc2lvbl9pbml0KCk7Cj4gICBsaWJz
c2gyX3RyYWNlKHNlc3Npb24sfjApOwo+ICAgaWYobGlic3NoMl9zZXNzaW9uX2hhbmRzaGFrZShz
ZXNzaW9uLCBzb2NrKSkgewo+ICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RS
QUNFX1RSQU5TCj4gICAgICAgICAgICAgICAgICAgLCAiRmFpbHVyZSBlc3RhYmxpc2hpbmcgU1NI
IHNlc3Npb24iICk7Cj4gICAgIHJldHVybjsKPiAgIH0KPiAgIGZpbmdlcnByaW50PSBsaWJzc2gy
X2hvc3RrZXlfaGFzaChzZXNzaW9uLCBMSUJTU0gyX0hPU1RLRVlfSEFTSF9TSEExKTsKPiAgIGxp
YnNzaDJfdXNlcmF1dGhfbGlzdChzZXNzaW9uLCB1c2VybmFtZSwgc3RybGVuKHVzZXJuYW1lKSk7
IC8vID8/Cj4gICBpZihsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZSggc2Vzc2lv
bgo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHVzZXJuYW1lCj4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwga2V5ZmlsZTEKPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBrZXlmaWxlMgo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHBhc3N3b3JkICkpIHsKPiAgICAgX2xp
YnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9UUkFOUwo+ICAgICAgICAgICAgICAg
ICAgICwgIlx0QXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhIiApOwo+ICAgICBy
ZXR1cm47Cj4gICB9IGVsc2Ugewo+ICAgICBfbGlic3NoMl9kZWJ1Zyggc2Vzc2lvbiwgTElCU1NI
Ml9UUkFDRV9UUkFOUwo+ICAgICAgICAgICAgICAgICAgICwgIlx0QXV0aGVudGljYXRpb24gYnkg
cHVibGljIGtleSBzdWNjZWVkZWQuIiApOwo+ICAgICBpZighKGNoYW5uZWw9IGxpYnNzaDJfY2hh
bm5lbF9vcGVuX3Nlc3Npb24oc2Vzc2lvbikpKSB7Cj4gICAgICAgX2xpYnNzaDJfZGVidWcoIHNl
c3Npb24sIExJQlNTSDJfVFJBQ0VfVFJBTlMKPiAgICAgICAgICAgICAgICAgICAgICwgIlVuYWJs
ZSB0byBvcGVuIGEgc2Vzc2lvbiIgKTsKPiAgICAgICByZXR1cm47Cj4gICAgIH0gZWxzZSB7Cj4g
ICAgICAgbGlic3NoMl9jaGFubmVsX3NldGVudihjaGFubmVsLCAiRk9PIiwgImJhciIpOwo+ICAg
ICAgIGlmKGxpYnNzaDJfY2hhbm5lbF9yZXF1ZXN0X3B0eShjaGFubmVsLCAidmFuaWxsYSIpKSB7
Cj4gICAgICAgICBfbGlic3NoMl9kZWJ1Zyggc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9UUkFOUwo+
ICAgICAgICAgICAgICAgICAgICAgICAsICJGYWlsZWQgcmVxdWVzdGluZyBwdHkiICk7Cj4gICAg
ICAgfSBlbHNlIHsKPiAgICAgICAgIGlmKGxpYnNzaDJfY2hhbm5lbF9zaGVsbChjaGFubmVsKSkg
ewo+ICAgICAgICAgICBfbGlic3NoMl9kZWJ1Zyggc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9UUkFO
Uwo+ICAgICAgICAgICAgICAgICAgICAgICAgICwgIlVuYWJsZSB0byByZXF1ZXN0IHNoZWxsIG9u
IGFsbG9jYXRlZCBwdHkiICk7Cj4gICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICBpZihjaGFu
bmVsKXsKPiAgICAgICAgICAgICBsaWJzc2gyX2NoYW5uZWxfZnJlZShjaGFubmVsKTsKPiAgICAg
ICAgICAgICBjaGFubmVsPSBOVUxMOwo+ICAgICAgICAgICB9Cj4gICAgICAgICB9Cj4gICAgICAg
fQo+ICAgICB9Cj4gICB9Cj4gICBsaWJzc2gyX3Nlc3Npb25fZGlzY29ubmVjdCggc2Vzc2lvbgo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICJOb3JtYWwgU2h1dGRvd24sIFRoYW5rIHlv
dSBmb3IgcGxheWluZyIgKTsKPiAgIGxpYnNzaDJfc2Vzc2lvbl9mcmVlKHNlc3Npb24pOwo+ICAg
Y2xvc2Uoc29jayk7Cj4gICBsaWJzc2gyX2V4aXQoKTsKPiAgIHJldHVybjsKPiB9Cj4gCj4gYW5k
IGNhbGxlZCBpdCBieQo+IAo+IGZvcmVpZ24gaW1wb3J0IGNjYWxsIHVuc2FmZSAibGlic3NoMl90
ZXN0Igo+ICAgbGlic3NoMlRlc3Q6OiBJTyAoKQo+IAo+IGFzIHdlbGwgYXMKPiAKPiB7IyBjb250
ZXh0IGxpYj0ic3NoMiIgcHJlZml4PSJsaWJzc2gyIiAjfQo+IHsjIGZ1biB0ZXN0IGFzIHRlc3Qg
eyB9IC0+IGAoKScgI30KPiAKPiBXaXRoIGJvdGggYXBwcm9hY2hlcywgSSBzdGlsbCBnb3QgdGhl
IHNhbWUgRUlOVFIgZXJyb3IsIHdoaWxlIGNvYWxsaW5nCj4gbGlic3NoMl90ZXN0KCkgZnJvbSBD
IHdvcmtzIGNvbXBsZXRlbHkgZmxhd2xlc3MuCj4gCj4gSXMgaXQgcG9zc2libGUgdGhhdCBhbiBp
bnRlcmZlcmluZyBzaWduYWwgY29tZXMgZnJvbSB0aGUgRkZJPyBJZiB5ZXMsIGlzCj4gdGhlcmUg
YSB3b3JrYXJvdW5kPwo+IAo+IEdyYXRlZnVsIGZvciBhbnkga2luZCBvZiBlbmxpZ2h0ZW5tZW50
Li4uIDotKQo+IAo+IFRoYW5rcyBhIGxvdCBpbiBhZHZhbmNlLCBOaWNrCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGRkkgbWFpbGluZyBsaXN0CkZGSUBo
YXNrZWxsLm9yZwpodHRwOi8vd3d3Lmhhc2tlbGwub3JnL21haWxtYW4vbGlzdGluZm8vZmZpCg==