Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jan 2016 13:53:14 +0200
From:      Boris Astardzhiev <boris.astardzhiev@gmail.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        Adrian Chadd <adrian.chadd@gmail.com>, Mark Delany <c2h@romeo.emu.st>,  FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: Does FreeBSD have sendmmsg or recvmmsg system calls?
Message-ID:  <CAP=KkTxVaqZvigg78Dg%2Bv8kuTCaZyky8x15NHqD9uabuRKRkMw@mail.gmail.com>
In-Reply-To: <20160113080349.GC72455@kib.kiev.ua>
References:  <CAP=KkTzFUDsZwDDLD3n97xJW0qLVZMPduZGSX%2BeXC3UuLpVjMg@mail.gmail.com> <20160107161213.GZ3625@kib.kiev.ua> <CA%2BhQ2%2Bg6OB3MmZrW5hzNSnkcqKaKf1XGDraHfWXtSrowxKuL5g@mail.gmail.com> <20160107192840.GF3625@kib.kiev.ua> <20160108172323.W1815@besplex.bde.org> <20160108075815.3243.qmail@f5-external.bushwire.net> <CAJ-VmonYPhcN-gikuYQU_k5GaTAqTijoxR_0ORV4BZqsHMRJSg@mail.gmail.com> <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>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a113d7c3e5fb30605295e0c90
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hello,

Thanks for the insightful comments.

kb>Please find below.
kb>
kb> This implementation has some strangeness, like NOASM and PSEUDO in
makefile,
kb> which I cannot find a purpose for.
I removed it but initially I thought it was necessary.

kb>Big issue with the implementation is the interposing stuff, why do you
kb> need it at all ?  Is it to correctly handle cancellation, to not fall
kb> into sleepable syscall when previous loop step was cancelled ?
Yes. I initially thought it was better to use the interposing table.

kb> If yes, you _can_ use pthread_testcancel(3) etc in libc.  Libc provides
kb> stubs for them with trivial implementation, which is reset to the real
kb> one if libthr is loaded.  Then you can simplify your patch
significantly,
kb> avoiding the need for interposing and writing the loops both in libc an=
d
kb> libthr.
Got it. See patch. I think I removed the interposing stuff as suggested. I
didn't know
about the stubs. But how for instance pthread_testcancel() will cope with
sleeping
recvmmsg for example? I'm not sure about the cancellation stuff here.
Probably my
approach is not correct? I looked through lib/ for an example and only
stumbled on
lib/libc/gen/sem.c where pthread_testcancel() is used but again I'm not
sure if I'm tackling
it correctly in the calls.

kb> BTW, do you have tests for the cancellation of the new functions ?
Unfortunately no. Ideas and guidelines how to stress test the calls
regarding functionality
and especially cancellation?

kb> Again, the patch lacks man page updates.
I'll try to write some soon.

Best regards,
Boris Astardzhiev
=E2=80=8B

--001a113d7c3e5fb30605295e0c90
Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg-libconly2.diff"
Content-Disposition: attachment; filename="sendrecvmmsg-libconly2.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ijfm701z0

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
CisJX3JlY3ZtbXNnOwogfTsKZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9yZWN2bW1zZy5jIGIv
bGliL2xpYmMvc3lzL3JlY3ZtbXNnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzYzOTMwYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9saWJjL3N5cy9yZWN2bW1zZy5jCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQm9yaXMgQXN0YXJkemhp
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
KTsKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVk
ZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8cHRo
cmVhZC5oPgorI2luY2x1ZGUgImxpYmNfcHJpdmF0ZS5oIgorCisjZGVmaW5lIFZMRU5fTUFYIDEw
MjQKKworaW50CityZWN2bW1zZyhpbnQgcywgc3RydWN0IG1tc2doZHIgKm1zZ3ZlYywgdW5zaWdu
ZWQgaW50IHZsZW4sIGludCBmbGFncykKK3sKKwlpbnQgaSwgcmV0LCByY3ZkOworCisJaWYgKHZs
ZW4gPiBWTEVOX01BWCkKKwkJdmxlbiA9IFZMRU5fTUFYOworCisJcHRocmVhZF90ZXN0Y2FuY2Vs
KCk7CisJcmN2ZCA9IDA7CisJZm9yIChpID0gMDsgaSA8IHZsZW47IGkrKykgeworCQllcnJubyA9
IDA7CisJCXJldCA9ICgoKGludCAoKikoaW50LCBjb25zdCBzdHJ1Y3QgbXNnaGRyICosIGludCkp
CisJCSAgICBfX2xpYmNfaW50ZXJwb3NpbmdbSU5URVJQT1NfcmVjdm1zZ10pKHMsCisJCSAgICAg
ICAgJm1zZ3ZlY1tpXS5tc2dfaGRyLCBmbGFncykpOworCQlpZiAocmV0IDwgMCB8fCBlcnJubyAh
PSAwKSB7CisJCQlpZiAocmN2ZCAhPSAwKSB7CisJCQkJLyogV2UndmUgcmVjZWl2ZWQgbWVzc2Fn
ZXMuIExldCBjYWxsZXIga25vdy4gKi8KKwkJCQllcnJubyA9IDA7CisJCQkJcHRocmVhZF90ZXN0
Y2FuY2VsKCk7CisJCQkJcmV0dXJuIChyY3ZkKTsKKwkJCX0KKwkJCXB0aHJlYWRfdGVzdGNhbmNl
bCgpOworCQkJcmV0dXJuICgtMSk7CisJCX0KKworCQkvKiBTYXZlIHJlY2VpdmVkIGJ5dGVzICov
CisJCW1zZ3ZlY1tpXS5tc2dfbGVuID0gcmV0OworCisJCXJjdmQrKzsKKwl9CisKKwlyZXR1cm4g
KHJjdmQpOworfQorCisjdW5kZWYgVkxFTl9NQVgKZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9z
ZW5kbW1zZy5jIGIvbGliL2xpYmMvc3lzL3NlbmRtbXNnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmFmYTliYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9saWJjL3N5cy9z
ZW5kbW1zZy5jCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQm9y
aXMgQXN0YXJkemhpZXYsIFNtYXJ0Y29tLUJ1bGdhcmlhIEFECisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBhcworICogICAgdGhlIGZpcnN0IGxpbmVzIG9mIHRoaXMgZmls
ZSB1bm1vZGlmaWVkIG90aGVyIHRoYW4gdGhlIHBvc3NpYmxlCisgKiAgICBhZGRpdGlvbiBvZiBv
bmUgb3IgbW9yZSBjb3B5cmlnaHQgbm90aWNlcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UocyksIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UKKyAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsCisgKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElE
KCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Cisj
aW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgImxpYmNfcHJpdmF0ZS5oIgorCisjZGVmaW5l
IFZMRU5fTUFYIDEwMjQKKworaW50CitzZW5kbW1zZyhpbnQgcywgc3RydWN0IG1tc2doZHIgKm1z
Z3ZlYywgdW5zaWduZWQgaW50IHZsZW4sIGludCBmbGFncykKK3sKKwlpbnQgaSwgcmV0LCBzZW50
OworCisJaWYgKHZsZW4gPiBWTEVOX01BWCkKKwkJdmxlbiA9IFZMRU5fTUFYOworCisJcHRocmVh
ZF90ZXN0Y2FuY2VsKCk7CisJc2VudCA9IDA7CisJZm9yIChpID0gMDsgaSA8IHZsZW47IGkrKykg
eworCQllcnJubyA9IDA7CisJCXJldCA9ICgoKGludCAoKikoaW50LCBjb25zdCBzdHJ1Y3QgbXNn
aGRyICosIGludCkpCisJCSAgICBfX2xpYmNfaW50ZXJwb3NpbmdbSU5URVJQT1Nfc2VuZG1zZ10p
KHMsCisJCSAgICAgICAgJm1zZ3ZlY1tpXS5tc2dfaGRyLCBmbGFncykpOworCisJCWlmIChyZXQg
PCAwIHx8IGVycm5vICE9IDApIHsKKwkJCWlmIChzZW50ICE9IDApIHsKKwkJCQkvKiBXZSBoYXZl
IHNlbnQgbWVzc2FnZXMuIExldCBjYWxsZXIga25vdy4gKi8KKwkJCQllcnJubyA9IDA7CisJCQkJ
cHRocmVhZF90ZXN0Y2FuY2VsKCk7CisJCQkJcmV0dXJuIChzZW50KTsKKwkJCX0KKwkJCXB0aHJl
YWRfdGVzdGNhbmNlbCgpOworCQkJcmV0dXJuICgtMSk7CisJCX0KKworCQkvKiBTYXZlIHNlbnQg
Ynl0ZXMgKi8KKwkJbXNndmVjW2ldLm1zZ19sZW4gPSByZXQ7CisKKwkJc2VudCsrOworCX0KKwor
CXJldHVybiAoc2VudCk7Cit9CisKKyN1bmRlZiBWTEVOX01BWApkaWZmIC0tZ2l0IGEvc3lzL3N5
cy9zb2NrZXQuaCBiL3N5cy9zeXMvc29ja2V0LmgKaW5kZXggMThlMmRlMS4uNTA0MzEzZSAxMDA2
NDQKLS0tIGEvc3lzL3N5cy9zb2NrZXQuaAorKysgYi9zeXMvc3lzL3NvY2tldC5oCkBAIC01OTUs
NiArNTk1LDE4IEBAIHN0cnVjdCBzZl9oZHRyIHsKICNlbmRpZiAvKiBfS0VSTkVMICovCiAjZW5k
aWYgLyogX19CU0RfVklTSUJMRSAqLwogCisjaWZuZGVmIF9LRVJORUwKKyNpZmRlZiBfX0JTRF9W
SVNJQkxFCisvKgorICogU2VuZC9yZWN2bW1zZyBzcGVjaWZpYyBzdHJ1Y3R1cmUocykKKyAqLwor
c3RydWN0IG1tc2doZHIgeworCXN0cnVjdCBtc2doZHIJbXNnX2hkcjsJCS8qIG1lc3NhZ2UgaGVh
ZGVyICovCisJdW5zaWduZWQgaW50CW1zZ19sZW47CQkvKiBtZXNzYWdlIGxlbmd0aCAgKi8KK307
CisjZW5kaWYgLyogX19CU0RfVklTSUJMRSAqLworI2VuZGlmIC8qICFfS0VSTkVMICovCisKICNp
Zm5kZWYJX0tFUk5FTAogCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CkBAIC02MTUsMTEgKzYyNywx
NyBAQCBpbnQJbGlzdGVuKGludCwgaW50KTsKIHNzaXplX3QJcmVjdihpbnQsIHZvaWQgKiwgc2l6
ZV90LCBpbnQpOwogc3NpemVfdAlyZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHN0
cnVjdCBzb2NrYWRkciAqIF9fcmVzdHJpY3QsIHNvY2tsZW5fdCAqIF9fcmVzdHJpY3QpOwogc3Np
emVfdAlyZWN2bXNnKGludCwgc3RydWN0IG1zZ2hkciAqLCBpbnQpOworI2lmIF9fQlNEX1ZJU0lC
TEUKK2ludAlyZWN2bW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICosIHVuc2lnbmVkIGludCwgaW50
KTsKKyNlbmRpZgogc3NpemVfdAlzZW5kKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCk7
CiBzc2l6ZV90CXNlbmR0byhpbnQsIGNvbnN0IHZvaWQgKiwKIAkgICAgc2l6ZV90LCBpbnQsIGNv
bnN0IHN0cnVjdCBzb2NrYWRkciAqLCBzb2NrbGVuX3QpOwogc3NpemVfdAlzZW5kbXNnKGludCwg
Y29uc3Qgc3RydWN0IG1zZ2hkciAqLCBpbnQpOwogI2lmIF9fQlNEX1ZJU0lCTEUKK2ludAlzZW5k
bW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICosIHVuc2lnbmVkIGludCwgaW50KTsKKyNlbmRpZgor
I2lmIF9fQlNEX1ZJU0lCTEUKIGludAlzZW5kZmlsZShpbnQsIGludCwgb2ZmX3QsIHNpemVfdCwg
c3RydWN0IHNmX2hkdHIgKiwgb2ZmX3QgKiwgaW50KTsKIGludAlzZXRmaWIoaW50KTsKICNlbmRp
Zgo=
--001a113d7c3e5fb30605295e0c90--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP=KkTxVaqZvigg78Dg%2Bv8kuTCaZyky8x15NHqD9uabuRKRkMw>