From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aurelio Medina To: 'Le Coent Yannick' , pthreads-win32@sourceware.cygnus.com Subject: RE: Last version of message queues. Date: Thu, 02 Aug 2001 07:36:00 -0000 Message-id: <1BDB01B13696D411BD6200D0B7C854EA011768FC@chi-prd-mail1.xcaliber.com> X-SW-Source: 2001/msg00085.html Content-type: multipart/mixed; boundary="----------=_1583534834-35002-1" This is a multi-part message in MIME format... ------------=_1583534834-35002-1 Content-length: 895 Here is my latest port of the POSIX message queue interface. I contributed my code to PThreads-Win32 some time ago. I'm not sure if its available on the Web Site. Anyhow, I'm using this implementation along with Pthreads-Win32 in a production real-time trading application with no problems. Hope this helps, Aurelio Medina -----Original Message----- From: Le Coent Yannick [ mailto:Yannick.LeCoent@srit.siemens.fr ] Sent: Thursday, August 02, 2001 9:27 AM To: pthreads-win32@sourceware.cygnus.com Subject: Last version of message queues. Hello, Can anyone tell me where I could find the latest sources for the message queues? Thanks a lot, Yannick LE COENT SIEMENS Réseaux Informatiques et Télécommunications 3, rue Blaise Pascal F - 22300 LANNION Tel.: +33-2-96 48 74 26 Fax: +33-2-96 48 74 73 E-mail: Yannick.LeCoent@srit.siemens.fr < mailto:Yannick.LeCoent@srit.siemens.fr > ------------=_1583534834-35002-1 Content-Type: text/x-c; charset=us-ascii; name="mqueue.c" Content-Disposition: inline; filename="mqueue.c" Content-Transfer-Encoding: base64 Content-Length: 21582 LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqIFBPU0lY IE1lc3NhZ2UgUXVldWUgZm9yIFdpbmRvd3MgTlQKICoKICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8c3RkbGliLmg+CiNp bmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRl IDxmY250bC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2lmIGRlZmluZWQoV0lO MzIpCiMgICBpbmNsdWRlIDxpby5oPgojZW5kaWYKI2luY2x1ZGUgIm1xdWV1 ZS5oIgoKI2lmIGRlZmluZWQoV0lOMzIpCiMgICBkZWZpbmUgU19JWFVTUiAg MDAwMDEwMAojICAgZGVmaW5lIHNsZWVwKGEpIFNsZWVwKChhKSoxMDAwKQoK ICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OwojZW5kaWYKCiNk ZWZpbmUgTUFYX1RSSUVTICAgMTAKc3RydWN0IG1xX2F0dHIgZGVmYXR0ciA9 IHsgMCwgMTI4LCAxMDI0LCAwIH07CgppbnQgbXFfY2xvc2UobXFkX3QgbXFk KQp7CiAgICBsb25nICAgICAgICAgICAgbXNnc2l6ZSwgZmlsZXNpemU7CiAg ICBzdHJ1Y3QgbXFfaGRyICAqbXFoZHI7CiAgICBzdHJ1Y3QgbXFfYXR0ciAq YXR0cjsKICAgIHN0cnVjdCBtcV9pbmZvICptcWluZm87CgogICAgbXFpbmZv ID0gbXFkOwogICAgaWYgKG1xaW5mby0+bXFpX21hZ2ljICE9IE1RSV9NQUdJ QykgewogICAgICAgIGVycm5vID0gRUJBREY7CiAgICAgICAgcmV0dXJuKC0x KTsKICAgIH0KICAgIG1xaGRyID0gbXFpbmZvLT5tcWlfaGRyOwogICAgYXR0 ciA9ICZtcWhkci0+bXFoX2F0dHI7CgogICAgaWYgKG1xX25vdGlmeShtcWQs IE5VTEwpICE9IDApICAgICAgICAvKiB1bnJlZ2lzdGVyIGNhbGxpbmcgcHJv Y2VzcyAqLwogICAgICAgIHJldHVybigtMSk7CgogICAgbXNnc2l6ZSA9IE1T R1NJWkUoYXR0ci0+bXFfbXNnc2l6ZSk7CiAgICBmaWxlc2l6ZSA9IHNpemVv ZihzdHJ1Y3QgbXFfaGRyKSArIChhdHRyLT5tcV9tYXhtc2cgKgogICAgICAg ICAgICAgICAgICAgICAgKHNpemVvZihzdHJ1Y3QgbXNnX2hkcikgKyBtc2dz aXplKSk7CiNpZiBkZWZpbmVkKFdJTjMyKQogICAgaWYgKCFVbm1hcFZpZXdP ZkZpbGUobXFpbmZvLT5tcWlfaGRyKSB8fCAhQ2xvc2VIYW5kbGUobXFpbmZv LT5tcWlfZm1hcCkpCiNlbHNlCiAgICBpZiAobXVubWFwKG1xaW5mby0+bXFp X2hkciwgZmlsZXNpemUpID09IC0xKQojZW5kaWYKICAgICAgICByZXR1cm4o LTEpOwoKICAgIG1xaW5mby0+bXFpX21hZ2ljID0gMDsgICAgICAgICAgLyog anVzdCBpbiBjYXNlICovCiAgICBmcmVlKG1xaW5mbyk7CiAgICByZXR1cm4o MCk7Cn0KCmludCBtcV9nZXRhdHRyKG1xZF90IG1xZCwgc3RydWN0IG1xX2F0 dHIgKm1xc3RhdCkKewogICAgaW50ICAgICAgICAgICAgIG47CiAgICBzdHJ1 Y3QgbXFfaGRyICAqbXFoZHI7CiAgICBzdHJ1Y3QgbXFfYXR0ciAqYXR0cjsK ICAgIHN0cnVjdCBtcV9pbmZvICptcWluZm87CgogICAgbXFpbmZvID0gbXFk OwogICAgaWYgKG1xaW5mby0+bXFpX21hZ2ljICE9IE1RSV9NQUdJQykgewog ICAgICAgIGVycm5vID0gRUJBREY7CiAgICAgICAgcmV0dXJuKC0xKTsKICAg IH0KICAgIG1xaGRyID0gbXFpbmZvLT5tcWlfaGRyOwogICAgYXR0ciA9ICZt cWhkci0+bXFoX2F0dHI7CiAgICBpZiAoIChuID0gcHRocmVhZF9tdXRleF9s b2NrKCZtcWhkci0+bXFoX2xvY2spKSAhPSAwKSB7CiAgICAgICAgZXJybm8g PSBuOwogICAgICAgIHJldHVybigtMSk7CiAgICB9CgogICAgbXFzdGF0LT5t cV9mbGFncyA9IG1xaW5mby0+bXFpX2ZsYWdzOyAgIC8qIHBlci1vcGVuICov CiAgICBtcXN0YXQtPm1xX21heG1zZyA9IGF0dHItPm1xX21heG1zZzsgICAg LyogcmVtYWluaW5nIHRocmVlIHBlci1xdWV1ZSAqLwogICAgbXFzdGF0LT5t cV9tc2dzaXplID0gYXR0ci0+bXFfbXNnc2l6ZTsKICAgIG1xc3RhdC0+bXFf Y3VybXNncyA9IGF0dHItPm1xX2N1cm1zZ3M7CgogICAgcHRocmVhZF9tdXRl eF91bmxvY2soJm1xaGRyLT5tcWhfbG9jayk7CiAgICByZXR1cm4oMCk7Cn0K CmludCBtcV9ub3RpZnkobXFkX3QgbXFkLCBjb25zdCBzdHJ1Y3Qgc2lnZXZl bnQgKm5vdGlmaWNhdGlvbikKewojaWYgIWRlZmluZWQoV0lOMzIpCiAgICBp bnQgICAgICAgICAgICAgbjsKICAgIHBpZF90ICAgICAgICAgICBwaWQ7CiAg ICBzdHJ1Y3QgbXFfaGRyICAqbXFoZHI7CiAgICBzdHJ1Y3QgbXFfaW5mbyAq bXFpbmZvOwoKICAgIG1xaW5mbyA9IG1xZDsKICAgIGlmIChtcWluZm8tPm1x aV9tYWdpYyAhPSBNUUlfTUFHSUMpIHsKICAgICAgICBlcnJubyA9IEVCQURG OwogICAgICAgIHJldHVybigtMSk7CiAgICB9CiAgICBtcWhkciA9IG1xaW5m by0+bXFpX2hkcjsKICAgIGlmICggKG4gPSBwdGhyZWFkX211dGV4X2xvY2so Jm1xaGRyLT5tcWhfbG9jaykpICE9IDApIHsKICAgICAgICBlcnJubyA9IG47 CiAgICAgICAgcmV0dXJuKC0xKTsKICAgIH0KCiAgICBwaWQgPSBnZXRwaWQo KTsKICAgIGlmIChub3RpZmljYXRpb24gPT0gTlVMTCkgewogICAgICAgIGlm IChtcWhkci0+bXFoX3BpZCA9PSBwaWQpIHsKICAgICAgICAgICAgbXFoZHIt Pm1xaF9waWQgPSAwOyAgICAgLyogdW5yZWdpc3RlciBjYWxsaW5nIHByb2Nl c3MgKi8KICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog bm8gZXJyb3IgaWYgYyBhbGxlciBub3QgcmVnaXN0ZXJlZCAqLwogICAgfSBl bHNlIHsKICAgICAgICBpZiAobXFoZHItPm1xaF9waWQgIT0gMCkgewogICAg ICAgICAgICBpZiAoa2lsbChtcWhkci0+bXFoX3BpZCwgMCkgIT0gLTEgfHwg ZXJybm8gIT0gRVNSQ0gpIHsKICAgICAgICAgICAgICAgIGVycm5vID0gRUJV U1k7CiAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgICAgICBtcWhkci0+bXFoX3BpZCA9IHBpZDsKICAgICAg ICBtcWhkci0+bXFoX2V2ZW50ID0gKm5vdGlmaWNhdGlvbjsKICAgIH0KICAg IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtcWhkci0+bXFoX2xvY2spOwogICAg cmV0dXJuKDApOwoKZXJyOgogICAgcHRocmVhZF9tdXRleF91bmxvY2soJm1x aGRyLT5tcWhfbG9jayk7CiAgICByZXR1cm4oLTEpOwojZWxzZQ0KICAgIGlm IChub3RpZmljYXRpb24gPT0gTlVMTCkgew0KICAgICAgICByZXR1cm4oMCk7 DQogICAgfQogICAgZXJybm8gPSBFSU5WQUw7CiAgICByZXR1cm4oLTEpOwoj ZW5kaWYKfQoKbXFkX3QgbXFfb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwg aW50IG9mbGFnLCAuLi4pCnsKICAgIGludCAgICAgICAgICAgICAgICAgIGks IGZkLCBub25ibG9jaywgY3JlYXRlZCwgc2F2ZV9lcnJubzsKICAgIGxvbmcg ICAgICAgICAgICAgICAgIG1zZ3NpemUsIGZpbGVzaXplLCBpbmRleDsKICAg IHZhX2xpc3QgICAgICAgICAgICAgIGFwOwogICAgbW9kZV90ICAgICAgICAg ICAgICAgbW9kZTsKICAgIGNoYXIgICAgICAgICAgICAgICAgKm1wdHI7CiAg ICBzdHJ1Y3Qgc3RhdCAgICAgICAgICBzdGF0YnVmZjsKICAgIHN0cnVjdCBt cV9oZHIgICAgICAgKm1xaGRyOwogICAgc3RydWN0IG1zZ19oZHIgICAgICAq bXNnaGRyOwogICAgc3RydWN0IG1xX2F0dHIgICAgICAqYXR0cjsKICAgIHN0 cnVjdCBtcV9pbmZvICAgICAgKm1xaW5mbzsKICAgIHB0aHJlYWRfbXV0ZXhh dHRyX3QgIG1hdHRyOwogICAgcHRocmVhZF9jb25kYXR0cl90ICAgY2F0dHI7 CiNpZiBkZWZpbmVkKFdJTjMyKQogICAgSEFORExFIGZtYXA7CgogICAgbXB0 ciA9IE5VTEw7CiNlbHNlCiAgICBtcHRyID0gKGNoYXIgKikgTUFQX0ZBSUxF RDsKI2VuZGlmCiAgICBjcmVhdGVkID0gMDsKICAgIG5vbmJsb2NrID0gb2Zs YWcgJiBPX05PTkJMT0NLOwogICAgb2ZsYWcgJj0gfk9fTk9OQkxPQ0s7CiAg ICBtcWluZm8gPSBOVUxMOwoKYWdhaW46CiAgICBpZiAob2ZsYWcgJiBPX0NS RUFUKSB7CiAgICAgICAgdmFfc3RhcnQoYXAsIG9mbGFnKTsgLyogaW5pdCBh cCB0byBmaW5hbCBuYW1lZCBhcmd1bWVudCAqLwogICAgICAgIG1vZGUgPSB2 YV9hcmcoYXAsIG1vZGVfdCkgJiB+U19JWFVTUjsKICAgICAgICBhdHRyID0g dmFfYXJnKGFwLCBzdHJ1Y3QgbXFfYXR0ciAqKTsKICAgICAgICB2YV9lbmQo YXApOwoKICAgICAgICAvKiBvcGVuIGFuZCBzcGVjaWZ5IE9fRVhDTCBhbmQg dXNlci1leGVjdXRlICovCiAgICAgICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBv ZmxhZyB8IE9fRVhDTCB8IE9fUkRXUiwgbW9kZSB8IFNfSVhVU1IpOwogICAg ICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgICAgaWYgKGVycm5vID09IEVF WElTVCAmJiAob2ZsYWcgJiBPX0VYQ0wpID09IDApCiAgICAgICAgICAgICAg ICBnb3RvIGV4aXN0czsgICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0cywg T0sgKi8KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJu KChtcWRfdCkgLTEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNyZWF0 ZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBvbmUg dG8gY3JlYXRlIHRoZSBmaWxlIGluaXRpYWxpemVzIGl0ICovCiAgICAgICAg ICAgIGlmIChhdHRyID09IE5VTEwpCiAgICAgICAgICAgICAgICBhdHRyID0g JmRlZmF0dHI7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg aWYgKGF0dHItPm1xX21heG1zZyA8PSAwIHx8IGF0dHItPm1xX21zZ3NpemUg PD0gMCkgewogICAgICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwog ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIGNhbGN1bGF0ZSBhbmQg c2V0IHRoZSBmaWxlIHNpemUgKi8KICAgICAgICAgICAgbXNnc2l6ZSA9IE1T R1NJWkUoYXR0ci0+bXFfbXNnc2l6ZSk7CiAgICAgICAgICAgIGZpbGVzaXpl ID0gc2l6ZW9mKHN0cnVjdCBtcV9oZHIpICsgKGF0dHItPm1xX21heG1zZyAq CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZW9mKHN0cnVj dCBtc2dfaGRyKSArIG1zZ3NpemUpKTsKICAgICAgICAgICAgaWYgKGxzZWVr KGZkLCBmaWxlc2l6ZSAtIDEsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAg ICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICBpZiAod3JpdGUoZmQsICIi LCAxKSA9PSAtMSkKICAgICAgICAgICAgICAgIGdvdG8gZXJyOwoKICAgICAg ICAgICAgLyogbWVtb3J5IG1hcCB0aGUgZmlsZSAqLwojaWYgZGVmaW5lZChX SU4zMikKICAgICAgICAgICAgZm1hcCA9IENyZWF0ZUZpbGVNYXBwaW5nKChI QU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpLCBOVUxMLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfUkVBRFdSSVRFLCAwLCAw LCBOVUxMKTsKICAgICAgICAgICAgaWYgKGZtYXAgPT0gTlVMTCkKICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICBtcHRyID0gTWFwVmll d09mRmlsZShmbWFwLCBGSUxFX01BUF9XUklURSwgMCwgMCwgZmlsZXNpemUp OwogICAgICAgICAgICBpZiAobXB0ciA9PSBOVUxMKQojZWxzZQogICAgICAg ICAgICBtcHRyID0gbW1hcChOVUxMLCBmaWxlc2l6ZSwgUFJPVF9SRUFEIHwg UFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1BUF9TSEFSRUQsIGZkLCAwKTsKICAgICAgICAgICAgaWYgKG1w dHIgPT0gTUFQX0ZBSUxFRCkKI2VuZGlmCiAgICAgICAgICAgICAgICBnb3Rv IGVycjsKCiAgICAgICAgICAgIC8qIGFsbG9jYXRlIG9uZSBtcV9pbmZve30g Zm9yIHRoZSBxdWV1ZSAqLwogICAgICAgICAgICBpZiAoIChtcWluZm8gPSBt YWxsb2Moc2l6ZW9mKHN0cnVjdCBtcV9pbmZvKSkpID09IE5VTEwpCiAgICAg ICAgICAgICAgICBnb3RvIGVycjsKI2lmIGRlZmluZWQoV0lOMzIpCiAgICAg ICAgICAgIG1xaW5mby0+bXFpX2ZtYXAgPSBmbWFwOwojZW5kaWYKICAgICAg ICAgICAgbXFpbmZvLT5tcWlfaGRyID0gbXFoZHIgPSAoc3RydWN0IG1xX2hk ciAqKSBtcHRyOwogICAgICAgICAgICBtcWluZm8tPm1xaV9tYWdpYyA9IE1R SV9NQUdJQzsKICAgICAgICAgICAgbXFpbmZvLT5tcWlfZmxhZ3MgPSBub25i bG9jazsKCiAgICAgICAgICAgIC8qIGluaXRpYWxpemUgaGVhZGVyIGF0IGJl Z2lubmluZyBvZiBmaWxlICovCiAgICAgICAgICAgIC8qIGNyZWF0ZSBmcmVl IGxpc3Qgd2l0aCBhbGwgbWVzc2FnZXMgb24gaXQgKi8KICAgICAgICAgICAg bXFoZHItPm1xaF9hdHRyLm1xX2ZsYWdzID0gMDsKICAgICAgICAgICAgbXFo ZHItPm1xaF9hdHRyLm1xX21heG1zZyA9IGF0dHItPm1xX21heG1zZzsKICAg ICAgICAgICAgbXFoZHItPm1xaF9hdHRyLm1xX21zZ3NpemUgPSBhdHRyLT5t cV9tc2dzaXplOwogICAgICAgICAgICBtcWhkci0+bXFoX2F0dHIubXFfY3Vy bXNncyA9IDA7CiAgICAgICAgICAgIG1xaGRyLT5tcWhfbndhaXQgPSAwOwog ICAgICAgICAgICBtcWhkci0+bXFoX3BpZCA9IDA7CiAgICAgICAgICAgIG1x aGRyLT5tcWhfaGVhZCA9IDA7CiAgICAgICAgICAgIGluZGV4ID0gc2l6ZW9m KHN0cnVjdCBtcV9oZHIpOwogICAgICAgICAgICBtcWhkci0+bXFoX2ZyZWUg PSBpbmRleDsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGF0dHItPm1x X21heG1zZyAtIDE7IGkrKykgewogICAgICAgICAgICAgICAgbXNnaGRyID0g KHN0cnVjdCBtc2dfaGRyICopICZtcHRyW2luZGV4XTsKICAgICAgICAgICAg ICAgIGluZGV4ICs9IHNpemVvZihzdHJ1Y3QgbXNnX2hkcikgKyBtc2dzaXpl OwogICAgICAgICAgICAgICAgbXNnaGRyLT5tc2dfbmV4dCA9IGluZGV4Owog ICAgICAgICAgICB9CiAgICAgICAgICAgIG1zZ2hkciA9IChzdHJ1Y3QgbXNn X2hkciAqKSAmbXB0cltpbmRleF07CiAgICAgICAgICAgIG1zZ2hkci0+bXNn X25leHQgPSAwOyAgICAgICAgICAgLyogZW5kIG9mIGZyZWUgbGlzdCAqLwoK ICAgICAgICAgICAgLyogaW5pdGlhbGl6ZSBtdXRleCAmIGNvbmRpdGlvbiB2 YXJpYWJsZSAqLwogICAgICAgICAgICBpZiAoIChpID0gcHRocmVhZF9tdXRl eGF0dHJfaW5pdCgmbWF0dHIpKSAhPSAwKQogICAgICAgICAgICAgICAgZ290 byBwdGhyZWFkZXJyOwogICAgICAgICAgICBwdGhyZWFkX211dGV4YXR0cl9z ZXRwc2hhcmVkKCZtYXR0ciwgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRCk7CiAg ICAgICAgICAgIGkgPSBwdGhyZWFkX211dGV4X2luaXQoJm1xaGRyLT5tcWhf bG9jaywgJm1hdHRyKTsKICAgICAgICAgICAgcHRocmVhZF9tdXRleGF0dHJf ZGVzdHJveSgmbWF0dHIpOyAgICAgIC8qIGJlIHN1cmUgdG8gZGVzdHJveSAq LwogICAgICAgICAgICBpZiAoaSAhPSAwKQogICAgICAgICAgICAgICAgZ290 byBwdGhyZWFkZXJyOwoKICAgICAgICAgICAgaWYgKCAoaSA9IHB0aHJlYWRf Y29uZGF0dHJfaW5pdCgmY2F0dHIpKSAhPSAwKQogICAgICAgICAgICAgICAg Z290byBwdGhyZWFkZXJyOwogICAgICAgICAgICBwdGhyZWFkX2NvbmRhdHRy X3NldHBzaGFyZWQoJmNhdHRyLCBQVEhSRUFEX1BST0NFU1NfU0hBUkVEKTsK ICAgICAgICAgICAgaSA9IHB0aHJlYWRfY29uZF9pbml0KCZtcWhkci0+bXFo X3dhaXQsICZjYXR0cik7CiAgICAgICAgICAgIHB0aHJlYWRfY29uZGF0dHJf ZGVzdHJveSgmY2F0dHIpOyAgICAgICAvKiBiZSBzdXJlIHRvIGRlc3Ryb3kg Ki8KICAgICAgICAgICAgaWYgKGkgIT0gMCkKICAgICAgICAgICAgICAgIGdv dG8gcHRocmVhZGVycjsKCiAgICAgICAgICAgIC8qIGluaXRpYWxpemF0aW9u IGNvbXBsZXRlLCB0dXJuIG9mZiB1c2VyLWV4ZWN1dGUgYml0ICovCiNpZiBk ZWZpbmVkKFdJTjMyKQogICAgICAgICAgICBpZiAoY2htb2QocGF0aG5hbWUs IG1vZGUpID09IC0xKQojZWxzZQogICAgICAgICAgICBpZiAoZmNobW9kKGZk LCBtb2RlKSA9PSAtMSkKI2VuZGlmCiAgICAgICAgICAgICAgICBnb3RvIGVy cjsKICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICByZXR1cm4o KG1xZF90KSBtcWluZm8pOwogICAgfQpleGlzdHM6CiAgICAvKiBvcGVuIHRo ZSBmaWxlIHRoZW4gbWVtb3J5IG1hcCAqLwogICAgaWYgKCAoZmQgPSBvcGVu KHBhdGhuYW1lLCBPX1JEV1IpKSA8IDApIHsKICAgICAgICBpZiAoZXJybm8g PT0gRU5PRU5UICYmIChvZmxhZyAmIE9fQ1JFQVQpKQogICAgICAgICAgICBn b3RvIGFnYWluOwogICAgICAgIGdvdG8gZXJyOwogICAgfQoKICAgIC8qIG1h a2UgY2VydGFpbiBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZSAqLwogICAg Zm9yIChpID0gMDsgaSA8IE1BWF9UUklFUzsgaSsrKSB7CiAgICAgICAgaWYg KHN0YXQocGF0aG5hbWUsICZzdGF0YnVmZikgPT0gLTEpIHsKICAgICAgICAg ICAgaWYgKGVycm5vID09IEVOT0VOVCAmJiAob2ZsYWcgJiBPX0NSRUFUKSkg ewogICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAg Z290byBhZ2FpbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBnb3RvIGVy cjsKICAgICAgICB9CiAgICAgICAgaWYgKChzdGF0YnVmZi5zdF9tb2RlICYg U19JWFVTUikgPT0gMCkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgc2xl ZXAoMSk7CiAgICB9CiAgICBpZiAoaSA9PSBNQVhfVFJJRVMpIHsKICAgICAg ICBlcnJubyA9IEVUSU1FRE9VVDsKICAgICAgICBnb3RvIGVycjsKICAgIH0K CiAgICBmaWxlc2l6ZSA9IHN0YXRidWZmLnN0X3NpemU7CiNpZiBkZWZpbmVk KFdJTjMyKQogICAgZm1hcCA9IENyZWF0ZUZpbGVNYXBwaW5nKChIQU5ETEUp X2dldF9vc2ZoYW5kbGUoZmQpLCBOVUxMLCBQQUdFX1JFQURXUklURSwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgTlVMTCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgIGlmIChmbWFwID09IE5VTEwp CiAgICAgICAgZ290byBlcnI7CiAgICBtcHRyID0gTWFwVmlld09mRmlsZShm bWFwLCBGSUxFX01BUF9XUklURSwgMCwgMCwgZmlsZXNpemUpOwogICAgaWYg KG1wdHIgPT0gTlVMTCkKI2Vsc2UKICAgIG1wdHIgPSBtbWFwKE5VTEwsIGZp bGVzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBm ZCwgMCk7CiAgICBpZiAobXB0ciA9PSBNQVBfRkFJTEVEKQojZW5kaWYKICAg ICAgICBnb3RvIGVycjsKICAgIGNsb3NlKGZkKTsKCiAgICAvKiBhbGxvY2F0 ZSBvbmUgbXFfaW5mb3t9IGZvciBlYWNoIG9wZW4gKi8KICAgIGlmICggKG1x aW5mbyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IG1xX2luZm8pKSkgPT0gTlVM TCkKICAgICAgICBnb3RvIGVycjsKICAgIG1xaW5mby0+bXFpX2hkciA9IChz dHJ1Y3QgbXFfaGRyICopIG1wdHI7CiAgICBtcWluZm8tPm1xaV9tYWdpYyA9 IE1RSV9NQUdJQzsKICAgIG1xaW5mby0+bXFpX2ZsYWdzID0gbm9uYmxvY2s7 CiAgICByZXR1cm4oKG1xZF90KSBtcWluZm8pOwpwdGhyZWFkZXJyOgogICAg ZXJybm8gPSBpOwplcnI6CiAgICAvKiBkb24ndCBsZXQgZm9sbG93aW5nIGZ1 bmN0aW9uIGNhbGxzIGNoYW5nZSBlcnJubyAqLwogICAgc2F2ZV9lcnJubyA9 IGVycm5vOwogICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgdW5saW5rKHBhdGhu YW1lKTsKI2lmIGRlZmluZWQoV0lOMzIpCiAgICBpZiAoZm1hcCAhPSBOVUxM KSB7CiAgICAgICAgaWYgKG1wdHIgIT0gTlVMTCkgewogICAgICAgICAgICBV bm1hcFZpZXdPZkZpbGUobXB0cik7CiAgICAgICAgfQogICAgICAgIENsb3Nl SGFuZGxlKGZtYXApOwogICAgfQojZWxzZQogICAgaWYgKG1wdHIgIT0gTUFQ X0ZBSUxFRCkKICAgICAgICBtdW5tYXAobXB0ciwgZmlsZXNpemUpOwojZW5k aWYKICAgIGlmIChtcWluZm8gIT0gTlVMTCkKICAgICAgICBmcmVlKG1xaW5m byk7CiAgICBjbG9zZShmZCk7CiAgICBlcnJubyA9IHNhdmVfZXJybm87CiAg ICByZXR1cm4oKG1xZF90KSAtMSk7Cn0KCnNzaXplX3QgbXFfcmVjZWl2ZSht cWRfdCBtcWQsIGNoYXIgKnB0ciwgc2l6ZV90IG1heGxlbiwgdW5zaWduZWQg aW50ICpwcmlvcCkKewogICAgaW50ICAgICAgICAgICAgIG47CiAgICBsb25n ICAgICAgICAgICAgaW5kZXg7CiAgICBjaGFyICAgICAgICAgICAqbXB0cjsK ICAgIHNzaXplX3QgICAgICAgICBsZW47CiAgICBzdHJ1Y3QgbXFfaGRyICAq bXFoZHI7CiAgICBzdHJ1Y3QgbXFfYXR0ciAqYXR0cjsKICAgIHN0cnVjdCBt c2dfaGRyICptc2doZHI7CiAgICBzdHJ1Y3QgbXFfaW5mbyAqbXFpbmZvOwoK ICAgIG1xaW5mbyA9IG1xZDsKICAgIGlmIChtcWluZm8tPm1xaV9tYWdpYyAh PSBNUUlfTUFHSUMpIHsKICAgICAgICBlcnJubyA9IEVCQURGOwogICAgICAg IHJldHVybigtMSk7CiAgICB9CiAgICBtcWhkciA9IG1xaW5mby0+bXFpX2hk cjsgICAgICAgIC8qIHN0cnVjdCBwb2ludGVyICovCiAgICBtcHRyID0gKGNo YXIgKikgbXFoZHI7ICAgICAgICAgIC8qIGJ5dGUgcG9pbnRlciAqLwogICAg YXR0ciA9ICZtcWhkci0+bXFoX2F0dHI7CiAgICBpZiAoIChuID0gcHRocmVh ZF9tdXRleF9sb2NrKCZtcWhkci0+bXFoX2xvY2spKSAhPSAwKSB7CiAgICAg ICAgZXJybm8gPSBuOwogICAgICAgIHJldHVybigtMSk7CiAgICB9CgogICAg aWYgKG1heGxlbiA8IChzaXplX3QpYXR0ci0+bXFfbXNnc2l6ZSkgewogICAg ICAgIGVycm5vID0gRU1TR1NJWkU7CiAgICAgICAgZ290byBlcnI7CiAgICB9 CiAgICBpZiAoYXR0ci0+bXFfY3VybXNncyA9PSAwKSB7ICAgICAgICAgICAg LyogcXVldWUgaXMgZW1wdHkgKi8KICAgICAgICBpZiAobXFpbmZvLT5tcWlf ZmxhZ3MgJiBPX05PTkJMT0NLKSB7CiAgICAgICAgICAgIGVycm5vID0gRUFH QUlOOwogICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICB9CiAgICAgICAg Lyogd2FpdCBmb3IgYSBtZXNzYWdlIHRvIGJlIHBsYWNlZCBvbnRvIHF1ZXVl ICovCiAgICAgICAgbXFoZHItPm1xaF9ud2FpdCsrOwogICAgICAgIHdoaWxl IChhdHRyLT5tcV9jdXJtc2dzID09IDApCiAgICAgICAgICAgIHB0aHJlYWRf Y29uZF93YWl0KCZtcWhkci0+bXFoX3dhaXQsICZtcWhkci0+bXFoX2xvY2sp OwogICAgICAgIG1xaGRyLT5tcWhfbndhaXQtLTsKICAgIH0KCiAgICBpZiAo IChpbmRleCA9IG1xaGRyLT5tcWhfaGVhZCkgPT0gMCkgewogICAgICAgIGZw cmludGYoc3RkZXJyLCAibXFfcmVjZWl2ZTogY3VybXNncyA9ICVsZDsgaGVh ZCA9IDAiLGF0dHItPm1xX2N1cm1zZ3MpOwogICAgICAgIGFib3J0KCk7CiAg ICB9CgogICAgbXNnaGRyID0gKHN0cnVjdCBtc2dfaGRyICopICZtcHRyW2lu ZGV4XTsKICAgIG1xaGRyLT5tcWhfaGVhZCA9IG1zZ2hkci0+bXNnX25leHQ7 ICAgICAvKiBuZXcgaGVhZCBvZiBsaXN0ICovCiAgICBsZW4gPSBtc2doZHIt Pm1zZ19sZW47CiAgICBtZW1jcHkocHRyLCBtc2doZHIgKyAxLCBsZW4pOyAg ICAgICAgICAgLyogY29weSB0aGUgbWVzc2FnZSBpdHNlbGYgKi8KICAgIGlm IChwcmlvcCAhPSBOVUxMKQogICAgICAgICpwcmlvcCA9IG1zZ2hkci0+bXNn X3ByaW87CgogICAgLyoganVzdC1yZWFkIG1lc3NhZ2UgZ29lcyB0byBmcm9u dCBvZiBmcmVlIGxpc3QgKi8KICAgIG1zZ2hkci0+bXNnX25leHQgPSBtcWhk ci0+bXFoX2ZyZWU7CiAgICBtcWhkci0+bXFoX2ZyZWUgPSBpbmRleDsKCiAg ICAvKiB3YWtlIHVwIGFueW9uZSBibG9ja2VkIGluIG1xX3NlbmQgd2FpdGlu ZyBmb3Igcm9vbSAqLwogICAgaWYgKGF0dHItPm1xX2N1cm1zZ3MgPT0gYXR0 ci0+bXFfbWF4bXNnKQogICAgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJm1x aGRyLT5tcWhfd2FpdCk7CiAgICBhdHRyLT5tcV9jdXJtc2dzLS07CgogICAg cHRocmVhZF9tdXRleF91bmxvY2soJm1xaGRyLT5tcWhfbG9jayk7CiAgICBy ZXR1cm4obGVuKTsKCmVycjoKICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZt cWhkci0+bXFoX2xvY2spOwogICAgcmV0dXJuKC0xKTsKfQoKaW50IG1xX3Nl bmQobXFkX3QgbXFkLCBjb25zdCBjaGFyICpwdHIsIHNpemVfdCBsZW4sIHVu c2lnbmVkIGludCBwcmlvKQp7CiAgICBpbnQgICAgICAgICAgICAgIG47CiAg ICBsb25nICAgICAgICAgICAgIGluZGV4LCBmcmVlaW5kZXg7CiAgICBjaGFy ICAgICAgICAgICAgKm1wdHI7CiAgICBzdHJ1Y3Qgc2lnZXZlbnQgKnNpZ2V2 OwogICAgc3RydWN0IG1xX2hkciAgICptcWhkcjsKICAgIHN0cnVjdCBtcV9h dHRyICAqYXR0cjsKICAgIHN0cnVjdCBtc2dfaGRyICAqbXNnaGRyLCAqbm1z Z2hkciwgKnBtc2doZHI7CiAgICBzdHJ1Y3QgbXFfaW5mbyAgKm1xaW5mbzsK CiAgICBtcWluZm8gPSBtcWQ7CiAgICBpZiAobXFpbmZvLT5tcWlfbWFnaWMg IT0gTVFJX01BR0lDKSB7CiAgICAgICAgZXJybm8gPSBFQkFERjsKICAgICAg ICByZXR1cm4oLTEpOwogICAgfQogICAgbXFoZHIgPSBtcWluZm8tPm1xaV9o ZHI7ICAgICAgICAvKiBzdHJ1Y3QgcG9pbnRlciAqLwogICAgbXB0ciA9IChj aGFyICopIG1xaGRyOyAgICAgICAgICAvKiBieXRlIHBvaW50ZXIgKi8KICAg IGF0dHIgPSAmbXFoZHItPm1xaF9hdHRyOwogICAgaWYgKCAobiA9IHB0aHJl YWRfbXV0ZXhfbG9jaygmbXFoZHItPm1xaF9sb2NrKSkgIT0gMCkgewogICAg ICAgIGVycm5vID0gbjsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQoKICAg IGlmIChsZW4gPiAoc2l6ZV90KWF0dHItPm1xX21zZ3NpemUpIHsKICAgICAg ICBlcnJubyA9IEVNU0dTSVpFOwogICAgICAgIGdvdG8gZXJyOwogICAgfQog ICAgaWYgKGF0dHItPm1xX2N1cm1zZ3MgPT0gMCkgewogICAgICAgIGlmICht cWhkci0+bXFoX3BpZCAhPSAwICYmIG1xaGRyLT5tcWhfbndhaXQgPT0gMCkg ewogICAgICAgICAgICBzaWdldiA9ICZtcWhkci0+bXFoX2V2ZW50OwojaWYg IWRlZmluZWQoV0lOMzIpCiAgICAgICAgICAgIGlmIChzaWdldi0+c2lnZXZf bm90aWZ5ID09IFNJR0VWX1NJR05BTCkgewogICAgICAgICAgICAgICAgc2ln cXVldWUobXFoZHItPm1xaF9waWQsIHNpZ2V2LT5zaWdldl9zaWdubywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdldi0+ c2lnZXZfdmFsdWUpOwogICAgICAgICAgICB9CiNlbmRpZgogICAgICAgICAg ICBtcWhkci0+bXFoX3BpZCA9IDA7ICAgICAgICAgICAgIC8qIHVucmVnaXN0 ZXIgKi8KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKGF0dHItPm1xX2N1cm1z Z3MgPj0gYXR0ci0+bXFfbWF4bXNnKSB7CiAgICAgICAgLyogcXVldWUgaXMg ZnVsbCAqLwogICAgICAgIGlmIChtcWluZm8tPm1xaV9mbGFncyAmIE9fTk9O QkxPQ0spIHsKICAgICAgICAgICAgZXJybm8gPSBFQUdBSU47CiAgICAgICAg ICAgIGdvdG8gZXJyOwogICAgICAgIH0KICAgICAgICAvKiB3YWl0IGZvciBy b29tIGZvciBvbmUgbWVzc2FnZSBvbiB0aGUgcXVldWUgKi8KICAgICAgICB3 aGlsZSAoYXR0ci0+bXFfY3VybXNncyA+PSBhdHRyLT5tcV9tYXhtc2cpCiAg ICAgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZtcWhkci0+bXFoX3dhaXQs ICZtcWhkci0+bXFoX2xvY2spOwogICAgfQogICAgLyogbm1zZ2hkciB3aWxs IHBvaW50IHRvIG5ldyBtZXNzYWdlICovCiAgICBpZiAoIChmcmVlaW5kZXgg PSBtcWhkci0+bXFoX2ZyZWUpID09IDApIHsKICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIm1xX3NlbmQ6IGN1cm1zZ3MgPSAlbGQ7IGZyZWUgPSAwIiwgYXR0 ci0+bXFfY3VybXNncyk7CiAgICB9CgogICAgbm1zZ2hkciA9IChzdHJ1Y3Qg bXNnX2hkciAqKSAmbXB0cltmcmVlaW5kZXhdOwogICAgbm1zZ2hkci0+bXNn X3ByaW8gPSBwcmlvOwogICAgbm1zZ2hkci0+bXNnX2xlbiA9IGxlbjsKICAg IG1lbWNweShubXNnaGRyICsgMSwgcHRyLCBsZW4pOyAgICAgICAgICAvKiBj b3B5IG1lc3NhZ2UgZnJvbSBjYWxsZXIgKi8KICAgIG1xaGRyLT5tcWhfZnJl ZSA9IG5tc2doZHItPm1zZ19uZXh0OyAgICAvKiBuZXcgZnJlZWxpc3QgaGVh ZCAqLwoKICAgIC8qIGZpbmQgcmlnaHQgcGxhY2UgZm9yIG1lc3NhZ2UgaW4g bGlua2VkIGxpc3QgKi8KICAgIGluZGV4ID0gbXFoZHItPm1xaF9oZWFkOwog ICAgcG1zZ2hkciA9IChzdHJ1Y3QgbXNnX2hkciAqKSAmKG1xaGRyLT5tcWhf aGVhZCk7CiAgICB3aGlsZSAoaW5kZXggIT0gMCkgewogICAgICAgIG1zZ2hk ciA9IChzdHJ1Y3QgbXNnX2hkciAqKSAmbXB0cltpbmRleF07CiAgICAgICAg aWYgKHByaW8gPiBtc2doZHItPm1zZ19wcmlvKSB7CiAgICAgICAgICAgIG5t c2doZHItPm1zZ19uZXh0ID0gaW5kZXg7CiAgICAgICAgICAgIHBtc2doZHIt Pm1zZ19uZXh0ID0gZnJlZWluZGV4OwogICAgICAgICAgICBicmVhazsKICAg ICAgICB9CiAgICAgICAgaW5kZXggPSBtc2doZHItPm1zZ19uZXh0OwogICAg ICAgIHBtc2doZHIgPSBtc2doZHI7CiAgICB9CiAgICBpZiAoaW5kZXggPT0g MCkgewogICAgICAgIC8qIHF1ZXVlIHdhcyBlbXB0eSBvciBuZXcgZ29lcyBh dCBlbmQgb2YgbGlzdCAqLwogICAgICAgIHBtc2doZHItPm1zZ19uZXh0ID0g ZnJlZWluZGV4OwogICAgICAgIG5tc2doZHItPm1zZ19uZXh0ID0gMDsKICAg IH0KICAgIC8qIHdha2UgdXAgYW55b25lIGJsb2NrZWQgaW4gbXFfcmVjZWl2 ZSB3YWl0aW5nIGZvciBhIG1lc3NhZ2UgKi8gCiAgICBpZiAoYXR0ci0+bXFf Y3VybXNncyA9PSAwKQogICAgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJm1x aGRyLT5tcWhfd2FpdCk7CiAgICBhdHRyLT5tcV9jdXJtc2dzKys7CgogICAg cHRocmVhZF9tdXRleF91bmxvY2soJm1xaGRyLT5tcWhfbG9jayk7CiAgICBy ZXR1cm4oMCk7CgplcnI6CiAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXFo ZHItPm1xaF9sb2NrKTsKICAgIHJldHVybigtMSk7Cn0KCmludCBtcV9zZXRh dHRyKG1xZF90IG1xZCwgY29uc3Qgc3RydWN0IG1xX2F0dHIgKm1xc3RhdCwg c3RydWN0IG1xX2F0dHIgKm9tcXN0YXQpCnsKICAgIGludCAgICAgICAgICAg ICBuOwogICAgc3RydWN0IG1xX2hkciAgKm1xaGRyOwogICAgc3RydWN0IG1x X2F0dHIgKmF0dHI7CiAgICBzdHJ1Y3QgbXFfaW5mbyAqbXFpbmZvOwoKICAg IG1xaW5mbyA9IG1xZDsKICAgIGlmIChtcWluZm8tPm1xaV9tYWdpYyAhPSBN UUlfTUFHSUMpIHsKICAgICAgICBlcnJubyA9IEVCQURGOwogICAgICAgIHJl dHVybigtMSk7CiAgICB9CiAgICBtcWhkciA9IG1xaW5mby0+bXFpX2hkcjsK ICAgIGF0dHIgPSAmbXFoZHItPm1xaF9hdHRyOwogICAgaWYgKCAobiA9IHB0 aHJlYWRfbXV0ZXhfbG9jaygmbXFoZHItPm1xaF9sb2NrKSkgIT0gMCkgewog ICAgICAgIGVycm5vID0gbjsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQoK ICAgIGlmIChvbXFzdGF0ICE9IE5VTEwpIHsKICAgICAgICBvbXFzdGF0LT5t cV9mbGFncyA9IG1xaW5mby0+bXFpX2ZsYWdzOyAgLyogcHJldmlvdXMgYXR0 cmlidXRlcyAqLwogICAgICAgIG9tcXN0YXQtPm1xX21heG1zZyA9IGF0dHIt Pm1xX21heG1zZzsKICAgICAgICBvbXFzdGF0LT5tcV9tc2dzaXplID0gYXR0 ci0+bXFfbXNnc2l6ZTsKICAgICAgICBvbXFzdGF0LT5tcV9jdXJtc2dzID0g YXR0ci0+bXFfY3VybXNnczsgLyogYW5kIGN1cnJlbnQgc3RhdHVzICovCiAg ICB9CgogICAgaWYgKG1xc3RhdC0+bXFfZmxhZ3MgJiBPX05PTkJMT0NLKQog ICAgICAgIG1xaW5mby0+bXFpX2ZsYWdzIHw9IE9fTk9OQkxPQ0s7CiAgICBl bHNlCiAgICAgICAgbXFpbmZvLT5tcWlfZmxhZ3MgJj0gfk9fTk9OQkxPQ0s7 CgogICAgcHRocmVhZF9tdXRleF91bmxvY2soJm1xaGRyLT5tcWhfbG9jayk7 CiAgICByZXR1cm4oMCk7Cn0KCmludCBtcV91bmxpbmsoY29uc3QgY2hhciAq cGF0aG5hbWUpCnsKICAgIGlmICh1bmxpbmsocGF0aG5hbWUpID09IC0xKQog ICAgICAgIHJldHVybigtMSk7CiAgICByZXR1cm4oMCk7Cn0K ------------=_1583534834-35002-1 Content-Type: text/x-c; charset=us-ascii; name="mqueue.h" Content-Disposition: inline; filename="mqueue.h" Content-Transfer-Encoding: base64 Content-Length: 4230 LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqIFBPU0lY IE1lc3NhZ2UgUXVldWUgbGlicmFyeSBpbXBsZW1lbnRlZCB1c2luZyBtZW1v cnkgbWFwcGVkIGZpbGVzCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KI2lmbmRlZiBfX21xdWV1ZV9oCiNkZWZpbmUgX19tcXVldWVf aAojaW5jbHVkZSA8cHRocmVhZC5oPgoKI2lmIGRlZmluZWQoV0lOMzIpCiMg ICBpbmNsdWRlIDxmY250bC5oPgojICAgZGVmaW5lIEVNU0dTSVpFICAgIDQy MDAKIyAgIGRlZmluZSBPX05PTkJMT0NLICAwMjAwMDAwCgogICAgdW5pb24g c2lndmFsIHsKICAgICAgICBpbnQgICAgICAgICAgIHNpdmFsX2ludDsgICAg IC8qIGludGVnZXIgdmFsdWUgKi8KICAgICAgICB2b2lkICAgICAgICAgICpz aXZhbF9wdHI7ICAgIC8qIHBvaW50ZXIgdmFsdWUgKi8KICAgIH07CiAgICBz dHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIGludCAgICAgICAgICAgc2lnZXZf bm90aWZ5OyAgLyogbm90aWZpY2F0aW9uIHR5cGUgKi8KICAgICAgICBpbnQg ICAgICAgICAgIHNpZ2V2X3NpZ25vOyAgIC8qIHNpZ25hbCBudW1iZXIgKi8K ICAgICAgICB1bmlvbiBzaWd2YWwgIHNpZ2V2X3ZhbHVlOyAgIC8qIHNpZ25h bCB2YWx1ZSAqLwogICAgfTsKICAgIHR5cGVkZWYgaW50IHBpZF90OwogICAg dHlwZWRlZiBpbnQgc3NpemVfdDsKI2VuZGlmCgovKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgp0eXBlZGVmIHN0cnVjdCBtcV9pbmZvICpt cWRfdDsgICAgICAgLyogb3BhcXVlIGRhdGF0eXBlICovCgpzdHJ1Y3QgbXFf YXR0ciB7CiAgICBsb25nIG1xX2ZsYWdzOyAgICAgLyogbWVzc2FnZSBxdWV1 ZSBmbGFnOiBPX05PTkJMT0NLICovCiAgICBsb25nIG1xX21heG1zZzsgICAg LyogbWF4IG51bWJlciBvZiBtZXNzYWdlcyBhbGxvd2VkIG9uIHF1ZXVlICov CiAgICBsb25nIG1xX21zZ3NpemU7ICAgLyogbWF4IHNpemUgb2YgYSBtZXNz YWdlIChpbiBieXRlcykgKi8KICAgIGxvbmcgbXFfY3VybXNnczsgICAvKiBu dW1iZXIgb2YgbWVzc2FnZXMgY3VycmVudGx5IG9uIHF1ZXVlICovCn07Cgov KiBvbmUgbXFfaGRye30gcGVyIHF1ZXVlLCBhdCBiZWdpbm5pbmcgb2YgbWFw cGVkIGZpbGUgKi8Kc3RydWN0IG1xX2hkciB7CiAgICBzdHJ1Y3QgbXFfYXR0 ciAgICBtcWhfYXR0cjsgIC8qIHRoZSBxdWV1ZSdzIGF0dHJpYnV0ZXMgKi8K ICAgIGxvbmcgICAgICAgICAgICAgIG1xaF9oZWFkOyAgLyogaW5kZXggb2Yg Zmlyc3QgbWVzc2FnZSAqLwogICAgbG9uZyAgICAgICAgICAgICAgbXFoX2Zy ZWU7ICAvKiBpbmRleCBvZiBmaXJzdCBmcmVlIG1lc3NhZ2UgKi8KICAgIGxv bmcgICAgICAgICAgICAgIG1xaF9ud2FpdDsgLyogI3RocmVhZHMgYmxvY2tl ZCBpbiBtcV9yZWNlaXZlKCkgKi8KICAgIHBpZF90ICAgICAgICAgICAgIG1x aF9waWQ7ICAgLyogbm9uemVybyBQSUQgaWYgbXFoX2V2ZW50IHNldCAqLwog ICAgc3RydWN0IHNpZ2V2ZW50ICAgbXFoX2V2ZW50OyAvKiBmb3IgbXFfbm90 aWZ5KCkgKi8KICAgIHB0aHJlYWRfbXV0ZXhfdCAgIG1xaF9sb2NrOyAgLyog bXV0ZXggbG9jayAqLwogICAgcHRocmVhZF9jb25kX3QgICAgbXFoX3dhaXQ7 ICAvKiBhbmQgY29uZGl0aW9uIHZhcmlhYmxlICovCn07CgovKiBvbmUgbXNn X2hkcnt9IGF0IHRoZSBmcm9udCBvZiBlYWNoIG1lc3NhZ2UgaW4gdGhlIG1h cHBlZCBmaWxlICovCnN0cnVjdCBtc2dfaGRyIHsKICAgIGxvbmcgICAgICAg ICAgICBtc2dfbmV4dDsgICAgLyogaW5kZXggb2YgbmV4dCBvbiBsaW5rZWQg bGlzdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBt c2dfbmV4dCBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiBzdHJ1Y3QgKi8KICAg IHNzaXplX3QgICAgICAgICBtc2dfbGVuOyAgICAgLyogYWN0dWFsIGxlbmd0 aCAqLwogICAgdW5zaWduZWQgaW50ICAgIG1zZ19wcmlvOyAgICAvKiBwcmlv cml0eSAqLwp9OwoKLyogb25lIG1xX2luZm97fSBtYWxsb2MnZWQgcGVyIHBy b2Nlc3MgcGVyIG1xX29wZW4oKSAqLwpzdHJ1Y3QgbXFfaW5mbyB7CiNpZiBk ZWZpbmVkKFdJTjMyKQogICAgSEFORExFICAgICAgICAgbXFpX2ZtYXA7ICAg ICAvKiBmaWxlIG1hcHBpbmcgb2JqZWN0ICovCiNlbmRpZgogICAgc3RydWN0 IG1xX2hkciAqbXFpX2hkcjsgICAgICAvKiBzdGFydCBvZiBtbWFwJ2VkIHJl Z2lvbiAqLwogICAgbG9uZyAgICAgICAgICAgbXFpX21hZ2ljOyAgICAvKiBt YWdpYyBudW1iZXIgaWYgb3BlbiAqLwogICAgaW50ICAgICAgICAgICAgbXFp X2ZsYWdzOyAgICAvKiBmbGFncyBmb3IgdGhpcyBwcm9jZXNzICovCn07CiNk ZWZpbmUgTVFJX01BR0lDICAweDk4NzY1NDMyCgovKiBzaXplIG9mIG1lc3Nh Z2UgaW4gZmlsZSBpcyByb3VuZGVkIHVwIGZvciBhbGlnbm1lbnQgKi8KI2Rl ZmluZSBNU0dTSVpFKGkpICgoKChpKSArIHNpemVvZihsb25nKS0xKSAvIHNp emVvZihsb25nKSkgKiBzaXplb2YobG9uZykpCgovKiBtZXNzYWdlIHF1ZXVl IGZ1bmN0aW9ucyAqLwpleHRlcm4gaW50ICAgICBtcV9jbG9zZShtcWRfdCk7 CmV4dGVybiBpbnQgICAgIG1xX2dldGF0dHIobXFkX3QsIHN0cnVjdCBtcV9h dHRyICopOwpleHRlcm4gaW50ICAgICBtcV9ub3RpZnkobXFkX3QsIGNvbnN0 IHN0cnVjdCBzaWdldmVudCAqKTsKZXh0ZXJuIG1xZF90ICAgbXFfb3Blbihj b25zdCBjaGFyICosIGludCwgLi4uKTsKZXh0ZXJuIHNzaXplX3QgbXFfcmVj ZWl2ZShtcWRfdCwgY2hhciAqLCBzaXplX3QsIHVuc2lnbmVkIGludCAqKTsK ZXh0ZXJuIGludCAgICAgbXFfc2VuZChtcWRfdCwgY29uc3QgY2hhciAqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgICAgIG1xX3NldGF0 dHIobXFkX3QsIGNvbnN0IHN0cnVjdCBtcV9hdHRyICosIHN0cnVjdCBtcV9h dHRyICopOwpleHRlcm4gaW50ICAgICBtcV91bmxpbmsoY29uc3QgY2hhciAq bmFtZSk7CgojZW5kaWYK ------------=_1583534834-35002-1--