From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Sharma Date: Fri, 08 Aug 2003 00:35:13 +0000 Subject: epoll support for ia32 applications MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------020002010908010203040808" Message-Id: List-Id: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. --------------020002010908010203040808 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit The patch was created by Matt Helsley for 2.4 and has been changed slightly to match 2.6. The implementation compromises performance for correctness. -Arun --------------020002010908010203040808 Content-Type: text/plain; name="epoll-2.5.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="epoll-2.5.patch" SW5kZXg6IGFyY2gvaWE2NC9pYTMyL2lhMzJfZW50cnkuUwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBh cmNoL2lhNjQvaWEzMi9pYTMyX2VudHJ5LlMJKHJldmlzaW9uIDEyMjAyKQorKysgYXJjaC9p YTY0L2lhMzIvaWEzMl9lbnRyeS5TCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsMTIgKzQ0MCwx MiBAQAogCWRhdGE4IHN5c19uaV9zeXNjYWxsCiAJZGF0YTggc3lzX25pX3N5c2NhbGwKIAlk YXRhOCBzeXNfbmlfc3lzY2FsbAorCWRhdGE4IHN5c19lcG9sbF9jcmVhdGUKKwlkYXRhOCBz eXMzMl9lcG9sbF9jdGwJLyogMjU1ICovCisJZGF0YTggc3lzMzJfZXBvbGxfd2FpdAogCWRh dGE4IHN5c19uaV9zeXNjYWxsCi0JZGF0YTggc3lzX25pX3N5c2NhbGwJLyoyNTUqLwogCWRh dGE4IHN5c19uaV9zeXNjYWxsCiAJZGF0YTggc3lzX25pX3N5c2NhbGwKLQlkYXRhOCBzeXNf bmlfc3lzY2FsbAotCWRhdGE4IHN5c19uaV9zeXNjYWxsCiAJZGF0YTggc3lzX25pX3N5c2Nh bGwJLyogMjYwICovCiAJZGF0YTggc3lzX25pX3N5c2NhbGwKIAlkYXRhOCBzeXNfbmlfc3lz Y2FsbApJbmRleDogYXJjaC9pYTY0L2lhMzIvc3lzX2lhMzIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBhcmNoL2lhNjQvaWEzMi9zeXNfaWEzMi5jCShyZXZpc2lvbiAxMjIwMikKKysrIGFyY2gv aWE2NC9pYTMyL3N5c19pYTMyLmMJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9uZnNkL3hkci5oPgogI2luY2x1ZGUgPGxpbnV4L25mc2Qvc3lz Y2FsbC5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9ldmVu dHBvbGwuaD4KICNpbmNsdWRlIDxsaW51eC9wZXJzb25hbGl0eS5oPgogI2luY2x1ZGUgPGxp bnV4L3B0cmFjZS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KQEAgLTI3MDQsNiArMjcw NSw5NSBAQAogCWdvdG8gb3V0OwogfQogCisvKiBTdHJ1Y3R1cmUgZm9yIGlhMzIgZW11bGF0 aW9uIG9uIGlhNjQgKi8KK3N0cnVjdCBlcG9sbF9ldmVudDMyIAoreworCXUzMiBldmVudHM7 CisJdTY0IGRhdGE7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCithc21saW5rYWdl IGxvbmcgCitzeXMzMl9lcG9sbF9jdGwoaW50IGVwZmQsIGludCBvcCwgaW50IGZkLCBzdHJ1 Y3QgZXBvbGxfZXZlbnQzMiAqZXZlbnQpCit7CisJbW1fc2VnbWVudF90IG9sZF9mcyA9IGdl dF9mcygpOworCXN0cnVjdCBlcG9sbF9ldmVudCBldmVudDY0OworCWludCBlcnJvciA9IC1F RkFVTFQ7CisJdTMyIGRhdGFfaGFsZndvcmQ7CisgIAorCWlmICgoZXJyb3IgPSB2ZXJpZnlf YXJlYShWRVJJRllfUkVBRCwgZXZlbnQsCisJCQkJIHNpemVvZihzdHJ1Y3QgZXBvbGxfZXZl bnQzMikpKSkKKwkJcmV0dXJuIGVycm9yOworICAKKwlfX2dldF91c2VyKGV2ZW50NjQuZXZl bnRzLCAmZXZlbnQtPmV2ZW50cyk7CisJX19nZXRfdXNlcihkYXRhX2hhbGZ3b3JkLCAodTMy KikoJmV2ZW50LT5kYXRhKSk7CisJZXZlbnQ2NC5kYXRhID0gZGF0YV9oYWxmd29yZDsKKwlf X2dldF91c2VyKGRhdGFfaGFsZndvcmQsICgodTMyKikoJmV2ZW50LT5kYXRhKSArIDEpKTsK KyAJZXZlbnQ2NC5kYXRhIHw9ICgodTY0KWRhdGFfaGFsZndvcmQpIDw8IDMyOyAKKworCXNl dF9mcyhLRVJORUxfRFMpOworCWVycm9yID0gc3lzX2Vwb2xsX2N0bChlcGZkLCBvcCwgZmQs ICZldmVudDY0KTsKKwlzZXRfZnMob2xkX2ZzKTsKKworCXJldHVybiBlcnJvcjsKK30KKwor YXNtbGlua2FnZSBsb25nCitzeXMzMl9lcG9sbF93YWl0KGludCBlcGZkLCBzdHJ1Y3QgZXBv bGxfZXZlbnQzMiAqZXZlbnRzLCBpbnQgbWF4ZXZlbnRzLAorCQkgaW50IHRpbWVvdXQpCit7 CisJc3RydWN0IGVwb2xsX2V2ZW50ICpldmVudHM2NCA9IE5VTEw7CisJbW1fc2VnbWVudF90 IG9sZF9mcyA9IGdldF9mcygpOworCWludCBlcnJvcjsKKwlpbnQgZXZ0X2lkeDsKKyAgCisJ aWYgKG1heGV2ZW50cyA8PSAwKSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFZl cmlmeSB0aGF0IHRoZSBhcmVhIHBhc3NlZCBieSB0aGUgdXNlciBpcyB3cml0ZWFibGUgKi8K KwlpZiAoKGVycm9yID0gdmVyaWZ5X2FyZWEoVkVSSUZZX1dSSVRFLCBldmVudHMsCisJCQkJ IG1heGV2ZW50cyAqIHNpemVvZihzdHJ1Y3QgZXBvbGxfZXZlbnQzMikpKSkKKwkJcmV0dXJu IGVycm9yOworCisJLyogQWxsb2NhdGUgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIGludGVy bWVkaWF0ZSBjb3B5ICovCisJZXZlbnRzNjQgPSBrbWFsbG9jKG1heGV2ZW50cyAqIHNpemVv ZihzdHJ1Y3QgZXBvbGxfZXZlbnQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZXZlbnRzNjQgPT0g TlVMTCkgeworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisgIAorCS8qIEV4cGFuZCB0aGUgMzIt Yml0IHN0cnVjdHVyZXMgaW50byB0aGUgNjQtYml0IHN0cnVjdHVyZXMgKi8KKwlmb3IgKGV2 dF9pZHggPSAwOyBldnRfaWR4IDwgbWF4ZXZlbnRzOyBldnRfaWR4KyspIHsKKwkJdTMyIGRh dGFfaGFsZndvcmQ7CisJCV9fZ2V0X3VzZXIoZXZlbnRzNjRbZXZ0X2lkeF0uZXZlbnRzLCAm ZXZlbnRzW2V2dF9pZHhdLmV2ZW50cyk7CisJCV9fZ2V0X3VzZXIoZGF0YV9oYWxmd29yZCwg KHUzMiopKCZldmVudHNbZXZ0X2lkeF0uZGF0YSkpOworCQlldmVudHM2NFtldnRfaWR4XS5k YXRhID0gZGF0YV9oYWxmd29yZDsKKwkJX19nZXRfdXNlcihkYXRhX2hhbGZ3b3JkLCAoKHUz MiopKCZldmVudHNbZXZ0X2lkeF0uZGF0YSkgKyAxKSk7CisJCWV2ZW50czY0W2V2dF9pZHhd LmRhdGEgfD0gKCh1NjQpZGF0YV9oYWxmd29yZCkgPDwgMzI7CisJfQorICAKKwkvKiBEbyB0 aGUgc3lzdGVtIGNhbGwgKi8KKwlzZXRfZnMoS0VSTkVMX0RTKTsgLyogY29weV90by9mcm9t X3VzZXIgc2hvdWxkIHdvcmsgb24ga2VybmVsIG1lbSovCisJZXJyb3IgPSBzeXNfZXBvbGxf d2FpdChlcGZkLCBldmVudHM2NCwgbWF4ZXZlbnRzLCB0aW1lb3V0KTsKKwlzZXRfZnMob2xk X2ZzKTsKKworCS8qIERvbid0IG1vZGlmeSB1c2Vyc3BhY2UgbWVtb3J5IGlmIHdlJ3JlIHJl dHVybmluZyBhbiBlcnJvciAqLyAKKwlpZiAoIWVycm9yKSB7CisJCS8qIFRyYW5zbGF0ZSB0 aGUgNjQtYml0IHN0cnVjdHVyZXMgYmFjayBpbnRvIHRoZSAzMi1iaXQgCisJCSAgIHN0cnVj dHVyZXMgKi8KKwkJZm9yIChldnRfaWR4ID0gMDsgZXZ0X2lkeCA8IG1heGV2ZW50czsgZXZ0 X2lkeCsrKSB7CisJCQlfX3B1dF91c2VyKGV2ZW50czY0W2V2dF9pZHhdLmV2ZW50cywgCisJ CQkJICAgJmV2ZW50c1tldnRfaWR4XS5ldmVudHMpOworCQkJX19wdXRfdXNlcigodTMyKShl dmVudHM2NFtldnRfaWR4XS5kYXRhKSwKKwkJCQkgICAodTMyKikoJmV2ZW50c1tldnRfaWR4 XS5kYXRhKSk7CisJCQlfX3B1dF91c2VyKCh1MzIpKGV2ZW50czY0W2V2dF9pZHhdLmRhdGEg Pj4gMzIpLAorCQkJCSAgICgodTMyKikoJmV2ZW50c1tldnRfaWR4XS5kYXRhKSArIDEpKTsK KwkJfQorCX0KKworCWtmcmVlKGV2ZW50czY0KTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKICNp ZmRlZglOT1RZRVQgIC8qIFVOVEVTVEVEIEZPUiBJQTY0IEZST00gSEVSRSBET1dOICovCiAK IHN0cnVjdCBuY3BfbW91bnRfZGF0YTMyIHsK --------------020002010908010203040808--