From owner-freebsd-net@freebsd.org Thu Jan 7 10:28:35 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 07F7DA654C9 for ; Thu, 7 Jan 2016 10:28:35 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 851AF1DC9 for ; Thu, 7 Jan 2016 10:28:34 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: by mail-wm0-x22c.google.com with SMTP id f206so91343267wmf.0 for ; Thu, 07 Jan 2016 02:28:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Ea5FvQTkXNOevC7Efecp06WqqsgL3jbl7+hU0JgjV8M=; b=comlir2qr4CJDrfG3BByWXteWjzj5BFMOHcoCWuK0y8fd2nxhCxurHY2SNBKv3K8SC 6PGqlhGPozcIhrEWiMqE5dqBoAQlZQ+TE1fLCFmdFC2skm2iQb2m/xdgUbXFw5N9OYWW mO3hmcTy+k6UL0JB56O2tdaSUGpKRzqryIEXQykXVLTHPDToRls1pDTOCpoHWxk0k1si IndxcJkofy7D4fHb4LqOv/SLtSG7VL58w2xCJ7l6YTFQ1/hKY5hP+wWTw0dloT3alkfX KljzRmIa97OaAXpjvqO+kZKqlQScbG1puokqPrlZMQ7qZYtIS9m13zLvsL7V8Ow+51h2 Qq3w== MIME-Version: 1.0 X-Received: by 10.194.243.103 with SMTP id wx7mr123172211wjc.136.1452162513045; Thu, 07 Jan 2016 02:28:33 -0800 (PST) Received: by 10.28.136.148 with HTTP; Thu, 7 Jan 2016 02:28:32 -0800 (PST) In-Reply-To: <20160107101351.GR3625@kib.kiev.ua> References: <20160103214720.72014.qmail@f5-external.bushwire.net> <20160104085415.GS3625@kib.kiev.ua> <20160104091108.50654.qmail@f5-external.bushwire.net> <20160104093859.GV3625@kib.kiev.ua> <20160104101747.58347.qmail@f5-external.bushwire.net> <20160104194044.GD3625@kib.kiev.ua> <20160104210741.32812.qmail@f5-external.bushwire.net> <20160107101351.GR3625@kib.kiev.ua> Date: Thu, 7 Jan 2016 12:28:32 +0200 Message-ID: Subject: Re: Does FreeBSD have sendmmsg or recvmmsg system calls? From: Boris Astardzhiev To: Konstantin Belousov Cc: Mark Delany , freebsd-net@freebsd.org Content-Type: multipart/mixed; boundary=089e01493c12bf93910528bbeec6 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jan 2016 10:28:35 -0000 --089e01493c12bf93910528bbeec6 Content-Type: text/plain; charset=UTF-8 > Please remove the autogenerated parts of the patch and resend. On Thu, Jan 7, 2016 at 12:13 PM, Konstantin Belousov wrote: > On Thu, Jan 07, 2016 at 11:51:24AM +0200, Boris Astardzhiev wrote: > > Hello, > > > > Here's my implementation of the two system calls. The patch is against > HEAD > > from a couple of days: > Please remove the autogenerated parts of the patch and resend. > --089e01493c12bf93910528bbeec6 Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg.diff" Content-Disposition: attachment; filename="sendrecvmmsg.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ij441b7t0 ZGlmZiAtLWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvbGliY19wcml2YXRlLmggYi9saWIvbGliYy9p bmNsdWRlL2xpYmNfcHJpdmF0ZS5oCmluZGV4IDVjYWY5YTMuLjdlMmE5MDIgMTAwNjQ0Ci0tLSBh L2xpYi9saWJjL2luY2x1ZGUvbGliY19wcml2YXRlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVkZS9s aWJjX3ByaXZhdGUuaApAQCAtMjAwLDggKzIwMCwxMCBAQCBlbnVtIHsKIAlJTlRFUlBPU19wc2Vs ZWN0LAogCUlOVEVSUE9TX3JlY3Zmcm9tLAogCUlOVEVSUE9TX3JlY3Ztc2csCisJSU5URVJQT1Nf cmVjdm1tc2csCiAJSU5URVJQT1Nfc2VsZWN0LAogCUlOVEVSUE9TX3NlbmRtc2csCisJSU5URVJQ T1Nfc2VuZG1tc2csCiAJSU5URVJQT1Nfc2VuZHRvLAogCUlOVEVSUE9TX3NldGNvbnRleHQsCiAJ SU5URVJQT1Nfc2lnYWN0aW9uLApAQCAtMjg5LDYgKzI5MSw3IEBAIHN0cnVjdCBmZF9zZXQ7CiBz dHJ1Y3QgaW92ZWM7CiBzdHJ1Y3Qga2V2ZW50Owogc3RydWN0IG1zZ2hkcjsKK3N0cnVjdCBtbXNn aGRyOwogc3RydWN0IHBvbGxmZDsKIHN0cnVjdCBydXNhZ2U7CiBzdHJ1Y3Qgc2lnYWN0aW9uOwpA QCAtMzM0LDkgKzMzNywxMSBAQCBfX3NzaXplX3QJX19zeXNfcmVjdihpbnQsIHZvaWQgKiwgX19z aXplX3QsIGludCk7CiBfX3NzaXplX3QJX19zeXNfcmVjdmZyb20oaW50LCB2b2lkICosIF9fc2l6 ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAogCQkgICAgX19zb2NrbGVuX3QgKik7CiBfX3Nz aXplX3QJX19zeXNfcmVjdm1zZyhpbnQsIHN0cnVjdCBtc2doZHIgKiwgaW50KTsKK19fc3NpemVf dAlfX3N5c19yZWN2bW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICosIHVuc2lnbmVkIGludCwgaW50 KTsKIGludAkJX19zeXNfc2VsZWN0KGludCwgc3RydWN0IGZkX3NldCAqLCBzdHJ1Y3QgZmRfc2V0 ICosCiAJCSAgICBzdHJ1Y3QgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwogX19zc2l6ZV90 CV9fc3lzX3NlbmRtc2coaW50LCBjb25zdCBzdHJ1Y3QgbXNnaGRyICosIGludCk7CitfX3NzaXpl X3QJX19zeXNfc2VuZG1tc2coaW50LCBjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqLCB1bnNpZ25lZCBp bnQsIGludCk7CiBfX3NzaXplX3QJX19zeXNfc2VuZHRvKGludCwgY29uc3Qgdm9pZCAqLCBfX3Np emVfdCwgaW50LAogCQkgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIF9fc29ja2xlbl90KTsK IGludAkJX19zeXNfc2V0Y29udGV4dChjb25zdCBzdHJ1Y3QgX191Y29udGV4dCAqKTsKZGlmZiAt LWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvbmFtZXNwYWNlLmggYi9saWIvbGliYy9pbmNsdWRlL25h bWVzcGFjZS5oCmluZGV4IDczOWQ3YjEuLmM5NTgyOWUgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2lu Y2x1ZGUvbmFtZXNwYWNlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaApAQCAt MjA4LDYgKzIwOCw3IEBACiAjZGVmaW5lCQlyZWFkdgkJCQlfcmVhZHYKICNkZWZpbmUJCXJlY3Zm cm9tCQkJX3JlY3Zmcm9tCiAjZGVmaW5lCQlyZWN2bXNnCQkJCV9yZWN2bXNnCisjZGVmaW5lCQly ZWN2bW1zZwkJCV9yZWN2bW1zZwogI2RlZmluZQkJc2VsZWN0CQkJCV9zZWxlY3QKICNkZWZpbmUJ CXNlbV9jbG9zZQkJCV9zZW1fY2xvc2UKICNkZWZpbmUJCXNlbV9kZXN0cm95CQkJX3NlbV9kZXN0 cm95CkBAIC0yMjAsNiArMjIxLDcgQEAKICNkZWZpbmUJCXNlbV91bmxpbmsJCQlfc2VtX3VubGlu awogI2RlZmluZQkJc2VtX3dhaXQJCQlfc2VtX3dhaXQKICNkZWZpbmUJCXNlbmRtc2cJCQkJX3Nl bmRtc2cKKyNkZWZpbmUJCXNlbmRtbXNnCQkJX3NlbmRtbXNnCiAjZGVmaW5lCQlzZW5kdG8JCQkJ X3NlbmR0bwogI2RlZmluZQkJc2V0c29ja29wdAkJCV9zZXRzb2Nrb3B0CiAvKiNkZWZpbmUJCXNp Z2FjdGlvbgkJCV9zaWdhY3Rpb24qLwpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvaW5jbHVkZS91bi1u YW1lc3BhY2UuaCBiL2xpYi9saWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmgKaW5kZXggZjMxZmE3 YS4uMDIzMzM0OCAxMDA2NDQKLS0tIGEvbGliL2xpYmMvaW5jbHVkZS91bi1uYW1lc3BhY2UuaAor KysgYi9saWIvbGliYy9pbmNsdWRlL3VuLW5hbWVzcGFjZS5oCkBAIC0xODksNiArMTg5LDcgQEAK ICN1bmRlZgkJcmVhZHYKICN1bmRlZgkJcmVjdmZyb20KICN1bmRlZgkJcmVjdm1zZworI3VuZGVm CQlyZWN2bW1zZwogI3VuZGVmCQlzZWxlY3QKICN1bmRlZgkJc2VtX2Nsb3NlCiAjdW5kZWYJCXNl bV9kZXN0cm95CkBAIC0yMDEsNiArMjAyLDcgQEAKICN1bmRlZgkJc2VtX3VubGluawogI3VuZGVm CQlzZW1fd2FpdAogI3VuZGVmCQlzZW5kbXNnCisjdW5kZWYJCXNlbmRtbXNnCiAjdW5kZWYJCXNl bmR0bwogI3VuZGVmCQlzZXRzb2Nrb3B0CiAjdW5kZWYJCXNpZ2FjdGlvbgpkaWZmIC0tZ2l0IGEv bGliL2xpYmMvc3lzL01ha2VmaWxlLmluYyBiL2xpYi9saWJjL3N5cy9NYWtlZmlsZS5pbmMKaW5k ZXggZTRmZTFiMi4uMWMwOWZjZSAxMDA2NDQKLS0tIGEvbGliL2xpYmMvc3lzL01ha2VmaWxlLmlu YworKysgYi9saWIvbGliYy9zeXMvTWFrZWZpbGUuaW5jCkBAIC00OSw4ICs0OSwxMCBAQCBJTlRF UlBPU0VEID0gXAogCXJlYWR2IFwKIAlyZWN2ZnJvbSBcCiAJcmVjdm1zZyBcCisJcmVjdm1tc2cg XAogCXNlbGVjdCBcCiAJc2VuZG1zZyBcCisJc2VuZG1tc2cgXAogCXNlbmR0byBcCiAJc2V0Y29u dGV4dCBcCiAJc2lncHJvY21hc2sgXApkaWZmIC0tZ2l0IGEvbGliL2xpYmMvc3lzL1N5bWJvbC5t YXAgYi9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAppbmRleCA3YjMyNTdjLi42Y2MzYzZlIDEwMDY0 NAotLS0gYS9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAorKysgYi9saWIvbGliYy9zeXMvU3ltYm9s Lm1hcApAQCAtMjIwLDYgKzIyMCw3IEBAIEZCU0RfMS4wIHsKIAlyZWJvb3Q7CiAJcmVjdmZyb207 CiAJcmVjdm1zZzsKKwlyZWN2bW1zZzsKIAlyZW5hbWU7CiAJcmV2b2tlOwogCXJmb3JrOwpAQCAt MjQwLDYgKzI0MSw3IEBAIEZCU0RfMS4wIHsKIAlzZW1zeXM7CiAJc2VuZGZpbGU7CiAJc2VuZG1z ZzsKKwlzZW5kbW1zZzsKIAlzZW5kdG87CiAJc2V0YXVkaXQ7CiAJc2V0YXVkaXRfYWRkcjsKQEAg LTg1MSw2ICs4NTMsOCBAQCBGQlNEcHJpdmF0ZV8xLjAgewogCV9fc3lzX3JlY3Zmcm9tOwogCV9y ZWN2bXNnOwogCV9fc3lzX3JlY3Ztc2c7CisJX3JlY3ZtbXNnOworCV9fc3lzX3JlY3ZtbXNnOwog CV9yZW5hbWU7CiAJX19zeXNfcmVuYW1lOwogCV9yZXZva2U7CkBAIC04OTEsNiArODk1LDggQEAg RkJTRHByaXZhdGVfMS4wIHsKIAlfX3N5c19zZW5kZmlsZTsKIAlfc2VuZG1zZzsKIAlfX3N5c19z ZW5kbXNnOworCV9zZW5kbW1zZzsKKwlfX3N5c19zZW5kbW1zZzsKIAlfc2VuZHRvOwogCV9fc3lz X3NlbmR0bzsKIAlfc2V0YXVkaXQ7CmRpZmYgLS1naXQgYS9saWIvbGliYy9zeXMvaW50ZXJwb3Np bmdfdGFibGUuYyBiL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5jCmluZGV4IDA4ZGZi YjEuLmM4NjZhNzUgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5j CisrKyBiL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5jCkBAIC01Niw4ICs1NiwxMCBA QCBpbnRlcnBvc19mdW5jX3QgX19saWJjX2ludGVycG9zaW5nW0lOVEVSUE9TX01BWF0gPSB7CiAJ U0xPVChyZWFkdiwgX19zeXNfcmVhZHYpLAogCVNMT1QocmVjdmZyb20sIF9fc3lzX3JlY3Zmcm9t KSwKIAlTTE9UKHJlY3Ztc2csIF9fc3lzX3JlY3Ztc2cpLAorCVNMT1QocmVjdm1tc2csIF9fc3lz X3JlY3ZtbXNnKSwKIAlTTE9UKHNlbGVjdCwgX19zeXNfc2VsZWN0KSwKIAlTTE9UKHNlbmRtc2cs IF9fc3lzX3NlbmRtc2cpLAorCVNMT1Qoc2VuZG1tc2csIF9fc3lzX3NlbmRtbXNnKSwKIAlTTE9U KHNlbmR0bywgX19zeXNfc2VuZHRvKSwKIAlTTE9UKHNldGNvbnRleHQsIF9fc3lzX3NldGNvbnRl eHQpLAogCVNMT1Qoc2lnYWN0aW9uLCBfX3N5c19zaWdhY3Rpb24pLApkaWZmIC0tZ2l0IGEvbGli L2xpYmMvc3lzL3JlY3ZtbXNnLmMgYi9saWIvbGliYy9zeXMvcmVjdm1tc2cuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmIwNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvbGli L2xpYmMvc3lzL3JlY3ZtbXNnLmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxNiBCb3JpcyBBc3RhcmR6aGlldiwgU21hcnRjb20tQnVsZ2FyaWEgQUQKKyAqIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGFzCisgKiAgICB0aGUgZmlyc3QgbGluZXMg b2YgdGhpcyBmaWxlIHVubW9kaWZpZWQgb3RoZXIgdGhhbiB0aGUgcG9zc2libGUKKyAqICAgIGFk ZGl0aW9uIG9mIG9uZSBvciBtb3JlIGNvcHlyaWdodCBub3RpY2VzLgorICogMi4gUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KyAqICAgIG5vdGljZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgYGBBUyBJ UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBCRQor ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5U RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks CisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRQorICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKKyAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5o PgorX19GQlNESUQoIiRGcmVlQlNEJCIpOworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5j bHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSAi bGliY19wcml2YXRlLmgiCisKK19fd2Vha19yZWZlcmVuY2UoX19zeXNfcmVjdm1tc2csIF9fcmVj dm1tc2cpOworCisjcHJhZ21hIHdlYWsgcmVjdm1tc2cKK3NzaXplX3QKK3JlY3ZtbXNnKGludCBz LCBzdHJ1Y3QgbW1zZ2hkciAqbXNndmVjLCB1bnNpZ25lZCBpbnQgdmxlbiwgaW50IGZsYWdzKQor eworCisJcmV0dXJuICgoKGludCAoKikoaW50LCBzdHJ1Y3QgbW1zZ2hkciAqLCBpbnQsIGludCkp CisJICAgIF9fbGliY19pbnRlcnBvc2luZ1tJTlRFUlBPU19yZWN2bW1zZ10pKHMsIG1zZ3ZlYywg dmxlbiwgZmxhZ3MpKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9zZW5kbW1zZy5jIGIv bGliL2xpYmMvc3lzL3NlbmRtbXNnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzk4ZjljYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9saWJjL3N5cy9zZW5kbW1zZy5jCkBA IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQm9yaXMgQXN0YXJkemhp ZXYsIFNtYXJ0Y29tLUJ1bGdhcmlhIEFECisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg IG5vdGljZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBhcworICogICAgdGhlIGZpcnN0IGxpbmVzIG9mIHRoaXMgZmlsZSB1bm1vZGlmaWVk IG90aGVyIHRoYW4gdGhlIHBvc3NpYmxlCisgKiAgICBhZGRpdGlvbiBvZiBvbmUgb3IgbW9yZSBj b3B5cmlnaHQgbm90aWNlcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UKKyAqIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsCisgKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQi KTsKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Cisj aW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgImxpYmNfcHJpdmF0ZS5oIgorCitfX3dl YWtfcmVmZXJlbmNlKF9fc3lzX3NlbmRtbXNnLCBfX3NlbmRtbXNnKTsKKworI3ByYWdtYSB3ZWFr IHNlbmRtbXNnCitzc2l6ZV90CitzZW5kbW1zZyhpbnQgcywgY29uc3Qgc3RydWN0IG1tc2doZHIg Km1zZ3ZlYywgdW5zaWduZWQgaW50IHZsZW4sIGludCBmbGFncykKK3sKKworCXJldHVybiAoKChp bnQgKCopKGludCwgY29uc3Qgc3RydWN0IG1tc2doZHIgKiwgaW50LCBpbnQpKQorCSAgICBfX2xp YmNfaW50ZXJwb3NpbmdbSU5URVJQT1Nfc2VuZG1tc2ddKShzLCBtc2d2ZWMsIHZsZW4sIGZsYWdz KSk7Cit9CmRpZmYgLS1naXQgYS9zeXMvYnNtL2F1ZGl0X2tldmVudHMuaCBiL3N5cy9ic20vYXVk aXRfa2V2ZW50cy5oCmluZGV4IDNjMTZjNzMuLjJmYzg4N2EgMTAwNjQ0Ci0tLSBhL3N5cy9ic20v YXVkaXRfa2V2ZW50cy5oCisrKyBiL3N5cy9ic20vYXVkaXRfa2V2ZW50cy5oCkBAIC02MTEsNiAr NjExLDggQEAKICNkZWZpbmUJQVVFX0JJTkRBVAkJNDMyMDcJLyogVHJ1c3RlZEJTRC4gKi8KICNk ZWZpbmUJQVVFX0NPTk5FQ1RBVAkJNDMyMDgJLyogVHJ1c3RlZEJTRC4gKi8KICNkZWZpbmUJQVVF X0NIRkxBR1NBVAkJNDMyMDkJLyogRnJlZUJTRC1zcGVjaWZpYy4gKi8KKyNkZWZpbmUJQVVFX1NF TkRNTVNHCQk0MzIxMAorI2RlZmluZQlBVUVfUkVDVk1NU0cJCTQzMjExCiAKIC8qCiAgKiBEYXJ3 aW4gQlNNIHVzZXMgYSBudW1iZXIgb2YgQVVFX09fKiBkZWZpbml0aW9ucywgd2hpY2ggYXJlIGFs aWFzZWQgdG8gdGhlCmRpZmYgLS1naXQgYS9zeXMva2Vybi9zeXNjYWxscy5tYXN0ZXIgYi9zeXMv a2Vybi9zeXNjYWxscy5tYXN0ZXIKaW5kZXggNmU2ZmIzOC4uNjE5MDg5NSAxMDA2NDQKLS0tIGEv c3lzL2tlcm4vc3lzY2FsbHMubWFzdGVyCisrKyBiL3N5cy9rZXJuL3N5c2NhbGxzLm1hc3RlcgpA QCAtOTk0LDYgKzk5NCwxMCBAQAogNTQ5CUFVRV9OVUxMCVNURAl7IGludCBudW1hX3NldGFmZmlu aXR5KGNwdXdoaWNoX3Qgd2hpY2gsIFwKIAkJCQkgICAgaWRfdCBpZCwgXAogCQkJCSAgICBjb25z dCBzdHJ1Y3Qgdm1fZG9tYWluX3BvbGljeV9lbnRyeSAqcG9saWN5KTsgfQorNTUwCUFVRV9TRU5E TU1TRwlTVEQJeyBpbnQgc2VuZG1tc2coaW50IHMsIHN0cnVjdCBtbXNnaGRyICptc2d2ZWMsXAor CQkJCSAgICB1bnNpZ25lZCBpbnQgdmxlbiwgaW50IGZsYWdzKTsgfQorNTUxCUFVRV9SRUNWTU1T RwlTVEQJeyBpbnQgcmVjdm1tc2coaW50IHMsIHN0cnVjdCBtbXNnaGRyICptc2d2ZWMsXAorCQkJ CSAgICB1bnNpZ25lZCBpbnQgdmxlbiwgaW50IGZsYWdzKTsgfQogCiA7IFBsZWFzZSBjb3B5IGFu eSBhZGRpdGlvbnMgYW5kIGNoYW5nZXMgdG8gdGhlIGZvbGxvd2luZyBjb21wYXRhYmlsaXR5IHRh YmxlczoKIDsgc3lzL2NvbXBhdC9mcmVlYnNkMzIvc3lzY2FsbHMubWFzdGVyCmRpZmYgLS1naXQg YS9zeXMva2Vybi91aXBjX3N5c2NhbGxzLmMgYi9zeXMva2Vybi91aXBjX3N5c2NhbGxzLmMKaW5k ZXggYzMzYTJjZi4uNzM1NGI0ZiAxMDA2NDQKLS0tIGEvc3lzL2tlcm4vdWlwY19zeXNjYWxscy5j CisrKyBiL3N5cy9rZXJuL3VpcGNfc3lzY2FsbHMuYwpAQCAtMTAzOCw2ICsxMDM4LDgyIEBAIHN5 c19zZW5kbXNnKHRkLCB1YXApCiB9CiAKIGludAorc3lzX3NlbmRtbXNnKHRkLCB1YXApCisJc3Ry dWN0IHRocmVhZCAqdGQ7CisJc3RydWN0IHNlbmRtbXNnX2FyZ3MgLyogeworCQlpbnQJczsKKwkJ c3RydWN0IG1tc2doZHIJKm1zZ3ZlYzsKKwkJdW5zaWduZWQgaW50CXZsZW47CisJCWludAlmbGFn czsKKwl9ICovICp1YXA7Cit7CisJc3RydWN0IG1tc2doZHIgKnZlYywgKm1tcDsKKwlzdHJ1Y3Qg bXNnaGRyICptcCwgbXNnOworCXN0cnVjdCBpb3ZlYyAqaW92OworCXVuc2lnbmVkIGludCB2bGVu LCBsZW47CisJaW50IGksIHNlbnQgPSAwLCBlcnJvcjsKKwlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5V TEw7CisJc3RydWN0IGZpbGUgKmZwOworCWNhcF9yaWdodHNfdCByaWdodHM7CisKKwlpZiAoZmdl dCh0ZCwgdWFwLT5zLCBjYXBfcmlnaHRzX2luaXQoJnJpZ2h0cywgQ0FQX1NFTkQpLCAmZnApICE9 IDApCisJCXJldHVybiAoRUJBREYpOworCisJc28gPSBmcC0+Zl9kYXRhOworCisJdmxlbiA9IHVh cC0+dmxlbjsKKwlpZiAodmxlbiA+IFVJT19NQVhJT1YpCisJCXZsZW4gPSBVSU9fTUFYSU9WOwor CisJbGVuID0gdmxlbiAqIHNpemVvZigqdWFwLT5tc2d2ZWMpOworCXZlYyA9IG1hbGxvYyhsZW4s IE1fVEVNUCwgTV9XQUlUT0spOworCisJZXJyb3IgPSBjb3B5aW4odWFwLT5tc2d2ZWMsIHZlYywg bGVuKTsKKwlpZiAoZXJyb3IgIT0gMCkKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwg dmxlbjsgaSsrKSB7CisJCW1tcCA9ICZ2ZWNbaV07CisJCW1wID0gJm1tcC0+bXNnX2hkcjsKKwkJ bXNnID0gKm1wOworCisJCWVycm9yID0gY29weWluaW92KG1zZy5tc2dfaW92LCBtc2cubXNnX2lv dmxlbiwgJmlvdiwgRU1TR1NJWkUpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0Owor CisJCW1zZy5tc2dfaW92ID0gaW92OworI2lmZGVmIENPTVBBVF9PTERTT0NLCisJCW1zZy5tc2df ZmxhZ3MgPSAwOworI2VuZGlmCisJCWVycm9yID0gc2VuZGl0KHRkLCB1YXAtPnMsICZtc2csIHVh cC0+ZmxhZ3MpOworCQlmcmVlKGlvdiwgTV9JT1YpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdv dG8gb3V0OworCisJCWVycm9yID0gY29weW91dCgmdGQtPnRkX3JldHZhbFswXSwgJnVhcC0+bXNn dmVjW2ldLm1zZ19sZW4sCisJCSAgICBzaXplb2YodGQtPnRkX3JldHZhbFswXSkpOworCQlpZiAo ZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0OworCisJCXNlbnQrKzsKKwl9CisKKwl0ZC0+dGRfcmV0 dmFsWzBdID0gc2VudDsKKworb3V0OgorCWlmIChlcnJvciAhPSAwICYmIHNlbnQgIT0gMCAmJiBz ZW50ICE9IHZsZW4pIHsKKwkJc28tPnNvX2Vycm9yID0gZXJyb3I7CisJCWVycm9yID0gMDsKKwkJ dGQtPnRkX3JldHZhbFswXSA9IHNlbnQ7CisJfQorCisJZmRyb3AoZnAsIHRkKTsKKworCWZyZWUo dmVjLCBNX1RFTVApOworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKIGtlcm5fcmVjdml0KHRk LCBzLCBtcCwgZnJvbXNlZywgY29udHJvbHApCiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJaW50IHM7 CkBAIC0xMzYzLDYgKzE0MzksOTEgQEAgc3lzX3JlY3Ztc2codGQsIHVhcCkKIAlyZXR1cm4gKGVy cm9yKTsKIH0KIAoraW50CitzeXNfcmVjdm1tc2codGQsIHVhcCkKKwlzdHJ1Y3QgdGhyZWFkICp0 ZDsKKwlzdHJ1Y3QgcmVjdm1tc2dfYXJncyAvKiB7CisJCWludAlzOworCQlzdHJ1Y3QgbW1zZ2hk cgkqbXNndmVjOworCQl1bnNpZ25lZCBpbnQJdmxlbjsKKwkJaW50CWZsYWdzOworCX0gKi8gKnVh cDsKK3sKKwlzdHJ1Y3QgbW1zZ2hkciAqdmVjLCAqbW1wOworCXN0cnVjdCBtc2doZHIgKm1wLCBt c2c7CisJc3RydWN0IGlvdmVjICp1aW92LCAqaW92OworCXVuc2lnbmVkIGludCB2bGVuLCBsZW47 CisJaW50IGksIHJjdmQgPSAwLCBlcnJvcjsKKwlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CisJ c3RydWN0IGZpbGUgKmZwOworCWNhcF9yaWdodHNfdCByaWdodHM7CisKKwlpZiAoZmdldCh0ZCwg dWFwLT5zLCBjYXBfcmlnaHRzX2luaXQoJnJpZ2h0cywgQ0FQX1JFQ1YpLCAmZnApICE9IDApCisJ CXJldHVybiAoRUJBREYpOworCisJc28gPSBmcC0+Zl9kYXRhOworCisJdmxlbiA9IHVhcC0+dmxl bjsKKwlpZiAodmxlbiA+IFVJT19NQVhJT1YpCisJCXZsZW4gPSBVSU9fTUFYSU9WOworCisJbGVu ID0gdmxlbiAqIHNpemVvZigqdWFwLT5tc2d2ZWMpOworCXZlYyA9IG1hbGxvYyhsZW4sIE1fVEVN UCwgTV9XQUlUT0spOworCisJZXJyb3IgPSBjb3B5aW4odWFwLT5tc2d2ZWMsIHZlYywgbGVuKTsK KwlpZiAoZXJyb3IgIT0gMCkKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgdmxlbjsg aSsrKSB7CisJCW1tcCA9ICZ2ZWNbaV07CisJCW1wID0gJm1tcC0+bXNnX2hkcjsKKwkJbXNnID0g Km1wOworCisJCWVycm9yID0gY29weWluaW92KG1zZy5tc2dfaW92LCBtc2cubXNnX2lvdmxlbiwg JmlvdiwgRU1TR1NJWkUpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0OworCisJCW1z Zy5tc2dfZmxhZ3MgPSB1YXAtPmZsYWdzOworI2lmZGVmIENPTVBBVF9PTERTT0NLCisJCW1zZy5t c2dfZmxhZ3MgJj0gfk1TR19DT01QQVQ7CisjZW5kaWYKKwkJdWlvdiA9IG1zZy5tc2dfaW92Owor CQltc2cubXNnX2lvdiA9IGlvdjsKKworCQllcnJvciA9IHJlY3ZpdCh0ZCwgdWFwLT5zLCAmbXNn LCBOVUxMKTsKKwkJaWYgKGVycm9yID09IDApIHsKKwkJCW1zZy5tc2dfaW92ID0gdWlvdjsKKwkJ CWVycm9yID0gY29weW91dCgmbXNnLCAmdWFwLT5tc2d2ZWNbaV0ubXNnX2hkciwgc2l6ZW9mKG1z ZykpOworCQkJaWYgKGVycm9yICE9IDApIHsKKwkJCQlmcmVlKGlvdiwgTV9JT1YpOworCQkJCWdv dG8gb3V0OworCQkJfQorCQkJZXJyb3IgPSBjb3B5b3V0KCZ0ZC0+dGRfcmV0dmFsWzBdLCAmdWFw LT5tc2d2ZWNbaV0ubXNnX2xlbiwKKwkJCSAgICBzaXplb2YodGQtPnRkX3JldHZhbFswXSkpOwor CQkJaWYgKGVycm9yICE9IDApIHsKKwkJCQlmcmVlKGlvdiwgTV9JT1YpOworCQkJCWdvdG8gb3V0 OworCQkJfQorCQl9CisJCWZyZWUoaW92LCBNX0lPVik7CisJCXJjdmQrKzsKKwl9CisKKwl0ZC0+ dGRfcmV0dmFsWzBdID0gcmN2ZDsKKworb3V0OgorCWlmIChlcnJvciAhPSAwICYmIHJjdmQgIT0g MCAmJiByY3ZkICE9IHZsZW4pIHsKKwkJc28tPnNvX2Vycm9yID0gZXJyb3I7CisJCWVycm9yID0g MDsKKwkJdGQtPnRkX3JldHZhbFswXSA9IHJjdmQ7CisJfQorCisJZmRyb3AoZnAsIHRkKTsKKwor CWZyZWUodmVjLCBNX1RFTVApOworCXJldHVybiAoZXJyb3IpOworfQorCiAvKiBBUkdTVVNFRCAq LwogaW50CiBzeXNfc2h1dGRvd24odGQsIHVhcCkKZGlmZiAtLWdpdCBhL3N5cy9zeXMvc29ja2V0 LmggYi9zeXMvc3lzL3NvY2tldC5oCmluZGV4IDE4ZTJkZTEuLmQzNTJjZDIgMTAwNjQ0Ci0tLSBh L3N5cy9zeXMvc29ja2V0LmgKKysrIGIvc3lzL3N5cy9zb2NrZXQuaApAQCAtNDE0LDYgKzQxNCwx MSBAQCBzdHJ1Y3QgbXNnaGRyIHsKIAlpbnQJCSBtc2dfZmxhZ3M7CQkvKiBmbGFncyBvbiByZWNl aXZlZCBtZXNzYWdlICovCiB9OwogCitzdHJ1Y3QgbW1zZ2hkciB7CisJc3RydWN0IG1zZ2hkcglt c2dfaGRyOwkJLyogbWVzc2FnZSBoZWFkZXIgKi8KKwl1bnNpZ25lZCBpbnQJbXNnX2xlbjsJCS8q IG1lc3NhZ2UgbGVuZ3RoICAqLworfTsKKwogI2RlZmluZQlNU0dfT09CCQkweDEJCS8qIHByb2Nl c3Mgb3V0LW9mLWJhbmQgZGF0YSAqLwogI2RlZmluZQlNU0dfUEVFSwkweDIJCS8qIHBlZWsgYXQg aW5jb21pbmcgbWVzc2FnZSAqLwogI2RlZmluZQlNU0dfRE9OVFJPVVRFCTB4NAkJLyogc2VuZCB3 aXRob3V0IHVzaW5nIHJvdXRpbmcgdGFibGVzICovCkBAIC02MTUsMTAgKzYyMCwxMiBAQCBpbnQJ bGlzdGVuKGludCwgaW50KTsKIHNzaXplX3QJcmVjdihpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQp Owogc3NpemVfdAlyZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHN0cnVjdCBzb2Nr YWRkciAqIF9fcmVzdHJpY3QsIHNvY2tsZW5fdCAqIF9fcmVzdHJpY3QpOwogc3NpemVfdAlyZWN2 bXNnKGludCwgc3RydWN0IG1zZ2hkciAqLCBpbnQpOworc3NpemVfdAlyZWN2bW1zZyhpbnQsIHN0 cnVjdCBtbXNnaGRyICosIHVuc2lnbmVkIGludCwgaW50KTsKIHNzaXplX3QJc2VuZChpbnQsIGNv bnN0IHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogc3NpemVfdAlzZW5kdG8oaW50LCBjb25zdCB2b2lk ICosCiAJICAgIHNpemVfdCwgaW50LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc29ja2xlbl90 KTsKIHNzaXplX3QJc2VuZG1zZyhpbnQsIGNvbnN0IHN0cnVjdCBtc2doZHIgKiwgaW50KTsKK3Nz aXplX3QJc2VuZG1tc2coaW50LCBjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqLCB1bnNpZ25lZCBpbnQs IGludCk7CiAjaWYgX19CU0RfVklTSUJMRQogaW50CXNlbmRmaWxlKGludCwgaW50LCBvZmZfdCwg c2l6ZV90LCBzdHJ1Y3Qgc2ZfaGR0ciAqLCBvZmZfdCAqLCBpbnQpOwogaW50CXNldGZpYihpbnQp Owo= --089e01493c12bf93910528bbeec6--