Date: Tue, 19 Jan 2016 13:58:27 +0200 From: Boris Astardzhiev <boris.astardzhiev@gmail.com> To: Konstantin Belousov <kostikbel@gmail.com> Cc: Jilles Tjoelker <jilles@stack.nl>, net@freebsd.org, threads@freebsd.org Subject: Re: Does FreeBSD have sendmmsg or recvmmsg system calls? Message-ID: <CAP=KkTzLCOnJVqt5F3ZuuZUiwkmWcne2Ynpi6-daE2jTzSBtfw@mail.gmail.com> In-Reply-To: <20160118140811.GW3942@kib.kiev.ua> References: <20160108204606.G2420@besplex.bde.org> <CAJ-Vmom26mukSv3JmsmNiAONvpc6f1bQ%2BujO25qefGHY=5przA@mail.gmail.com> <CAP=KkTwG0SVUmrBuWm33EC-tG4tMTdF5rLZQ_u6G1=-ujnfjkA@mail.gmail.com> <20160113080349.GC72455@kib.kiev.ua> <CAP=KkTxVaqZvigg78Dg%2Bv8kuTCaZyky8x15NHqD9uabuRKRkMw@mail.gmail.com> <20160116195657.GJ3942@kib.kiev.ua> <20160116202534.GK3942@kib.kiev.ua> <20160117211853.GA37847@stack.nl> <20160118044826.GS3942@kib.kiev.ua> <CAP=KkTy3J=k7hokGhohcGXv%2BWLnaxJmiAPxqmX9FHt7k0=Dp7Q@mail.gmail.com> <20160118140811.GW3942@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
--001a114b3ebc6c912e0529ae96fb Content-Type: text/plain; charset=UTF-8 Hello, I removed the pthread_testcancel() calls and cut the interposing stuff from my patch as suggested. I extended the send/recv(2) manpages regarding the mm calls. Comments and suggestions? Best regards, Boris Astardzhiev On Mon, Jan 18, 2016 at 4:08 PM, Konstantin Belousov <kostikbel@gmail.com> wrote: > On Mon, Jan 18, 2016 at 12:37:01PM +0200, Boris Astardzhiev wrote: > > Hello, > > > > Sorry for the delay of my reply. As far as I understand > pthread_testcancel() > > is not necessary in the recvmmsg syscall since cancellation is not quite > > common > > among apps. But if there is cancellation attempts as long as I use > > __sys_recvmsg() instead > > of the interposing approach on a cancel attempt recvmmsg() will return > > EINTR which will get > > me out? > Yes. > > The corner case is the cancellation attempt (SIGCANCEL == SIGTHR) coming > while the thread is executing code around the syscall. > > > > > Secondly, I guess it's better to use __sys_sendmmsg() similarly instead > of > > the > > insterposing table regarding sendmmsg(). > Sure, sendmmsg and recvmmsg are same. > > > > > Lastly, regarding the manpage - should I extend send/recv(2) for the new > > calls or > > create new manpage files? > IMO it is more logical to extend the existing page than write a new one. > --001a114b3ebc6c912e0529ae96fb Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg-libconly3.diff" Content-Disposition: attachment; filename="sendrecvmmsg-libconly3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijlch3460 ZGlmZiAtLWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvbmFtZXNwYWNlLmggYi9saWIvbGliYy9pbmNs dWRlL25hbWVzcGFjZS5oCmluZGV4IDczOWQ3YjEuLmM5NTgyOWUgMTAwNjQ0Ci0tLSBhL2xpYi9s aWJjL2luY2x1ZGUvbmFtZXNwYWNlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2Uu aApAQCAtMjA4LDYgKzIwOCw3IEBACiAjZGVmaW5lCQlyZWFkdgkJCQlfcmVhZHYKICNkZWZpbmUJ CXJlY3Zmcm9tCQkJX3JlY3Zmcm9tCiAjZGVmaW5lCQlyZWN2bXNnCQkJCV9yZWN2bXNnCisjZGVm aW5lCQlyZWN2bW1zZwkJCV9yZWN2bW1zZwogI2RlZmluZQkJc2VsZWN0CQkJCV9zZWxlY3QKICNk ZWZpbmUJCXNlbV9jbG9zZQkJCV9zZW1fY2xvc2UKICNkZWZpbmUJCXNlbV9kZXN0cm95CQkJX3Nl bV9kZXN0cm95CkBAIC0yMjAsNiArMjIxLDcgQEAKICNkZWZpbmUJCXNlbV91bmxpbmsJCQlfc2Vt X3VubGluawogI2RlZmluZQkJc2VtX3dhaXQJCQlfc2VtX3dhaXQKICNkZWZpbmUJCXNlbmRtc2cJ CQkJX3NlbmRtc2cKKyNkZWZpbmUJCXNlbmRtbXNnCQkJX3NlbmRtbXNnCiAjZGVmaW5lCQlzZW5k dG8JCQkJX3NlbmR0bwogI2RlZmluZQkJc2V0c29ja29wdAkJCV9zZXRzb2Nrb3B0CiAvKiNkZWZp bmUJCXNpZ2FjdGlvbgkJCV9zaWdhY3Rpb24qLwpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvaW5jbHVk ZS91bi1uYW1lc3BhY2UuaCBiL2xpYi9saWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmgKaW5kZXgg ZjMxZmE3YS4uMDIzMzM0OCAxMDA2NDQKLS0tIGEvbGliL2xpYmMvaW5jbHVkZS91bi1uYW1lc3Bh Y2UuaAorKysgYi9saWIvbGliYy9pbmNsdWRlL3VuLW5hbWVzcGFjZS5oCkBAIC0xODksNiArMTg5 LDcgQEAKICN1bmRlZgkJcmVhZHYKICN1bmRlZgkJcmVjdmZyb20KICN1bmRlZgkJcmVjdm1zZwor I3VuZGVmCQlyZWN2bW1zZwogI3VuZGVmCQlzZWxlY3QKICN1bmRlZgkJc2VtX2Nsb3NlCiAjdW5k ZWYJCXNlbV9kZXN0cm95CkBAIC0yMDEsNiArMjAyLDcgQEAKICN1bmRlZgkJc2VtX3VubGluawog I3VuZGVmCQlzZW1fd2FpdAogI3VuZGVmCQlzZW5kbXNnCisjdW5kZWYJCXNlbmRtbXNnCiAjdW5k ZWYJCXNlbmR0bwogI3VuZGVmCQlzZXRzb2Nrb3B0CiAjdW5kZWYJCXNpZ2FjdGlvbgpkaWZmIC0t Z2l0IGEvbGliL2xpYmMvc3lzL01ha2VmaWxlLmluYyBiL2xpYi9saWJjL3N5cy9NYWtlZmlsZS5p bmMKaW5kZXggZTRmZTFiMi4uNWY4YjY5OSAxMDA2NDQKLS0tIGEvbGliL2xpYmMvc3lzL01ha2Vm aWxlLmluYworKysgYi9saWIvbGliYy9zeXMvTWFrZWZpbGUuaW5jCkBAIC0yOCw2ICsyOCw4IEBA IFNSQ1MrPSBmdXRpbWVucy5jIHV0aW1lbnNhdC5jCiBOT0FTTSs9IGZ1dGltZW5zLm8gdXRpbWVu c2F0Lm8KIFBTRVVETys9IF9mdXRpbWVucy5vIF91dGltZW5zYXQubwogCitTUkNTKz0gcmVjdm1t c2cuYyBzZW5kbW1zZy5jCisKIElOVEVSUE9TRUQgPSBcCiAJYWNjZXB0IFwKIAlhY2NlcHQ0IFwK ZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9TeW1ib2wubWFwIGIvbGliL2xpYmMvc3lzL1N5bWJv bC5tYXAKaW5kZXggN2IzMjU3Yy4uNzI0ZTFiNCAxMDA2NDQKLS0tIGEvbGliL2xpYmMvc3lzL1N5 bWJvbC5tYXAKKysrIGIvbGliL2xpYmMvc3lzL1N5bWJvbC5tYXAKQEAgLTM5OSw2ICszOTksOCBA QCBGQlNEXzEuNCB7CiAJdXRpbWVuc2F0OwogCW51bWFfc2V0YWZmaW5pdHk7CiAJbnVtYV9nZXRh ZmZpbml0eTsKKwlzZW5kbW1zZzsKKwlyZWN2bW1zZzsKIH07CiAKIEZCU0Rwcml2YXRlXzEuMCB7 CkBAIC0xMDUxLDQgKzEwNTMsNiBAQCBGQlNEcHJpdmF0ZV8xLjAgewogCWdzc2Rfc3lzY2FsbDsK IAlfX2xpYmNfaW50ZXJwb3Npbmdfc2xvdDsKIAlfX2xpYmNfc2lnd2FpdDsKKwlfc2VuZG1tc2c7 CisJX3JlY3ZtbXNnOwogfTsKZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9yZWN2LjIgYi9saWIv bGliYy9zeXMvcmVjdi4yCmluZGV4IDMyNmU3ZmYuLjgxYTAyMDEgMTAwNjQ0Ci0tLSBhL2xpYi9s aWJjL3N5cy9yZWN2LjIKKysrIGIvbGliL2xpYmMvc3lzL3JlY3YuMgpAQCAtMzQsOCArMzQsOSBA QAogLlNoIE5BTUUKIC5ObSByZWN2ICwKIC5ObSByZWN2ZnJvbSAsCi0uTm0gcmVjdm1zZwotLk5k IHJlY2VpdmUgYSBtZXNzYWdlIGZyb20gYSBzb2NrZXQKKy5ObSByZWN2bXNnICwKKy5ObSByZWN2 bW1zZworLk5kIHJlY2VpdmUgbWVzc2FnZShzKSBmcm9tIGEgc29ja2V0CiAuU2ggTElCUkFSWQog LkxiIGxpYmMKIC5TaCBTWU5PUFNJUwpAQCAtNDcsMTEgKzQ4LDE1IEBACiAuRm4gcmVjdmZyb20g ImludCBzIiAidm9pZCAqYnVmIiAic2l6ZV90IGxlbiIgImludCBmbGFncyIgInN0cnVjdCBzb2Nr YWRkciAqIHJlc3RyaWN0IGZyb20iICJzb2NrbGVuX3QgKiByZXN0cmljdCBmcm9tbGVuIgogLkZ0 IHNzaXplX3QKIC5GbiByZWN2bXNnICJpbnQgcyIgInN0cnVjdCBtc2doZHIgKm1zZyIgImludCBm bGFncyIKKy5GdCBpbnQKKy5GbiByZWN2bW1zZyAiaW50IHMiICJzdHJ1Y3QgbW1zZ2hkciAqbXNn dmVjIiAiaW50IHZsZW4iICJpbnQgZmxhZ3MiCiAuU2ggREVTQ1JJUFRJT04KIFRoZQogLkZuIHJl Y3Zmcm9tCiBhbmQKIC5GbiByZWN2bXNnCithbmQKKy5GbiByZWN2bW1zZwogc3lzdGVtIGNhbGxz CiBhcmUgdXNlZCB0byByZWNlaXZlIG1lc3NhZ2VzIGZyb20gYSBzb2NrZXQsCiBhbmQgbWF5IGJl IHVzZWQgdG8gcmVjZWl2ZSBkYXRhIG9uIGEgc29ja2V0IHdoZXRoZXIgb3Igbm90CkBAIC04NCw4 ICs4OSwyNSBAQCBudWxsIHBvaW50ZXIgcGFzc2VkIGFzIGl0cwogLkZhIGZyb20KIGFyZ3VtZW50 LgogLlBwCi1BbGwgdGhyZWUgcm91dGluZXMgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIG1lc3Nh Z2Ugb24gc3VjY2Vzc2Z1bAotY29tcGxldGlvbi4KK1RoZQorLkZuIHJlY3ZtbXNnCitmdW5jdGlv biBpcyB1c2VkIHRvIHJlY2VpdmUgbXVsdGlwbGUKK21lc3NhZ2VzIGF0IGEgY2FsbC4KK1RoZWly IG51bWJlcgoraXMgc3VwcGxpZWQgYnkKKy5GYSB2bGVuCisobGltaXRlZCB0byAxMDI0KS4KK1Ro ZSBtZXNzYWdlcyBhcmUgcGxhY2VkIGluIHRoZQorLkZhIG1zZ3ZlYwordmVjdG9yIGFmdGVyIHJl Y2VwdGlvbi4KK1RoZSBzaXplIG9mIGVhY2ggcmVjZWl2ZWQgbWVzc2FnZSBpcyBwbGFjZWQgaW4g dGhlCisuRmEgbXNnX2xlbgorZmllbGQgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSB2ZWN0b3IuCisu UHAKK1RoZSBmaXJzdCB0aHJlZSByb3V0aW5lcyByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWVz c2FnZSBvbiBzdWNjZXNzZnVsCitjb21wbGV0aW9uIHdoZXJlYXMKKy5GbiByZWN2bW1zZworcmV0 dXJucyB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIG1lc3NhZ2VzLgogSWYgYSBtZXNzYWdlIGlzIHRv byBsb25nIHRvIGZpdCBpbiB0aGUgc3VwcGxpZWQgYnVmZmVyLAogZXhjZXNzIGJ5dGVzIG1heSBi ZSBkaXNjYXJkZWQgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHNvY2tldAogdGhlIG1lc3NhZ2Ug aXMgcmVjZWl2ZWQgZnJvbSAoc2VlCkBAIC0xMDAsNyArMTIyLDkgQEAgaW4gd2hpY2ggY2FzZSB0 aGUgdmFsdWUKIC5WYSBlcnJubwogaXMgc2V0IHRvCiAuRXIgRUFHQUlOIC4KLVRoZSByZWNlaXZl IGNhbGxzIG5vcm1hbGx5IHJldHVybiBhbnkgZGF0YSBhdmFpbGFibGUsCitUaGUgcmVjZWl2ZSBj YWxscyBleGNlcHQKKy5GbiByZWN2bW1zZworbm9ybWFsbHkgcmV0dXJuIGFueSBkYXRhIGF2YWls YWJsZSwKIHVwIHRvIHRoZSByZXF1ZXN0ZWQgYW1vdW50LAogcmF0aGVyIHRoYW4gd2FpdGluZyBm b3IgcmVjZWlwdCBvZiB0aGUgZnVsbCBhbW91bnQgcmVxdWVzdGVkOwogdGhpcyBiZWhhdmlvciBp cyBhZmZlY3RlZCBieSB0aGUgc29ja2V0LWxldmVsIG9wdGlvbnMKQEAgLTI5MCw5ICszMTQsMzQg QEAgY29udHJvbCBkYXRhIHdlcmUgZGlzY2FyZGVkIGR1ZSB0byBsYWNrIG9mIHNwYWNlIGluIHRo ZSBidWZmZXIKIGZvciBhbmNpbGxhcnkgZGF0YS4KIC5EdiBNU0dfT09CCiBpcyByZXR1cm5lZCB0 byBpbmRpY2F0ZSB0aGF0IGV4cGVkaXRlZCBvciBvdXQtb2YtYmFuZCBkYXRhIHdlcmUgcmVjZWl2 ZWQuCisuUHAKK1RoZQorLkZuIHJlY3ZtbXNnCitzeXN0ZW0gY2FsbCB1c2VzIHRoZQorLkZhIG1t c2doZHIKK3N0cnVjdHVyZS4gSXRzIGZvcm0gaXMgYXMgZm9sbG93cywgYXMgZGVmaW5lZCBpbgor LkluIHN5cy9zb2NrZXQuaCA6CisuQmQgLWxpdGVyYWwKK3N0cnVjdCBtbXNnaGRyIHsKKwlzdHJ1 Y3QgbXNnaGRyCSBtc2dfaGRyOwkvKiBtZXNzYWdlIGhlYWRlciAqLworCXVuc2lnbmVkIGludAkg bXNnX2xlbjsJLyogbWVzc2FnZSBsZW5ndGggKi8KK307CisuRWQKKy5QcAorRm9yCisuRmEgbXNn X2hkcgorc2VlIGFib3ZlLiBPbiBkYXRhIHJlY2VwdGlvbiB0aGUKKy5GYSBtc2dfbGVuCitmaWVs ZCBpcyB1cGRhdGVkIHRvIHRoZSBsZW5ndGggb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UuIE9uCitk YXRhIHRyYW5zbWlzc2lvbiBpdCBpcyB1cGRhdGVkIHRvIHRoZSBudW1iZXIgb2YKK2NoYXJhY3Rl cnMgc2VudC4KIC5TaCBSRVRVUk4gVkFMVUVTCi1UaGVzZSBjYWxscyByZXR1cm4gdGhlIG51bWJl ciBvZiBieXRlcyByZWNlaXZlZCwgb3IgLTEKLWlmIGFuIGVycm9yIG9jY3VycmVkLgorVGhlc2Ug Y2FsbHMgZXhjZXB0CisuRm4gcmVjdm1tc2cKK3JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJl Y2VpdmVkLgorLkZuIHJlY3ZtbXNnCityZXR1cm5zIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgcmVj ZWl2ZWQuCitBIHZhbHVlIG9mIC0xIGlzIHJldHVybmVkIGlmIGFuIGVycm9yIG9jY3VycmVkLgog LlNoIEVSUk9SUwogVGhlIGNhbGxzIGZhaWwgaWY6CiAuQmwgLXRhZyAtd2lkdGggRXIKZGlmZiAt LWdpdCBhL2xpYi9saWJjL3N5cy9yZWN2bW1zZy5jIGIvbGliL2xpYmMvc3lzL3JlY3ZtbXNnLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI1MTU4YQotLS0gL2Rldi9udWxs CisrKyBiL2xpYi9saWJjL3N5cy9yZWN2bW1zZy5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMTYgQm9yaXMgQXN0YXJkemhpZXYsIFNtYXJ0Y29tLUJ1bGdhcmlhIEFE CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZShzKSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBhcworICogICAgdGhlIGZp cnN0IGxpbmVzIG9mIHRoaXMgZmlsZSB1bm1vZGlmaWVkIG90aGVyIHRoYW4gdGhlIHBvc3NpYmxl CisgKiAgICBhZGRpdGlvbiBvZiBvbmUgb3IgbW9yZSBjb3B5cmlnaHQgbm90aWNlcy4KKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4K KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE RVIoUykgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJV U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsCisgKiBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxz eXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNs dWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgImxpYmNf cHJpdmF0ZS5oIgorCisjZGVmaW5lIFZMRU5fTUFYIDEwMjQKKworaW50CityZWN2bW1zZyhpbnQg cywgc3RydWN0IG1tc2doZHIgKm1zZ3ZlYywgdW5zaWduZWQgaW50IHZsZW4sIGludCBmbGFncykK K3sKKwlpbnQgaSwgcmV0LCByY3ZkOworCisJaWYgKHZsZW4gPiBWTEVOX01BWCkKKwkJdmxlbiA9 IFZMRU5fTUFYOworCisJcmN2ZCA9IDA7CisJZm9yIChpID0gMDsgaSA8IHZsZW47IGkrKykgewor CQllcnJubyA9IDA7CisJCXJldCA9IF9fc3lzX3JlY3Ztc2cocywgJm1zZ3ZlY1tpXS5tc2dfaGRy LCBmbGFncyk7CisJCWlmIChyZXQgPCAwIHx8IGVycm5vICE9IDApIHsKKwkJCWlmIChyY3ZkICE9 IDApIHsKKwkJCQkvKiBXZSd2ZSByZWNlaXZlZCBtZXNzYWdlcy4gTGV0IGNhbGxlciBrbm93LiAq LworCQkJCWVycm5vID0gMDsKKwkJCQlyZXR1cm4gKHJjdmQpOworCQkJfQorCQkJcmV0dXJuICgt MSk7CisJCX0KKworCQkvKiBTYXZlIHJlY2VpdmVkIGJ5dGVzICovCisJCW1zZ3ZlY1tpXS5tc2df bGVuID0gcmV0OworCisJCXJjdmQrKzsKKwl9CisKKwlyZXR1cm4gKHJjdmQpOworfQorCisjdW5k ZWYgVkxFTl9NQVgKZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9zZW5kLjIgYi9saWIvbGliYy9z eXMvc2VuZC4yCmluZGV4IDhmYTJjNjQuLjZjMTRhNjAgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL3N5 cy9zZW5kLjIKKysrIGIvbGliL2xpYmMvc3lzL3NlbmQuMgpAQCAtMzQsOCArMzQsOSBAQAogLlNo IE5BTUUKIC5ObSBzZW5kICwKIC5ObSBzZW5kdG8gLAotLk5tIHNlbmRtc2cKLS5OZCBzZW5kIGEg bWVzc2FnZSBmcm9tIGEgc29ja2V0CisuTm0gc2VuZG1zZyAsCisuTm0gc2VuZG1tc2cKKy5OZCBz ZW5kIG1lc3NhZ2UocykgZnJvbSBhIHNvY2tldAogLlNoIExJQlJBUlkKIC5MYiBsaWJjCiAuU2gg U1lOT1BTSVMKQEAgLTQ3LDYgKzQ4LDggQEAKIC5GbiBzZW5kdG8gImludCBzIiAiY29uc3Qgdm9p ZCAqbXNnIiAic2l6ZV90IGxlbiIgImludCBmbGFncyIgImNvbnN0IHN0cnVjdCBzb2NrYWRkciAq dG8iICJzb2NrbGVuX3QgdG9sZW4iCiAuRnQgc3NpemVfdAogLkZuIHNlbmRtc2cgImludCBzIiAi Y29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnIiAiaW50IGZsYWdzIgorLkZ0IGludAorLkZuIHNlbmRt bXNnICJpbnQgcyIgInN0cnVjdCBtbXNnaGRyICptc2d2ZWMiICJpbnQgdmxlbiIgImludCBmbGFn cyIKIC5TaCBERVNDUklQVElPTgogVGhlCiAuRm4gc2VuZApAQCAtNTUsOCArNTgsMTAgQEAgYW5k CiAuRm4gc2VuZHRvCiBhbmQKIC5GbiBzZW5kbXNnCithbmQKKy5GbiBzZW5kbW1zZwogc3lzdGVt IGNhbGxzCi1hcmUgdXNlZCB0byB0cmFuc21pdCBhIG1lc3NhZ2UgdG8gYW5vdGhlciBzb2NrZXQu CithcmUgdXNlZCB0byB0cmFuc21pdCBvbmUgb3IgbXVsdGlwbGUgbWVzc2FnZXMgKHdpdGggdGhl IGxhdHRlciBjYWxsKSB0byBhbm90aGVyIHNvY2tldC4KIFRoZQogLkZuIHNlbmQKIGZ1bmN0aW9u CkBAIC02Niw2ICs3MSw4IEBAIHN0YXRlLCB3aGlsZQogLkZuIHNlbmR0bwogYW5kCiAuRm4gc2Vu ZG1zZworYW5kCisuRm4gc2VuZG1tc2cKIG1heSBiZSB1c2VkIGF0IGFueSB0aW1lLgogLlBwCiBU aGUgYWRkcmVzcyBvZiB0aGUgdGFyZ2V0IGlzIGdpdmVuIGJ5CkBAIC04MSw2ICs4OCwxOCBAQCB1 bmRlcmx5aW5nIHByb3RvY29sLCB0aGUgZXJyb3IKIGlzIHJldHVybmVkLCBhbmQKIHRoZSBtZXNz YWdlIGlzIG5vdCB0cmFuc21pdHRlZC4KIC5QcAorVGhlCisuRm4gc2VuZG1tc2cKK2Z1bmN0aW9u IHNlbmRzIG11bHRpcGxlIG1lc3NhZ2VzIGF0IGEgY2FsbC4KK1RoZXkgYXJlIGdpdmVuIGJ5IHRo ZQorLkZhIG1zZ3ZlYwordmVjdG9yIGFsb25nIHdpdGgKKy5GYSB2bGVuCitzcGVjaWZ5aW5nIGl0 cyBzaXplIChsaW1pdGVkIHRvIDEwMjQpLiBUaGUgbnVtYmVyIG9mCitjaGFyYWN0ZXJzIHNlbnQg cGVyIGVhY2ggbWVzc2FnZSBpcyBwbGFjZWQgaW4gdGhlCisuRmEgbXNnX2xlbgorZmllbGQgb2Yg ZWFjaCBlbGVtZW50IG9mIHRoZSB2ZWN0b3IgYWZ0ZXIgdHJhbnNtaXNzaW9uLgorLlBwCiBObyBp bmRpY2F0aW9uIG9mIGZhaWx1cmUgdG8gZGVsaXZlciBpcyBpbXBsaWNpdCBpbiBhCiAuRm4gc2Vu ZCAuCiBMb2NhbGx5IGRldGVjdGVkIGVycm9ycyBhcmUgaW5kaWNhdGVkIGJ5IGEgcmV0dXJuIHZh bHVlIG9mIC0xLgpAQCAtMTM4LDEwICsxNTcsMTYgQEAgU2VlCiAuWHIgcmVjdiAyCiBmb3IgYSBk ZXNjcmlwdGlvbiBvZiB0aGUKIC5GYSBtc2doZHIKK3N0cnVjdHVyZSBhbmQgdGhlCisuRmEgbW1z Z2hkcgogc3RydWN0dXJlLgogLlNoIFJFVFVSTiBWQUxVRVMKLVRoZSBjYWxsIHJldHVybnMgdGhl IG51bWJlciBvZiBjaGFyYWN0ZXJzIHNlbnQsIG9yIC0xCi1pZiBhbiBlcnJvciBvY2N1cnJlZC4K K0FsbCBjYWxscyBleGNlcHQKKy5GbiBzZW5kbW1zZworcmV0dXJuIHRoZSBudW1iZXIgb2YgY2hh cmFjdGVycyBzZW50LiBUaGUKKy5GbiBzZW5kbW1zZworY2FsbCByZXR1cm5zIHRoZSBudW1iZXIg b2YgbWVzc2FnZXMgc2VudC4KK0lmIGFuIGVycm9yIG9jY3VycmVkIGEgdmFsdWUgb2YgLTEgaXMg cmV0dXJuZWQuCiAuU2ggRVJST1JTCiBUaGUKIC5GbiBzZW5kCkBAIC0xNDksNiArMTc0LDggQEAg ZnVuY3Rpb24gYW5kCiAuRm4gc2VuZHRvCiBhbmQKIC5GbiBzZW5kbXNnCithbmQKKy5GbiBzZW5k bW1zZwogc3lzdGVtIGNhbGxzCiBmYWlsIGlmOgogLkJsIC10YWcgLXdpZHRoIEVyCmRpZmYgLS1n aXQgYS9saWIvbGliYy9zeXMvc2VuZG1tc2cuYyBiL2xpYi9saWJjL3N5cy9zZW5kbW1zZy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiOTBiOTAKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvbGliYy9zeXMvc2VuZG1tc2cuYwpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w eXJpZ2h0IChjKSAyMDE2IEJvcmlzIEFzdGFyZHpoaWV2LCBTbWFydGNvbS1CdWxnYXJpYSBBRAor ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgYXMKKyAqICAgIHRoZSBmaXJz dCBsaW5lcyBvZiB0aGlzIGZpbGUgdW5tb2RpZmllZCBvdGhlciB0aGFuIHRoZSBwb3NzaWJsZQor ICogICAgYWRkaXRpb24gb2Ygb25lIG9yIG1vcmUgY29weXJpZ2h0IG5vdGljZXMuCisgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAorICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisg KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUihT KSBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJ TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFCisgKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICogRVZFTiBJRiBBRFZJU0VE IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lz L2NkZWZzLmg+CitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxlcnJuby5oPgor I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaW5jbHVk ZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlICJsaWJjX3By aXZhdGUuaCIKKworI2RlZmluZSBWTEVOX01BWCAxMDI0CisKK2ludAorc2VuZG1tc2coaW50IHMs IHN0cnVjdCBtbXNnaGRyICptc2d2ZWMsIHVuc2lnbmVkIGludCB2bGVuLCBpbnQgZmxhZ3MpCit7 CisJaW50IGksIHJldCwgc2VudDsKKworCWlmICh2bGVuID4gVkxFTl9NQVgpCisJCXZsZW4gPSBW TEVOX01BWDsKKworCXNlbnQgPSAwOworCWZvciAoaSA9IDA7IGkgPCB2bGVuOyBpKyspIHsKKwkJ ZXJybm8gPSAwOworCQlyZXQgPSBfX3N5c19zZW5kbXNnKHMsICZtc2d2ZWNbaV0ubXNnX2hkciwg ZmxhZ3MpOworCQlpZiAocmV0IDwgMCB8fCBlcnJubyAhPSAwKSB7CisJCQlpZiAoc2VudCAhPSAw KSB7CisJCQkJLyogV2UgaGF2ZSBzZW50IG1lc3NhZ2VzLiBMZXQgY2FsbGVyIGtub3cuICovCisJ CQkJZXJybm8gPSAwOworCQkJCXJldHVybiAoc2VudCk7CisJCQl9CisJCQlyZXR1cm4gKC0xKTsK KwkJfQorCisJCS8qIFNhdmUgc2VudCBieXRlcyAqLworCQltc2d2ZWNbaV0ubXNnX2xlbiA9IHJl dDsKKworCQlzZW50Kys7CisJfQorCisJcmV0dXJuIChzZW50KTsKK30KKworI3VuZGVmIFZMRU5f TUFYCmRpZmYgLS1naXQgYS9zeXMvc3lzL3NvY2tldC5oIGIvc3lzL3N5cy9zb2NrZXQuaAppbmRl eCAxOGUyZGUxLi5mNzBkY2VkIDEwMDY0NAotLS0gYS9zeXMvc3lzL3NvY2tldC5oCisrKyBiL3N5 cy9zeXMvc29ja2V0LmgKQEAgLTU5NSw2ICs1OTUsMTggQEAgc3RydWN0IHNmX2hkdHIgewogI2Vu ZGlmIC8qIF9LRVJORUwgKi8KICNlbmRpZiAvKiBfX0JTRF9WSVNJQkxFICovCiAKKyNpZm5kZWYg X0tFUk5FTAorI2lmZGVmIF9fQlNEX1ZJU0lCTEUKKy8qCisgKiBTZW5kL3JlY3ZtbXNnIHNwZWNp ZmljIHN0cnVjdHVyZShzKQorICovCitzdHJ1Y3QgbW1zZ2hkciB7CisJc3RydWN0IG1zZ2hkcglt c2dfaGRyOwkJLyogbWVzc2FnZSBoZWFkZXIgKi8KKwl1bnNpZ25lZCBpbnQJbXNnX2xlbjsJCS8q IG1lc3NhZ2UgbGVuZ3RoICovCit9OworI2VuZGlmIC8qIF9fQlNEX1ZJU0lCTEUgKi8KKyNlbmRp ZiAvKiAhX0tFUk5FTCAqLworCiAjaWZuZGVmCV9LRVJORUwKIAogI2luY2x1ZGUgPHN5cy9jZGVm cy5oPgpAQCAtNjE1LDExICs2MjcsMTcgQEAgaW50CWxpc3RlbihpbnQsIGludCk7CiBzc2l6ZV90 CXJlY3YoaW50LCB2b2lkICosIHNpemVfdCwgaW50KTsKIHNzaXplX3QJcmVjdmZyb20oaW50LCB2 b2lkICosIHNpemVfdCwgaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX3Jlc3RyaWN0LCBzb2NrbGVu X3QgKiBfX3Jlc3RyaWN0KTsKIHNzaXplX3QJcmVjdm1zZyhpbnQsIHN0cnVjdCBtc2doZHIgKiwg aW50KTsKKyNpZiBfX0JTRF9WSVNJQkxFCitpbnQJcmVjdm1tc2coaW50LCBzdHJ1Y3QgbW1zZ2hk ciAqLCB1bnNpZ25lZCBpbnQsIGludCk7CisjZW5kaWYKIHNzaXplX3QJc2VuZChpbnQsIGNvbnN0 IHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogc3NpemVfdAlzZW5kdG8oaW50LCBjb25zdCB2b2lkICos CiAJICAgIHNpemVfdCwgaW50LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc29ja2xlbl90KTsK IHNzaXplX3QJc2VuZG1zZyhpbnQsIGNvbnN0IHN0cnVjdCBtc2doZHIgKiwgaW50KTsKICNpZiBf X0JTRF9WSVNJQkxFCitpbnQJc2VuZG1tc2coaW50LCBzdHJ1Y3QgbW1zZ2hkciAqLCB1bnNpZ25l ZCBpbnQsIGludCk7CisjZW5kaWYKKyNpZiBfX0JTRF9WSVNJQkxFCiBpbnQJc2VuZGZpbGUoaW50 LCBpbnQsIG9mZl90LCBzaXplX3QsIHN0cnVjdCBzZl9oZHRyICosIG9mZl90ICosIGludCk7CiBp bnQJc2V0ZmliKGludCk7CiAjZW5kaWYK --001a114b3ebc6c912e0529ae96fb--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP=KkTzLCOnJVqt5F3ZuuZUiwkmWcne2Ynpi6-daE2jTzSBtfw>