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==