Date: Wed, 27 Jan 2016 12:14:02 +0200 From: Boris Astardzhiev <boris.astardzhiev@gmail.com> To: Kevin Oberman <rkoberman@gmail.com> Cc: Bruce Evans <brde@optusnet.com.au>, Gary Jennejohn <gljennjohn@gmail.com>, Daniel Eischen <deischen@freebsd.org>, threads@freebsd.org, Luigi Rizzo <rizzo@iet.unipi.it>, "freebsd-net@freebsd.org" <net@freebsd.org> Subject: Re: Does FreeBSD have sendmmsg or recvmmsg system calls? Message-ID: <CAP=KkTwEGVhKxSmZUDsq4hJ9K_nHrO9di1maS7zVn2CNX8TqAg@mail.gmail.com> In-Reply-To: <CAN6yY1snu5YkXbTTHku4OAE6UyoQ5ibyM79KgHUN2dzRgvXSuA@mail.gmail.com> References: <20160118140811.GW3942@kib.kiev.ua> <CAP=KkTzLCOnJVqt5F3ZuuZUiwkmWcne2Ynpi6-daE2jTzSBtfw@mail.gmail.com> <20160120073154.GB3942@kib.kiev.ua> <CAP=KkTx3dAUuSBrJiwNAAe%2BhHSG4j5Qp7sAcgtOgmVi8a12k1A@mail.gmail.com> <20160121093509.GK3942@kib.kiev.ua> <20160121233040.E1864@besplex.bde.org> <CAP=KkTw=ML=oPo2OgFfmor_nsL3om6HvmTQjKNMrOiU_dmWc2g@mail.gmail.com> <20160124050634.GS3942@kib.kiev.ua> <20160124100747.551f8e3f@ernst.home> <CAP=KkTyHG9Rb%2BnrDC1TDxzjUQFca9NkVp8Suo1c_-C00RUtkuQ@mail.gmail.com> <20160126134005.GD3942@kib.kiev.ua> <CA%2BhQ2%2BivWYJMDUwzdZGW88-mWzSVfPzX212sOFVmxxN0hpZ%2BQQ@mail.gmail.com> <20160126182543.64050678@ernst.home> <Pine.GSO.4.64.1601261743450.12995@sea.ntplx.net> <20160127013145.36f2aaef@ernst.home> <20160127132558.W985@besplex.bde.org> <CAN6yY1snu5YkXbTTHku4OAE6UyoQ5ibyM79KgHUN2dzRgvXSuA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--089e01493c12b9cea1052a4e0f84 Content-Type: text/plain; charset=UTF-8 Hello, I've made a few changes in the patch as recommended here starting with the switch to ppoll(). I have a question since it's not quite clear to me as written in the manpage. Is it possible that ppoll() doesn't return an error and yet revents have set either POLLERR or POLLHUP or POLLNVAL? See patch and comments are again welcomed. On Wed, Jan 27, 2016 at 6:07 AM, Kevin Oberman <rkoberman@gmail.com> wrote: > Since this has become a debate on programming style, it seem appropriate > to mention that Edward Yourdan passed away last Tuesday. For those too > young to recognize the name, he was the developer of modern structured > programming. He did recognize the style rules are important, but not > iron-clad. > > Kevin Oberman, Part time kid herder and retired Network Engineer > E-mail: rkoberman@gmail.com > PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683 > > On Tue, Jan 26, 2016 at 7:04 PM, Bruce Evans <brde@optusnet.com.au> wrote: > >> On Wed, 27 Jan 2016, Gary Jennejohn wrote: >> >> On Tue, 26 Jan 2016 17:46:52 -0500 (EST) >>> Daniel Eischen <deischen@freebsd.org> wrote: >>> >>> On Tue, 26 Jan 2016, Gary Jennejohn wrote: >>>> >>>> On Tue, 26 Jan 2016 09:06:39 -0800 >>>>> Luigi Rizzo <rizzo@iet.unipi.it> wrote: >>>>> >>>>> On Tue, Jan 26, 2016 at 5:40 AM, Konstantin Belousov >>>>>> <kostikbel@gmail.com> wrote: >>>>>> >>>>>>> On Mon, Jan 25, 2016 at 11:22:13AM +0200, Boris Astardzhiev wrote: >>>>>>> >>>>>>>> +ssize_t >>>>>>>> +recvmmsg(int s, struct mmsghdr *__restrict msgvec, size_t vlen, >>>>>>>> int flags, >>>>>>>> + const struct timespec *__restrict timeout) >>>>>>>> +{ >>>>>>>> + size_t i, rcvd; >>>>>>>> + ssize_t ret; >>>>>>>> + >>>>>>>> + if (timeout != NULL) { >>>>>>>> + fd_set fds; >>>>>>>> + int res; >>>>>>>> >>>>>>> Please move all local definitions to the beginning of the function. >>>>>>> >>>>>> >>>>>> This style recommendation was from 30 years ago and is >>>>>> bad programming practice, as it tends to complicate analysis >>>>>> for the human and increase the chance of improper usage of >>>>>> variables. >>>>>> >>>>>> We should move away from this for new code. >>>>>> >>>>> >>>>> Really? I personally find having all variables grouped together >>>>> much easier to understand. Stumbling across declarations in the >>>>> middle of the code in a for-loop, for example, takes me by surprise. >>>>> >>>> >> +1 >> >> I used to program in a strict version of the "new" style 25-30 years >> ago, but learned better. In the strict version, every variable must >> have minimal scope, so squillions of inner blocks are needed to limit >> the scopes. Some deeply nested of course. This is a good obfuscation. >> It even breaks -Wshadow by letting you have unrelated variables named >> 'i' that don't shadow each other because their scope is limited. Such >> variables are good in separate functions but not in the same function. >> Understanding the code to see that the variables are actually unrelated >> requires counting more braces than usual. If you don't do this >> strictly then you get a random style with some variables declared at >> the top and some in inner blocks for mostly historical reasons. A >> strict style with all of the variables at the top is much easier to >> write and read. >> >> I also greatly dislike initializing variables in their declarations. >>>>> >>>>> Maybe I'm just old fashioned since I have been writing C-code for >>>>> more than 30 years. >>>>> >>>> >>>> +1 >>>> >>>> Probably should be discouraged, but allowed on a case-by-case >>>> basis. One could argue that if you need to declaration blocks >>>> in the middle of code, then that code is too complex and should >>>> be broken out into a separate function. >>>> >>> >>> Right. >>> >> >> Lots of inner blocks are good for both making simple code look complex >> and making it easier to write the complex code in the same function, >> at least if you use a tiny indentation so that you can have 40 levels >> of indentation without needing a 500-column terminal. >> >> And code like this >>> >>> int func(void) >>> { >>> int baz, zot; >>> [some more code] >>> if (zot < 5) >>> { >>> int baz = 3; >>> [more code] >>> } >>> [some more code] >>> } >>> >>> is even worse. The compiler (clang) seems to consider this to >>> merely be a reinitialization of baz, but a human might be confused. >>> >> >> No, that is a different baz, and is warned about by Wshadow. >> >> Something like for (int i = 0; i < 2; i++) is IMHO OK. >>> >> >> Except it is C++ style which is so forbidden that style(9) doesn't >> know that it needs a rule to forbid it. >> >> The worst is C++ style that doesn't limit the scope -- a bunch of >> variables at the top and then somewhere in the middle of the function >> another variable is needed and it is declared at top level of the >> function scope. I sometimes do this when in a hurry. The strict >> K&R-C90 style requires opening an inner block to do little more than >> hold the declaration and then (re)indenting and (re)formatting all >> the code in the inner block. The C++ style reduces writability and >> readability in a different way. It doesn't cause excessive indentation >> but it doesn't limit the scope much differently than putting all the >> declarations at the top. At least the reader can find the declarations >> easily when they are at the top. >> >> Bruce >> >> _______________________________________________ >> freebsd-net@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >> > > --089e01493c12b9cea1052a4e0f84 Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg-libconly6.diff" Content-Disposition: attachment; filename="sendrecvmmsg-libconly6.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijwo52uv0 ZGlmZiAtLWdpdCBhL2xpYi9saWJjL2dlbi9NYWtlZmlsZS5pbmMgYi9saWIvbGliYy9nZW4vTWFr ZWZpbGUuaW5jCmluZGV4IGI0NDg0NjEuLjdkZThjZTMgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2dl bi9NYWtlZmlsZS5pbmMKKysrIGIvbGliL2xpYmMvZ2VuL01ha2VmaWxlLmluYwpAQCAtOTksMTEg Kzk5LDEzIEBAIFNSQ1MrPQlfX2dldG9zcmVsZGF0ZS5jIFwKIAlyYWlzZS5jIFwKIAlyZWFkZGly LmMgXAogCXJlYWRwYXNzcGhyYXNlLmMgXAorCXJlY3ZtbXNnLmMgXAogCXJld2luZGRpci5jIFwK IAlzY2FuZGlyLmMgXAogCXNlZWQ0OC5jIFwKIAlzZWVrZGlyLmMgXAogCXNlbWN0bC5jIFwKKwlz ZW5kbW1zZy5jIFwKIAlzZXRkb21haW5uYW1lLmMgXAogCXNldGhvc3RuYW1lLmMgXAogCXNldGpt cGVyci5jIFwKQEAgLTQ1MSwxMCArNDUzLDEyIEBAIE1MSU5LUys9cmFuZDQ4LjMgX3JhbmQ0OC4z IFwKIAlyYW5kNDguMyBucmFuZDQ4LjMgXAogCXJhbmQ0OC4zIHNlZWQ0OC4zIFwKIAlyYW5kNDgu MyBzcmFuZDQ4LjMKK01MSU5LUys9cmVjdi4yIHJlY3ZtbXNnLjIKIE1MSU5LUys9c2NhbmRpci4z IGFscGhhc29ydC4zCiBNTElOS1MrPXNlbV9vcGVuLjMgc2VtX2Nsb3NlLjMgXAogCXNlbV9vcGVu LjMgc2VtX3VubGluay4zCiBNTElOS1MrPXNlbV93YWl0LjMgc2VtX3RyeXdhaXQuMworTUxJTktT Kz1zZW5kLjIgc2VuZG1tc2cuMgogTUxJTktTKz1zZXRqbXAuMyBfbG9uZ2ptcC4zIFwKIAlzZXRq bXAuMyBfc2V0am1wLjMgXAogCXNldGptcC4zIGxvbmdqbXAuMyBcCmRpZmYgLS1naXQgYS9saWIv bGliYy9nZW4vcmVjdm1tc2cuYyBiL2xpYi9saWJjL2dlbi9yZWN2bW1zZy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjAwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv bGliYy9nZW4vcmVjdm1tc2cuYwpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChj KSAyMDE2IEJvcmlzIEFzdGFyZHpoaWV2LCBTbWFydGNvbS1CdWxnYXJpYSBBRAorICogQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgYXMKKyAqICAgIHRoZSBmaXJzdCBsaW5lcyBv ZiB0aGlzIGZpbGUgdW5tb2RpZmllZCBvdGhlciB0aGFuIHRoZSBwb3NzaWJsZQorICogICAgYWRk aXRpb24gb2Ygb25lIG9yIG1vcmUgY29weXJpZ2h0IG5vdGljZXMuCisgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor ICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBgYEFTIElT JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIEJFCisg KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwK KyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV RElORyBORUdMSUdFTkNFCisgKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICogRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+ CitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNs dWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyNpbmNsdWRlIDxzeXMv c3RkZGVmLmg+CisjaW5jbHVkZSAibGliY19wcml2YXRlLmgiCisKKyNkZWZpbmUgUE9MTE1BU0sg KFBPTExJTiB8IFBPTExSRE5PUk0gfCBQT0xMUkRCQU5EIHwgUE9MTFBSSSkKKyNkZWZpbmUgRVBP TExNQVNLIChQT0xMRVJSIHwgUE9MTEhVUCB8IFBPTExOVkFMKQorCitzc2l6ZV90CityZWN2bW1z ZyhpbnQgcywgc3RydWN0IG1tc2doZHIgKl9fcmVzdHJpY3QgbXNndmVjLCBzaXplX3Qgdmxlbiwg aW50IGZsYWdzLAorICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCB0aW1lb3V0 KQoreworCXN0cnVjdCBwb2xsZmQgcGZkWzFdOworCXNpemVfdCBpLCByY3ZkOworCXNzaXplX3Qg cmV0OworCWludCByZXM7CisKKwlpZiAodGltZW91dCAhPSBOVUxMKSB7CisJCXBmZFswXS5mZCA9 IHM7CisJCXBmZFswXS5ldmVudHMgPSBQT0xMTUFTSzsKKwkJcGZkWzBdLnJldmVudHMgPSAwOwor CQlyZXMgPSBwcG9sbCgmcGZkWzBdLCAxLCB0aW1lb3V0LCBOVUxMKTsKKwkJaWYgKHJlcyA9PSAt MSB8fCByZXMgPT0gMCkKKwkJCXJldHVybiAocmVzKTsKKwkJaWYgKHBmZFswXS5yZXZlbnRzICYg RVBPTExNQVNLIHx8CisJCSAgICAocGZkWzBdLnJldmVudHMgJiBQT0xMTUFTSykgPT0gMCkKKwkJ CXJldHVybiAoLTEpOworCX0KKworCXJldCA9IF9fc3lzX3JlY3Ztc2cocywgJm1zZ3ZlY1swXS5t c2dfaGRyLCBmbGFncyk7CisJaWYgKHJldCA9PSAtMSkKKwkJcmV0dXJuIChyZXQpOworCisJLyog VHVybiBvbiBET05UV0FJVCBpZiBXQUlURk9ST05FIGlzIHNldC4gKi8KKwlpZiAoZmxhZ3MgJiBN U0dfV0FJVEZPUk9ORSkKKwkJZmxhZ3MgfD0gTVNHX0RPTlRXQUlUOworCisJcmN2ZCA9IDE7CisJ Zm9yIChpID0gcmN2ZDsgaSA8IHZsZW47IGkrKywgcmN2ZCsrKSB7CisJCXJldCA9IF9fc3lzX3Jl Y3Ztc2cocywgJm1zZ3ZlY1tpXS5tc2dfaGRyLCBmbGFncyk7CisJCWlmIChyZXQgPT0gLTEpIHsK KwkJCS8qIFdlIGhhdmUgcmVjZWl2ZWQgbWVzc2FnZXMuIExldCBjYWxsZXIga25vdy4gKi8KKwkJ CXJldHVybiAocmN2ZCk7CisJCX0KKworCQkvKiBTYXZlIHJlY2VpdmVkIGJ5dGVzICovCisJCW1z Z3ZlY1tpXS5tc2dfbGVuID0gcmV0OworCX0KKworCXJldHVybiAocmN2ZCk7Cit9CisKKyN1bmRl ZiBQT0xMTUFTSworI3VuZGVmIEVQT0xMTUFTSwpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvZ2VuL3Nl bmRtbXNnLmMgYi9saWIvbGliYy9nZW4vc2VuZG1tc2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4zZDkxZWUyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMvZ2VuL3Nl bmRtbXNnLmMKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBCb3Jp cyBBc3RhcmR6aGlldiwgU21hcnRjb20tQnVsZ2FyaWEgQUQKKyAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAorICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGFzCisgKiAgICB0aGUgZmlyc3QgbGluZXMgb2YgdGhpcyBmaWxl IHVubW9kaWZpZWQgb3RoZXIgdGhhbiB0aGUgcG9zc2libGUKKyAqICAgIGFkZGl0aW9uIG9mIG9u ZSBvciBtb3JlIGNvcHlyaWdodCBub3RpY2VzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj ZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgYGBBUyBJUycnIEFORCBBTlkK KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBCRQorICogTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgKiBXSEVUSEVS IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRQorICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwKKyAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorX19GQlNESUQo IiRGcmVlQlNEJCIpOworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Nv Y2tldC5oPgorI2luY2x1ZGUgImxpYmNfcHJpdmF0ZS5oIgorCitzc2l6ZV90CitzZW5kbW1zZyhp bnQgcywgc3RydWN0IG1tc2doZHIgKl9fcmVzdHJpY3QgbXNndmVjLCBzaXplX3QgdmxlbiwgaW50 IGZsYWdzKQoreworCXNpemVfdCBpLCBzZW50OworCXNzaXplX3QgcmV0OworCisJc2VudCA9IDA7 CisJZm9yIChpID0gMDsgaSA8IHZsZW47IGkrKywgc2VudCsrKSB7CisJCXJldCA9IF9fc3lzX3Nl bmRtc2cocywgJm1zZ3ZlY1tpXS5tc2dfaGRyLCBmbGFncyk7CisJCWlmIChyZXQgPT0gLTEpIHsK KwkJCWlmIChzZW50ICE9IDApIHsKKwkJCQkvKiBXZSBoYXZlIHNlbnQgbWVzc2FnZXMuIExldCBj YWxsZXIga25vdy4gKi8KKwkJCQlyZXR1cm4gKHNlbnQpOworCQkJfQorCQkJcmV0dXJuIChyZXQp OworCQl9CisKKwkJLyogU2F2ZSBzZW50IGJ5dGVzICovCisJCW1zZ3ZlY1tpXS5tc2dfbGVuID0g cmV0OworCX0KKworCXJldHVybiAoc2VudCk7Cit9CmRpZmYgLS1naXQgYS9saWIvbGliYy9pbmNs dWRlL25hbWVzcGFjZS5oIGIvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaAppbmRleCA3Mzlk N2IxLi5jOTU4MjllIDEwMDY0NAotLS0gYS9saWIvbGliYy9pbmNsdWRlL25hbWVzcGFjZS5oCisr KyBiL2xpYi9saWJjL2luY2x1ZGUvbmFtZXNwYWNlLmgKQEAgLTIwOCw2ICsyMDgsNyBAQAogI2Rl ZmluZQkJcmVhZHYJCQkJX3JlYWR2CiAjZGVmaW5lCQlyZWN2ZnJvbQkJCV9yZWN2ZnJvbQogI2Rl ZmluZQkJcmVjdm1zZwkJCQlfcmVjdm1zZworI2RlZmluZQkJcmVjdm1tc2cJCQlfcmVjdm1tc2cK ICNkZWZpbmUJCXNlbGVjdAkJCQlfc2VsZWN0CiAjZGVmaW5lCQlzZW1fY2xvc2UJCQlfc2VtX2Ns b3NlCiAjZGVmaW5lCQlzZW1fZGVzdHJveQkJCV9zZW1fZGVzdHJveQpAQCAtMjIwLDYgKzIyMSw3 IEBACiAjZGVmaW5lCQlzZW1fdW5saW5rCQkJX3NlbV91bmxpbmsKICNkZWZpbmUJCXNlbV93YWl0 CQkJX3NlbV93YWl0CiAjZGVmaW5lCQlzZW5kbXNnCQkJCV9zZW5kbXNnCisjZGVmaW5lCQlzZW5k bW1zZwkJCV9zZW5kbW1zZwogI2RlZmluZQkJc2VuZHRvCQkJCV9zZW5kdG8KICNkZWZpbmUJCXNl dHNvY2tvcHQJCQlfc2V0c29ja29wdAogLyojZGVmaW5lCQlzaWdhY3Rpb24JCQlfc2lnYWN0aW9u Ki8KZGlmZiAtLWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmggYi9saWIvbGli Yy9pbmNsdWRlL3VuLW5hbWVzcGFjZS5oCmluZGV4IGYzMWZhN2EuLjAyMzMzNDggMTAwNjQ0Ci0t LSBhL2xpYi9saWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVk ZS91bi1uYW1lc3BhY2UuaApAQCAtMTg5LDYgKzE4OSw3IEBACiAjdW5kZWYJCXJlYWR2CiAjdW5k ZWYJCXJlY3Zmcm9tCiAjdW5kZWYJCXJlY3Ztc2cKKyN1bmRlZgkJcmVjdm1tc2cKICN1bmRlZgkJ c2VsZWN0CiAjdW5kZWYJCXNlbV9jbG9zZQogI3VuZGVmCQlzZW1fZGVzdHJveQpAQCAtMjAxLDYg KzIwMiw3IEBACiAjdW5kZWYJCXNlbV91bmxpbmsKICN1bmRlZgkJc2VtX3dhaXQKICN1bmRlZgkJ c2VuZG1zZworI3VuZGVmCQlzZW5kbW1zZwogI3VuZGVmCQlzZW5kdG8KICN1bmRlZgkJc2V0c29j a29wdAogI3VuZGVmCQlzaWdhY3Rpb24KZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9TeW1ib2wu bWFwIGIvbGliL2xpYmMvc3lzL1N5bWJvbC5tYXAKaW5kZXggN2IzMjU3Yy4uZGMyZWQwZSAxMDA2 NDQKLS0tIGEvbGliL2xpYmMvc3lzL1N5bWJvbC5tYXAKKysrIGIvbGliL2xpYmMvc3lzL1N5bWJv bC5tYXAKQEAgLTM5OSw2ICszOTksOCBAQCBGQlNEXzEuNCB7CiAJdXRpbWVuc2F0OwogCW51bWFf c2V0YWZmaW5pdHk7CiAJbnVtYV9nZXRhZmZpbml0eTsKKwlzZW5kbW1zZzsKKwlyZWN2bW1zZzsK IH07CiAKIEZCU0Rwcml2YXRlXzEuMCB7CmRpZmYgLS1naXQgYS9saWIvbGliYy9zeXMvcmVjdi4y IGIvbGliL2xpYmMvc3lzL3JlY3YuMgppbmRleCAzMjZlN2ZmLi5jYjU0NjIyIDEwMDY0NAotLS0g YS9saWIvbGliYy9zeXMvcmVjdi4yCisrKyBiL2xpYi9saWJjL3N5cy9yZWN2LjIKQEAgLTM0LDgg KzM0LDkgQEAKIC5TaCBOQU1FCiAuTm0gcmVjdiAsCiAuTm0gcmVjdmZyb20gLAotLk5tIHJlY3Zt c2cKLS5OZCByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIGEgc29ja2V0CisuTm0gcmVjdm1zZyAsCisu Tm0gcmVjdm1tc2cKKy5OZCByZWNlaXZlIG1lc3NhZ2UocykgZnJvbSBhIHNvY2tldAogLlNoIExJ QlJBUlkKIC5MYiBsaWJjCiAuU2ggU1lOT1BTSVMKQEAgLTQ3LDExICs0OCwxNSBAQAogLkZuIHJl Y3Zmcm9tICJpbnQgcyIgInZvaWQgKmJ1ZiIgInNpemVfdCBsZW4iICJpbnQgZmxhZ3MiICJzdHJ1 Y3Qgc29ja2FkZHIgKiByZXN0cmljdCBmcm9tIiAic29ja2xlbl90ICogcmVzdHJpY3QgZnJvbWxl biIKIC5GdCBzc2l6ZV90CiAuRm4gcmVjdm1zZyAiaW50IHMiICJzdHJ1Y3QgbXNnaGRyICptc2ci ICJpbnQgZmxhZ3MiCisuRnQgc3NpemVfdAorLkZuIHJlY3ZtbXNnICJpbnQgcyIgInN0cnVjdCBt bXNnaGRyICogcmVzdHJpY3QgbXNndmVjIiAic2l6ZV90IHZsZW4iICJpbnQgZmxhZ3MiICJjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKiByZXN0cmljdCB0aW1lb3V0IgogLlNoIERFU0NSSVBUSU9OCiBU aGUKIC5GbiByZWN2ZnJvbQogYW5kCiAuRm4gcmVjdm1zZworYW5kCisuRm4gcmVjdm1tc2cKIHN5 c3RlbSBjYWxscwogYXJlIHVzZWQgdG8gcmVjZWl2ZSBtZXNzYWdlcyBmcm9tIGEgc29ja2V0LAog YW5kIG1heSBiZSB1c2VkIHRvIHJlY2VpdmUgZGF0YSBvbiBhIHNvY2tldCB3aGV0aGVyIG9yIG5v dApAQCAtODQsOCArODksMjkgQEAgbnVsbCBwb2ludGVyIHBhc3NlZCBhcyBpdHMKIC5GYSBmcm9t CiBhcmd1bWVudC4KIC5QcAotQWxsIHRocmVlIHJvdXRpbmVzIHJldHVybiB0aGUgbGVuZ3RoIG9m IHRoZSBtZXNzYWdlIG9uIHN1Y2Nlc3NmdWwKLWNvbXBsZXRpb24uCitUaGUKKy5GbiByZWN2bW1z ZworZnVuY3Rpb24gaXMgdXNlZCB0byByZWNlaXZlIG11bHRpcGxlCittZXNzYWdlcyBhdCBhIGNh bGwuCitUaGVpciBudW1iZXIgaXMgc3VwcGxpZWQgYnkKKy5GYSB2bGVuIC4KK1RoZSBtZXNzYWdl cyBhcmUgcGxhY2VkIGluIHRoZQorLkZhIG1zZ3ZlYwordmVjdG9yIGFmdGVyIHJlY2VwdGlvbi4K K1RoZSBzaXplIG9mIGVhY2ggcmVjZWl2ZWQgbWVzc2FnZSBpcyBwbGFjZWQgaW4gdGhlCisuRmEg bXNnX2xlbgorZmllbGQgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSB2ZWN0b3IuCitJZgorLkZhIHRp bWVvdXQKK2lzIE5VTEwgdGhlIGNhbGwgd2lsbCBub3JtYWxseSBibG9jay4KK090aGVyd2lzZSBp dCB3aWxsIHdhaXQgZm9yIGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuCitJ ZiB0aGUgdGltZW91dCBleHBpcmVzIGFuZCB0aGVyZSBpcyBubyBkYXRhIHJlY2VpdmVkIGEgdmFs dWUgb2YgMCBpcyByZXR1cm5lZC4KK3Bwb2xsKDIpIGlzIHVzZWQgZm9yIHRoZSBpbXBsZW1lbnRh dGlvbiBvZiB0aGUgdGltZW91dCBtZWNoYW5pc20uCisuUHAKK1RoZSBmaXJzdCB0aHJlZSByb3V0 aW5lcyByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBvbiBzdWNjZXNzZnVsCitjb21w bGV0aW9uIHdoZXJlYXMKKy5GbiByZWN2bW1zZworcmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlY2Vp dmVkIG1lc3NhZ2VzLgogSWYgYSBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGZpdCBpbiB0aGUgc3Vw cGxpZWQgYnVmZmVyLAogZXhjZXNzIGJ5dGVzIG1heSBiZSBkaXNjYXJkZWQgZGVwZW5kaW5nIG9u IHRoZSB0eXBlIG9mIHNvY2tldAogdGhlIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSAoc2VlCkBA IC0xMDAsNyArMTI2LDkgQEAgaW4gd2hpY2ggY2FzZSB0aGUgdmFsdWUKIC5WYSBlcnJubwogaXMg c2V0IHRvCiAuRXIgRUFHQUlOIC4KLVRoZSByZWNlaXZlIGNhbGxzIG5vcm1hbGx5IHJldHVybiBh bnkgZGF0YSBhdmFpbGFibGUsCitUaGUgcmVjZWl2ZSBjYWxscyBleGNlcHQKKy5GbiByZWN2bW1z Zworbm9ybWFsbHkgcmV0dXJuIGFueSBkYXRhIGF2YWlsYWJsZSwKIHVwIHRvIHRoZSByZXF1ZXN0 ZWQgYW1vdW50LAogcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgcmVjZWlwdCBvZiB0aGUgZnVsbCBh bW91bnQgcmVxdWVzdGVkOwogdGhpcyBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSB0aGUgc29ja2V0 LWxldmVsIG9wdGlvbnMKQEAgLTEyNyw2ICsxNTUsOSBAQCBvbmUgb3IgbW9yZSBvZiB0aGUgdmFs dWVzOgogLkl0IER2IE1TR19XQUlUQUxMIFRhIHdhaXQgZm9yIGZ1bGwgcmVxdWVzdCBvciBlcnJv cgogLkl0IER2IE1TR19ET05UV0FJVCBUYSBkbyBub3QgYmxvY2sKIC5JdCBEdiBNU0dfQ01TR19D TE9FWEVDIFRhIHNldCByZWNlaXZlZCBmZHMgY2xvc2Utb24tZXhlYworLkl0IER2IE1TR19XQUlU Rk9ST05FIFRhIGRvIG5vdCBibG9jayBhZnRlciByZWNlaXZpbmcgdGhlIGZpcnN0IG1lc3NhZ2UK KyhyZWxldmFudCBvbmx5IGZvcgorLkZuIHJlY3ZtbXNnICkKIC5FbAogLlBwCiBUaGUKQEAgLTE1 OCw2ICsxODksMTEgQEAgaXMgc2V0IHRvCiBUaGlzIGZsYWcgaXMgbm90IGF2YWlsYWJsZSBpbiBz dHJpY3QKIC5UbiBBTlNJCiBvciBDOTkgY29tcGlsYXRpb24gbW9kZS4KK1RoZQorLkR2IE1TR19X QUlURk9ST05FCitmbGFnIHNldHMgTVNHX0RPTlRXQUlUIGFmdGVyIHRoZSBmaXJzdCBtZXNzYWdl IGhhcyBiZWVuIHJlY2VpdmVkLgorVGhpcyBmbGFnIGlzIG9ubHkgcmVsZXZhbnQgZm9yCisuRm4g cmVjdm1tc2cgLgogLlBwCiBUaGUKIC5GbiByZWN2bXNnCkBAIC0yOTAsOSArMzI2LDMzIEBAIGNv bnRyb2wgZGF0YSB3ZXJlIGRpc2NhcmRlZCBkdWUgdG8gbGFjayBvZiBzcGFjZSBpbiB0aGUgYnVm ZmVyCiBmb3IgYW5jaWxsYXJ5IGRhdGEuCiAuRHYgTVNHX09PQgogaXMgcmV0dXJuZWQgdG8gaW5k aWNhdGUgdGhhdCBleHBlZGl0ZWQgb3Igb3V0LW9mLWJhbmQgZGF0YSB3ZXJlIHJlY2VpdmVkLgor LlBwCitUaGUKKy5GbiByZWN2bW1zZworc3lzdGVtIGNhbGwgdXNlcyB0aGUKKy5GYSBtbXNnaGRy CitzdHJ1Y3R1cmUuIEl0cyBmb3JtIGlzIGFzIGZvbGxvd3MsIGFzIGRlZmluZWQgaW4KKy5JbiBz eXMvc29ja2V0LmggOgorLkJkIC1saXRlcmFsCitzdHJ1Y3QgbW1zZ2hkciB7CisJc3RydWN0IG1z Z2hkcgkgbXNnX2hkcjsJLyogbWVzc2FnZSBoZWFkZXIgKi8KKwlzc2l6ZV90CQkgbXNnX2xlbjsJ LyogbWVzc2FnZSBsZW5ndGggKi8KK307CisuRWQKKy5QcAorRm9yCisuRmEgbXNnX2hkcgorc2Vl IGFib3ZlLiBPbiBkYXRhIHJlY2VwdGlvbiB0aGUKKy5GYSBtc2dfbGVuCitmaWVsZCBpcyB1cGRh dGVkIHRvIHRoZSBsZW5ndGggb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UuCitPbiBkYXRhIHRyYW5z bWlzc2lvbiBpdCBpcyB1cGRhdGVkIHRvIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBzZW50Lgog LlNoIFJFVFVSTiBWQUxVRVMKLVRoZXNlIGNhbGxzIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVz IHJlY2VpdmVkLCBvciAtMQotaWYgYW4gZXJyb3Igb2NjdXJyZWQuCitUaGVzZSBjYWxscyBleGNl cHQKKy5GbiByZWN2bW1zZworcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQuCisu Rm4gcmVjdm1tc2cKK3JldHVybnMgdGhlIG51bWJlciBvZiBtZXNzYWdlcyByZWNlaXZlZC4KK0Eg dmFsdWUgb2YgLTEgaXMgcmV0dXJuZWQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAuU2ggRVJST1JT CiBUaGUgY2FsbHMgZmFpbCBpZjoKIC5CbCAtdGFnIC13aWR0aCBFcgpkaWZmIC0tZ2l0IGEvbGli L2xpYmMvc3lzL3NlbmQuMiBiL2xpYi9saWJjL3N5cy9zZW5kLjIKaW5kZXggOGZhMmM2NC4uOTgx MGFjZSAxMDA2NDQKLS0tIGEvbGliL2xpYmMvc3lzL3NlbmQuMgorKysgYi9saWIvbGliYy9zeXMv c2VuZC4yCkBAIC0zNCw4ICszNCw5IEBACiAuU2ggTkFNRQogLk5tIHNlbmQgLAogLk5tIHNlbmR0 byAsCi0uTm0gc2VuZG1zZwotLk5kIHNlbmQgYSBtZXNzYWdlIGZyb20gYSBzb2NrZXQKKy5ObSBz ZW5kbXNnICwKKy5ObSBzZW5kbW1zZworLk5kIHNlbmQgbWVzc2FnZShzKSBmcm9tIGEgc29ja2V0 CiAuU2ggTElCUkFSWQogLkxiIGxpYmMKIC5TaCBTWU5PUFNJUwpAQCAtNDcsNiArNDgsOCBAQAog LkZuIHNlbmR0byAiaW50IHMiICJjb25zdCB2b2lkICptc2ciICJzaXplX3QgbGVuIiAiaW50IGZs YWdzIiAiY29uc3Qgc3RydWN0IHNvY2thZGRyICp0byIgInNvY2tsZW5fdCB0b2xlbiIKIC5GdCBz c2l6ZV90CiAuRm4gc2VuZG1zZyAiaW50IHMiICJjb25zdCBzdHJ1Y3QgbXNnaGRyICptc2ciICJp bnQgZmxhZ3MiCisuRnQgc3NpemVfdAorLkZuIHNlbmRtbXNnICJpbnQgcyIgInN0cnVjdCBtbXNn aGRyICogcmVzdHJpY3QgbXNndmVjIiAic2l6ZV90IHZsZW4iICJpbnQgZmxhZ3MiCiAuU2ggREVT Q1JJUFRJT04KIFRoZQogLkZuIHNlbmQKQEAgLTU1LDggKzU4LDExIEBAIGFuZAogLkZuIHNlbmR0 bwogYW5kCiAuRm4gc2VuZG1zZworYW5kCisuRm4gc2VuZG1tc2cKIHN5c3RlbSBjYWxscwotYXJl IHVzZWQgdG8gdHJhbnNtaXQgYSBtZXNzYWdlIHRvIGFub3RoZXIgc29ja2V0LgorYXJlIHVzZWQg dG8gdHJhbnNtaXQgb25lIG9yIG11bHRpcGxlIG1lc3NhZ2VzICh3aXRoIHRoZSBsYXR0ZXIgY2Fs bCkgdG8KK2Fub3RoZXIgc29ja2V0LgogVGhlCiAuRm4gc2VuZAogZnVuY3Rpb24KQEAgLTY2LDYg KzcyLDggQEAgc3RhdGUsIHdoaWxlCiAuRm4gc2VuZHRvCiBhbmQKIC5GbiBzZW5kbXNnCithbmQK Ky5GbiBzZW5kbW1zZwogbWF5IGJlIHVzZWQgYXQgYW55IHRpbWUuCiAuUHAKIFRoZSBhZGRyZXNz IG9mIHRoZSB0YXJnZXQgaXMgZ2l2ZW4gYnkKQEAgLTgxLDYgKzg5LDE4IEBAIHVuZGVybHlpbmcg cHJvdG9jb2wsIHRoZSBlcnJvcgogaXMgcmV0dXJuZWQsIGFuZAogdGhlIG1lc3NhZ2UgaXMgbm90 IHRyYW5zbWl0dGVkLgogLlBwCitUaGUKKy5GbiBzZW5kbW1zZworZnVuY3Rpb24gc2VuZHMgbXVs dGlwbGUgbWVzc2FnZXMgYXQgYSBjYWxsLgorVGhleSBhcmUgZ2l2ZW4gYnkgdGhlCisuRmEgbXNn dmVjCit2ZWN0b3IgYWxvbmcgd2l0aAorLkZhIHZsZW4KK3NwZWNpZnlpbmcgaXRzIHNpemUuCitU aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgc2VudCBwZXIgZWFjaCBtZXNzYWdlIGlzIHBsYWNlZCBp biB0aGUKKy5GYSBtc2dfbGVuCitmaWVsZCBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIHZlY3RvciBh ZnRlciB0cmFuc21pc3Npb24uCisuUHAKIE5vIGluZGljYXRpb24gb2YgZmFpbHVyZSB0byBkZWxp dmVyIGlzIGltcGxpY2l0IGluIGEKIC5GbiBzZW5kIC4KIExvY2FsbHkgZGV0ZWN0ZWQgZXJyb3Jz IGFyZSBpbmRpY2F0ZWQgYnkgYSByZXR1cm4gdmFsdWUgb2YgLTEuCkBAIC0xMzgsMTAgKzE1OCwx NiBAQCBTZWUKIC5YciByZWN2IDIKIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQogLkZhIG1zZ2hk cgorc3RydWN0dXJlIGFuZCB0aGUKKy5GYSBtbXNnaGRyCiBzdHJ1Y3R1cmUuCiAuU2ggUkVUVVJO IFZBTFVFUwotVGhlIGNhbGwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgc2VudCwg b3IgLTEKLWlmIGFuIGVycm9yIG9jY3VycmVkLgorQWxsIGNhbGxzIGV4Y2VwdAorLkZuIHNlbmRt bXNnCityZXR1cm4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHNlbnQuIFRoZQorLkZuIHNlbmRt bXNnCitjYWxsIHJldHVybnMgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50LgorSWYgYW4gZXJy b3Igb2NjdXJyZWQgYSB2YWx1ZSBvZiAtMSBpcyByZXR1cm5lZC4KIC5TaCBFUlJPUlMKIFRoZQog LkZuIHNlbmQKQEAgLTE0OSw2ICsxNzUsOCBAQCBmdW5jdGlvbiBhbmQKIC5GbiBzZW5kdG8KIGFu ZAogLkZuIHNlbmRtc2cKK2FuZAorLkZuIHNlbmRtbXNnCiBzeXN0ZW0gY2FsbHMKIGZhaWwgaWY6 CiAuQmwgLXRhZyAtd2lkdGggRXIKZGlmZiAtLWdpdCBhL3N5cy9zeXMvc29ja2V0LmggYi9zeXMv c3lzL3NvY2tldC5oCmluZGV4IDE4ZTJkZTEuLjVkYTI4NmUgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMv c29ja2V0LmgKKysrIGIvc3lzL3N5cy9zb2NrZXQuaApAQCAtNDMxLDYgKzQzMSw3IEBAIHN0cnVj dCBtc2doZHIgewogI2RlZmluZQlNU0dfTkJJTwkweDQwMDAJCS8qIEZJT05CSU8gbW9kZSwgdXNl ZCBieSBmaWZvZnMgKi8KICNkZWZpbmUJTVNHX0NPTVBBVCAgICAgIDB4ODAwMAkJLyogdXNlZCBp biBzZW5kaXQoKSAqLwogI2RlZmluZQlNU0dfQ01TR19DTE9FWEVDIDB4NDAwMDAJLyogbWFrZSBy ZWNlaXZlZCBmZHMgY2xvc2Utb24tZXhlYyAqLworI2RlZmluZSBNU0dfV0FJVEZPUk9ORQkweDgw MDAwCQkvKiBmb3IgcmVjdm1tc2coKSAqLwogI2VuZGlmCiAjaWZkZWYgX0tFUk5FTAogI2RlZmlu ZQlNU0dfU09DQUxMQkNLICAgMHgxMDAwMAkJLyogZm9yIHVzZSBieSBzb2NrZXQgY2FsbGJhY2tz IC0gc29yZWNlaXZlIChUQ1ApICovCkBAIC01OTUsNiArNTk2LDE2IEBAIHN0cnVjdCBzZl9oZHRy IHsKICNlbmRpZiAvKiBfS0VSTkVMICovCiAjZW5kaWYgLyogX19CU0RfVklTSUJMRSAqLwogCisj aWZkZWYgX19CU0RfVklTSUJMRQorLyoKKyAqIFNlbmQvcmVjdm1tc2cgc3BlY2lmaWMgc3RydWN0 dXJlKHMpCisgKi8KK3N0cnVjdCBtbXNnaGRyIHsKKwlzdHJ1Y3QgbXNnaGRyCW1zZ19oZHI7CQkv KiBtZXNzYWdlIGhlYWRlciAqLworCXNzaXplX3QJCW1zZ19sZW47CQkvKiBtZXNzYWdlIGxlbmd0 aCAqLworfTsKKyNlbmRpZiAvKiBfX0JTRF9WSVNJQkxFICovCisKICNpZm5kZWYJX0tFUk5FTAog CiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CkBAIC02MTUsMTIgKzYyNiwxOCBAQCBpbnQJbGlzdGVu KGludCwgaW50KTsKIHNzaXplX3QJcmVjdihpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogc3Np emVfdAlyZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAq IF9fcmVzdHJpY3QsIHNvY2tsZW5fdCAqIF9fcmVzdHJpY3QpOwogc3NpemVfdAlyZWN2bXNnKGlu dCwgc3RydWN0IG1zZ2hkciAqLCBpbnQpOworI2lmIF9fQlNEX1ZJU0lCTEUKK3N0cnVjdCB0aW1l c3BlYzsKK3NzaXplX3QJcmVjdm1tc2coaW50LCBzdHJ1Y3QgbW1zZ2hkciAqIF9fcmVzdHJpY3Qs IHNpemVfdCwgaW50LAorICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqIF9fcmVzdHJpY3QpOwor I2VuZGlmCiBzc2l6ZV90CXNlbmQoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgaW50KTsKIHNz aXplX3QJc2VuZHRvKGludCwgY29uc3Qgdm9pZCAqLAogCSAgICBzaXplX3QsIGludCwgY29uc3Qg c3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7CiBzc2l6ZV90CXNlbmRtc2coaW50LCBjb25z dCBzdHJ1Y3QgbXNnaGRyICosIGludCk7CiAjaWYgX19CU0RfVklTSUJMRQogaW50CXNlbmRmaWxl KGludCwgaW50LCBvZmZfdCwgc2l6ZV90LCBzdHJ1Y3Qgc2ZfaGR0ciAqLCBvZmZfdCAqLCBpbnQp Oworc3NpemVfdAlzZW5kbW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICogX19yZXN0cmljdCwgc2l6 ZV90LCBpbnQpOwogaW50CXNldGZpYihpbnQpOwogI2VuZGlmCiBpbnQJc2V0c29ja29wdChpbnQs IGludCwgaW50LCBjb25zdCB2b2lkICosIHNvY2tsZW5fdCk7Cg== --089e01493c12b9cea1052a4e0f84--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP=KkTwEGVhKxSmZUDsq4hJ9K_nHrO9di1maS7zVn2CNX8TqAg>