Date: Thu, 5 Mar 2009 15:00:01 -0800 From: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> To: Iain Hibbert <plunky@rya-online.net> Cc: "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org> Subject: Re: libhci Message-ID: <bb4a86c70903051500j70837feo659b22dba44428fe@mail.gmail.com> In-Reply-To: <1236284095.692711.620.nullmailer@galant.ukfsn.org> References: <1233365217.00068654.1233354838@10.7.7.3> <1233758519.360141.162.nullmailer@galant.ukfsn.org> <bb4a86c70902041000t26ad9b66q94a32ff37cfb7f4b@mail.gmail.com> <1233845167.798942.24919.nullmailer@galant.ukfsn.org> <bb4a86c70902051001j53f52e3dhb2e80e393b936f16@mail.gmail.com> <1233919880.530235.10843.nullmailer@galant.ukfsn.org> <bb4a86c70902131717o2ccc1fd2nd73f84b1a7765152@mail.gmail.com> <1234605178.990729.799.nullmailer@galant.ukfsn.org> <bb4a86c70903051103q8937592sb117db281b20705f@mail.gmail.com> <1236284095.692711.620.nullmailer@galant.ukfsn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--00504502c8e6d17e0904646720df Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Thu, Mar 5, 2009 at 12:14 PM, Iain Hibbert <plunky@rya-online.net> wrote: > On Thu, 5 Mar 2009, Maksim Yevmenkin wrote: >> [v2] > > seems fine, some documentation comments > > +The > +.Fn bt_devenum > +function enumerates up to > +.Dv HCI_DEVMAX > +Bluetooth devices present in the system. > > This should not be in the function API but in a CAVEATS or BUGS section as > its implementation dependent :) yeah, sure. > +The > +.Fn bt_devenum > +uses the same socket for the duration of enumeration. > > Likewise I don't think this should be part of the specification as some > implementations might not be able to reuse the socket. Perhaps just say > that the socket handle provided will only be valid during the callback to > make sure that the callback doesn't store it? (can put it in CAVEATS > section that it is reused if you like?) fine > +The function guarantees that the socket, > +passed to the callback function, > +will be bound and connected to the Bluetooth device being enumerated. > +The function returns number of successfully enumerated devices, > +otherwise -1. > > can we say 'or -1 if an error occurred', as I think it could be valid to > successfully enumerate 0 devices..? yes, we can :) > +#define HCI_DEVFEATURES_SIZE NG_HCI_FEATURES_SIZE > > when I ported the include files I just chopped off the NG_, is there > any gain in having another definition? well, i wanted to have something that is compatible on the source code level. i could have used NG_HCI_FEATURES_SIZE but decided not to. > + uint32_t state; > > I guess state is impementation dependent? (some kind of device flags not > mentioned here?) yeah, its what ever device chooses to report. > + uint8_t _padding[20]; /* make it 128 bytes in size */ > > that comment shoud be 'leave space for future additions' rather than > specifying the size as some platforms won't actually be that size anyway.. sure. thanks, max --00504502c8e6d17e0904646720df Content-Type: text/plain; charset=US-ASCII; name="bluetooth-hci.diff.txt" Content-Disposition: attachment; filename="bluetooth-hci.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fry1irpe0 SW5kZXg6IGRldi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRldi5jCShyZXZpc2lvbiAwKQorKysgZGV2LmMJ KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBkZXYuYworICovCisKKy8qLQor ICogQ29weXJpZ2h0IChjKSAyMDA5IE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28u Y29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJ Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNpbmNs dWRlIDxibHVldG9vdGguaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5o PgorCitzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcKK3sKKwljaGFyCQlkZXZuYW1lW0hDSV9E RVZOQU1FX1NJWkVdOworCWJkYWRkcl90IGNvbnN0CSpiZGFkZHI7Cit9OworCitzdGF0aWMgYnRf ZGV2ZW51bV9jYl90CWJ0X2RldmFkZHJfbWF0Y2g7CisKK2ludAorYnRfZGV2YWRkcihjaGFyIGNv bnN0ICpkZXZuYW1lLCBiZGFkZHJfdCAqYWRkcikKK3sKKwlzdHJ1Y3QgYnRfZGV2aW5mbwlkaTsK KworCXN0cmxjcHkoZGkuZGV2bmFtZSwgZGV2bmFtZSwgc2l6ZW9mKGRpLmRldm5hbWUpKTsKKwor CWlmIChidF9kZXZpbmZvKCZkaSkgPCAwKQorCQlyZXR1cm4gKDApOworCisJaWYgKGFkZHIgIT0g TlVMTCkKKwkJYmRhZGRyX2NvcHkoYWRkciwgJmRpLmJkYWRkcik7CisKKwlyZXR1cm4gKDEpOwor fQorCitpbnQKK2J0X2Rldm5hbWUoY2hhciAqZGV2bmFtZSwgYmRhZGRyX3QgY29uc3QgKmFkZHIp Cit7CisJc3RydWN0IGJ0X2RldmFkZHJfbWF0Y2hfYXJnCWFyZzsKKworCW1lbXNldCgmYXJnLCAw LCBzaXplb2YoYXJnKSk7CisJYXJnLmJkYWRkciA9IGFkZHI7CisKKwlpZiAoYnRfZGV2ZW51bSgm YnRfZGV2YWRkcl9tYXRjaCwgJmFyZykgPCAwKQorCQlyZXR1cm4gKDApOworCQorCWlmIChhcmcu ZGV2bmFtZVswXSA9PSAnXDAnKSB7CisJCWVycm5vID0gRU5YSU87CisJCXJldHVybiAoMCk7CisJ fQorCisJaWYgKGRldm5hbWUgIT0gTlVMTCkKKwkJc3RybGNweShkZXZuYW1lLCBhcmcuZGV2bmFt ZSwgSENJX0RFVk5BTUVfU0laRSk7CisKKwlyZXR1cm4gKDEpOworfQorCitzdGF0aWMgaW50Citi dF9kZXZhZGRyX21hdGNoKGludCBzLCBzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQg KmFyZykKK3sKKwlzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcJKm0gPSAoc3RydWN0IGJ0X2Rl dmFkZHJfbWF0Y2hfYXJnICopYXJnOworCisJaWYgKCFiZGFkZHJfc2FtZSgmZGktPmJkYWRkciwg bS0+YmRhZGRyKSkKKwkJcmV0dXJuICgwKTsKKworCXN0cmxjcHkobS0+ZGV2bmFtZSwgZGktPmRl dm5hbWUsIHNpemVvZihtLT5kZXZuYW1lKSk7CisKKwlyZXR1cm4gKDEpOworfQorCkluZGV4OiBo Y2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBoY2kuYwkocmV2aXNpb24gMCkKKysrIGhjaS5jCShyZXZpc2lv biAwKQpAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIGhjaS5jCisgKi8KKworLyotCisgKiBDb3B5 cmlnaHQgKGMpIDIwMDkgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+Cisg KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisg KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RgorICogU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisgKi8KKworI2luY2x1ZGUgPGJs dWV0b290aC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyBjaGFyICogYnRf ZGV2Mm5vZGUgKGNoYXIgY29uc3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQgbm5sZW4p OworCitpbnQKK2J0X2RldmluZm8oc3RydWN0IGJ0X2RldmluZm8gKmRpKQoreworCXVuaW9uIHsK KwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9zdGF0ZQkJcjA7CisJCXN0cnVjdCBu Z19idHNvY2tldF9oY2lfcmF3X25vZGVfYmRhZGRyCQlyMTsKKwkJc3RydWN0IG5nX2J0c29ja2V0 X2hjaV9yYXdfbm9kZV9mZWF0dXJlcwlyMjsKKwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdf bm9kZV9idWZmZXIJCXIzOworCQlzdHJ1Y3QgbmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX3N0YXQJ CXI0OworCQlzdHJ1Y3QgbmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX2xpbmtfcG9saWN5X21hc2sg cjU7CisJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfcGFja2V0X21hc2sJcjY7CisJ CXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfcm9sZV9zd2l0Y2gJcjc7CisJCXN0cnVj dCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfZGVidWcJCXI4OworCX0JCQkJCQlycDsKKwlzdHJ1 Y3Qgc29ja2FkZHJfaGNpCQkJCWhhOworCWludAkJCQkJCXMsIHJ2YWw7CisKKwlpZiAoZGkgPT0g TlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJbWVtc2V0 KCZoYSwgMCwgc2l6ZW9mKGhhKSk7CisJaGEuaGNpX2xlbiA9IHNpemVvZihoYSk7CisJaGEuaGNp X2ZhbWlseSA9IEFGX0JMVUVUT09USDsKKworCWlmIChidF9hdG9uKGRpLT5kZXZuYW1lLCAmcnAu cjEuYmRhZGRyKSkgeworCQlpZiAoIWJ0X2Rldm5hbWUoaGEuaGNpX25vZGUsICZycC5yMS5iZGFk ZHIpKQorCQkJcmV0dXJuICgtMSk7CisJfSBlbHNlIGlmIChidF9kZXYybm9kZShkaS0+ZGV2bmFt ZSwgaGEuaGNpX25vZGUsCisJCQkJCXNpemVvZihoYS5oY2lfbm9kZSkpID09IE5VTEwpIHsKKwkJ ZXJybm8gPSBFTlhJTzsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJcyA9IHNvY2tldChQRl9CTFVF VE9PVEgsIFNPQ0tfUkFXLCBCTFVFVE9PVEhfUFJPVE9fSENJKTsKKwlpZiAocyA8IDApCisJCXJl dHVybiAoLTEpOworCisJcnZhbCA9IC0xOworCisJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRk ciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCB8fAorCSAgICBjb25uZWN0KHMsIChzdHJ1Y3Qgc29j a2FkZHIgKikgJmhhLCBzaXplb2YoaGEpKSA8IDApCisJCWdvdG8gYmFkOworCXN0cmxjcHkoZGkt PmRldm5hbWUsIGhhLmhjaV9ub2RlLCBzaXplb2YoZGktPmRldm5hbWUpKTsKKworCWlmIChpb2N0 bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfU1RBVEUsICZycC5yMCwgc2l6ZW9mKHJwLnIwKSkg PCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+c3RhdGUgPSBycC5yMC5zdGF0ZTsKKworCWlmIChpb2N0 bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfQkRBRERSLCAmcnAucjEsIHNpemVvZihycC5yMSkp IDwgMCkKKwkJZ290byBiYWQ7CisJYmRhZGRyX2NvcHkoJmRpLT5iZGFkZHIsICZycC5yMS5iZGFk ZHIpOworCQorCWlmIChpb2N0bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfRkVBVFVSRVMsICZy cC5yMiwgc2l6ZW9mKHJwLnIyKSkgPCAwKQorCQlnb3RvIGJhZDsKKwltZW1jcHkoZGktPmZlYXR1 cmVzLCBycC5yMi5mZWF0dXJlcywgc2l6ZW9mKGRpLT5mZWF0dXJlcykpOworCisJaWYgKGlvY3Rs KHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9CVUZGRVIsICZycC5yMywgc2l6ZW9mKHJwLnIzKSkg PCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+Y21kX2ZyZWUgPSBycC5yMy5idWZmZXIuY21kX2ZyZWU7 CisJZGktPnNjb19zaXplID0gcnAucjMuYnVmZmVyLnNjb19zaXplOworCWRpLT5zY29fcGt0cyA9 IHJwLnIzLmJ1ZmZlci5zY29fcGt0czsKKwlkaS0+c2NvX2ZyZWUgPSBycC5yMy5idWZmZXIuc2Nv X2ZyZWU7CisJZGktPmFjbF9zaXplID0gcnAucjMuYnVmZmVyLmFjbF9zaXplOworCWRpLT5hY2xf cGt0cyA9IHJwLnIzLmJ1ZmZlci5hY2xfcGt0czsKKwlkaS0+YWNsX2ZyZWUgPSBycC5yMy5idWZm ZXIuYWNsX2ZyZWU7CisKKwlpZiAoaW9jdGwocywgU0lPQ19IQ0lfUkFXX05PREVfR0VUX1NUQVQs ICZycC5yNCwgc2l6ZW9mKHJwLnI0KSkgPCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+Y21kX3NlbnQg PSBycC5yNC5zdGF0LmNtZF9zZW50OworCWRpLT5ldm50X3JlY3YgPSBycC5yNC5zdGF0LmV2bnRf cmVjdjsKKwlkaS0+YWNsX3JlY3YgPSBycC5yNC5zdGF0LmFjbF9yZWN2OworCWRpLT5hY2xfc2Vu dCA9IHJwLnI0LnN0YXQuYWNsX3NlbnQ7CisJZGktPnNjb19yZWN2ID0gcnAucjQuc3RhdC5zY29f cmVjdjsKKwlkaS0+c2NvX3NlbnQgPSBycC5yNC5zdGF0LnNjb19zZW50OworCWRpLT5ieXRlc19y ZWN2ID0gcnAucjQuc3RhdC5ieXRlc19yZWN2OworCWRpLT5ieXRlc19zZW50ID0gcnAucjQuc3Rh dC5ieXRlc19zZW50OworCisJaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9MSU5L X1BPTElDWV9NQVNLLAorCQkJJnJwLnI1LCBzaXplb2YocnAucjUpKSA8IDApCisJCWdvdG8gYmFk OworCWRpLT5saW5rX3BvbGljeV9pbmZvID0gcnAucjUucG9saWN5X21hc2s7CisKKwlpZiAoaW9j dGwocywgU0lPQ19IQ0lfUkFXX05PREVfR0VUX1BBQ0tFVF9NQVNLLAorCQkJJnJwLnI2LCBzaXpl b2YocnAucjYpKSA8IDApCisJCWdvdG8gYmFkOworCWRpLT5wYWNrZXRfdHlwZV9pbmZvID0gcnAu cjYucGFja2V0X21hc2s7CisKKwkgaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9S T0xFX1NXSVRDSCwKKwkJCSZycC5yNywgc2l6ZW9mKHJwLnI3KSkgPCAwKQorCQlnb3RvIGJhZDsK KwlkaS0+cm9sZV9zd2l0Y2hfaW5mbyA9IHJwLnI3LnJvbGVfc3dpdGNoOworCisJaWYgKGlvY3Rs KHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9ERUJVRywgJnJwLnI4LCBzaXplb2YocnAucjgpKSA8 IDApCisJCWdvdG8gYmFkOworCWRpLT5kZWJ1ZyA9IHJwLnI4LmRlYnVnOworCisJcnZhbCA9IDA7 CitiYWQ6CisJY2xvc2Uocyk7CisKKwlyZXR1cm4gKHJ2YWwpOworfQorCitpbnQKK2J0X2RldmVu dW0oYnRfZGV2ZW51bV9jYl90IGNiLCB2b2lkICphcmcpCit7CisJc3RydWN0IG5nX2J0c29ja2V0 X2hjaV9yYXdfbm9kZV9saXN0X25hbWVzCXJwOworCXN0cnVjdCBidF9kZXZpbmZvCQkJCWRpOwor CXN0cnVjdCBzb2NrYWRkcl9oY2kJCQkJaGE7CisJaW50CQkJCQkJcywgaSwgY291bnQ7CisKKwly cC5udW1fbmFtZXMgPSBIQ0lfREVWTUFYOworCXJwLm5hbWVzID0gKHN0cnVjdCBub2RlaW5mbyAq KSBjYWxsb2MocnAubnVtX25hbWVzLAorCQkJCQkJc2l6ZW9mKHN0cnVjdCBub2RlaW5mbykpOwor CWlmIChycC5uYW1lcyA9PSBOVUxMKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gKC0x KTsKKwl9CisKKwltZW1zZXQoJmhhLCAwLCBzaXplb2YoaGEpKTsKKwloYS5oY2lfbGVuID0gc2l6 ZW9mKGhhKTsKKwloYS5oY2lfZmFtaWx5ID0gQUZfQkxVRVRPT1RIOworCWhhLmhjaV9ub2RlWzBd ID0gJ3gnOworCisJcyA9IHNvY2tldChQRl9CTFVFVE9PVEgsIFNPQ0tfUkFXLCBCTFVFVE9PVEhf UFJPVE9fSENJKTsKKwlpZiAocyA8IDApIHsKKwkJZnJlZShycC5uYW1lcyk7CisKKwkJcmV0dXJu ICgtMSk7CisJfQorCisJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVv ZihoYSkpIDwgMCB8fAorCSAgICBjb25uZWN0KHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCBz aXplb2YoaGEpKSA8IDAgfHwKKwkgICAgaW9jdGwocywgU0lPQ19IQ0lfUkFXX05PREVfTElTVF9O QU1FUywgJnJwLCBzaXplb2YocnApKSA8IDApIHsKKwkJY2xvc2Uocyk7CisJCWZyZWUocnAubmFt ZXMpOworCisJCXJldHVybiAoLTEpOworCX0KKworCWZvciAoY291bnQgPSAwLCBpID0gMDsgaSA8 IHJwLm51bV9uYW1lczsgaSArKykgeworCQlzdHJsY3B5KGRpLmRldm5hbWUsIHJwLm5hbWVzW2ld Lm5hbWUsIHNpemVvZihkaS5kZXZuYW1lKSk7CisJCWlmIChidF9kZXZpbmZvKCZkaSkgPCAwKQor CQkJY29udGludWU7CisKKwkJY291bnQgKys7CisKKwkJaWYgKGNiID09IE5VTEwpCisJCQljb250 aW51ZTsKKworCQlzdHJsY3B5KGhhLmhjaV9ub2RlLCBycC5uYW1lc1tpXS5uYW1lLCBzaXplb2Yo aGEuaGNpX25vZGUpKTsKKwkJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNp emVvZihoYSkpIDwgMCB8fAorCQkgICAgY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopICZo YSwgc2l6ZW9mKGhhKSkgPCAwKQorCQkJY29udGludWU7CisKKwkJaWYgKCgqY2IpKHMsICZkaSwg YXJnKSA+IDApCisJCQlicmVhazsKKwl9CisKKwljbG9zZSAocyk7CisJZnJlZShycC5uYW1lcyk7 CisKKwlyZXR1cm4gKGNvdW50KTsKK30KKworc3RhdGljIGNoYXIgKgorYnRfZGV2Mm5vZGUoY2hh ciBjb25zdCAqZGV2bmFtZSwgY2hhciAqbm9kZW5hbWUsIGludCBubmxlbikKK3sKKwlzdGF0aWMg Y2hhciBjb25zdCAqCSBidF9kZXZfcHJlZml4W10gPSB7CisJCSJidGNjYyIsCS8qIDNDb20gQmx1 ZXRvb3RoIFBDLUNBUkQgKi8KKwkJImg0IiwJCS8qIFVBUlQvc2VyaWFsIEJsdWV0b290aCBkZXZp Y2VzICovCisJCSJ1YnQiLAkJLyogQmx1ZXRvb3RoIFVTQiBkZXZpY2VzICovCisJCU5VTEwJCS8q IHNob3VsZCBiZSBsYXN0ICovCisJfTsKKworCXN0YXRpYyBjaGFyCQlfbm9kZW5hbWVbSENJX0RF Vk5BTUVfU0laRV07CisJY2hhciBjb25zdAkJKipwOworCWNoYXIJCQkqZXA7CisJaW50CQkJcGxl biwgdW5pdDsKKworCWlmIChub2RlbmFtZSA9PSBOVUxMKSB7CisJCW5vZGVuYW1lID0gX25vZGVu YW1lOworCQlubmxlbiA9IEhDSV9ERVZOQU1FX1NJWkU7CisJfQorCisJZm9yIChwID0gYnRfZGV2 X3ByZWZpeDsgKnAgIT0gTlVMTDsgcCArKykgeworCQlwbGVuID0gc3RybGVuKCpwKTsKKwkJaWYg KHN0cm5jbXAoZGV2bmFtZSwgKnAsIHBsZW4pICE9IDApCisJCQljb250aW51ZTsKKworCQl1bml0 ID0gc3RydG91bChkZXZuYW1lICsgcGxlbiwgJmVwLCAxMCk7CisJCWlmICgqZXAgIT0gJ1wwJyAm JgorCQkgICAgc3RyY21wKGVwLCAiaGNpIikgIT0gMCAmJgorCQkgICAgc3RyY21wKGVwLCAibDJj YXAiKSAhPSAwKQorCQkJcmV0dXJuIChOVUxMKTsJLyogY2FuJ3QgbWFrZSBzZW5zZSBvZiBkZXZp Y2UgbmFtZSAqLworCisJCXNucHJpbnRmKG5vZGVuYW1lLCBubmxlbiwgIiVzJXVoY2kiLCAqcCwg dW5pdCk7CisKKwkJcmV0dXJuIChub2RlbmFtZSk7CisJfQorCisJcmV0dXJuIChOVUxMKTsKK30K KwpJbmRleDogYmx1ZXRvb3RoLjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmx1ZXRvb3RoLjMJKHJldmlzaW9u IDE4OTQxNCkKKysrIGJsdWV0b290aC4zCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAot LlwiIENvcHlyaWdodCAoYykgMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9v LmNvbT4KKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2 bWVua2luQHlhaG9vLmNvbT4KIC5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLlwiCiAuXCIgUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CkBAIC0yNSw3ICsyNSw3IEBACiAuXCIgJElkOiBibHVldG9vdGguMyx2IDEuNSAyMDAz LzA1LzIwIDIzOjA0OjMwIG1heCBFeHAgJAogLlwiICRGcmVlQlNEJAogLlwiCi0uRGQgQXVndXN0 IDEzLCAyMDA4CisuRGQgRmVicnVhcnkgMTMsIDIwMDkKIC5EdCBCTFVFVE9PVEggMwogLk9zCiAu U2ggTkFNRQpAQCAtNzQsNiArNzQsMTYgQEAKIC5GdCBjb25zdCBjaGFyICoKIC5GbiBidF9udG9h ICJjb25zdCBiZGFkZHJfdCAqYmEiICJjaGFyICpzdHIiCiAuRnQgaW50CisuRm4gYnRfZGV2YWRk ciAiY29uc3QgY2hhciAqZGV2bmFtZSIgImJkYWRkcl90ICphZGRyIgorLkZ0IGludAorLkZuIGJ0 X2Rldm5hbWUgImNoYXIgKmRldm5hbWUiICJjb25zdCBiZGFkZHJfdCAqYWRkciIKKy5GdCBpbnQK Ky5GbiAoYnRfZGV2ZW51bV9jYl90KSAiaW50IHMiICJzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAq ZGkiICJ2b2lkICphcmciCisuRnQgaW50CisuRm4gYnRfZGV2aW5mbyAic3RydWN0IGJ0X2Rldmlu Zm8gKmRpIgorLkZ0IGludAorLkZuIGJ0X2RldmVudW0gImJ0X2RldmVudW1fY2JfdCAqY2IiICJ2 b2lkICphcmciCisuRnQgaW50CiAuRm4gYmRhZGRyX3NhbWUgImNvbnN0IGJkYWRkcl90ICphIiAi Y29uc3QgYmRhZGRyX3QgKmIiCiAuRnQgaW50CiAuRm4gYmRhZGRyX2FueSAiY29uc3QgYmRhZGRy X3QgKmEiCkBAIC0xOTcsNiArMjA3LDExMCBAQAogSWYgbm8gYnVmZmVyIHdhcyBwcm92aWRlZCB0 aGVuIGludGVybmFsIHN0YXRpYyBidWZmZXIgd2lsbCBiZSB1c2VkLgogLlBwCiBUaGUKKy5GbiBi dF9kZXZhZGRyCitmdW5jdGlvbiBpbnRlcnByZXRzIHRoZSBzcGVjaWZpZWQKKy5GYSBkZXZuYW1l CitzdHJpbmcgYXMgdGhlIGFkZHJlc3Mgb3IgZGV2aWNlIG5hbWUgb2YgYSBCbHVldG9vdGggZGV2 aWNlIG9uIHRoZSBsb2NhbCBzeXN0ZW0sCithbmQgcGxhY2VzIHRoZSBkZXZpY2UgYWRkcmVzcyBp biB0aGUgcHJvdmlkZWQKKy5GYSBiZGFkZHIgLAoraWYgYW55LgorVGhlIGZ1bmN0aW9uIHJldHVy bnMgMSBpZiB0aGUgc3RyaW5nIHdhcyBzdWNjZXNzZnVsbHkgaW50ZXJwcmV0ZWQsCitvciAwIGlm IHRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCBhbnkgbG9jYWwgZGV2aWNlLgorVGhlCisuRm4gYnRf ZGV2bmFtZQorZnVuY3Rpb24gdGFrZXMgYSBCbHVldG9vdGggZGV2aWNlIGFkZHJlc3MgYW5kIGNv cGllcyB0aGUgbG9jYWwgZGV2aWNlCituYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGFkZHJlc3Mg aW50byB0aGUgYnVmZmVyIHByb3ZpZGVkLAoraWYgYW55LgorQ2FsbGVyIG11c3QgZW5zdXJlIHRo YXQgcHJvdmlkZWQgYnVmZmVyIGlzIGF0IGxlYXN0CisuRHYgSENJX0RFVk5BTUVfU0laRQorY2hh cmFjdGVycyBpbiBzaXplLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBkZXZpY2Ug d2FzIGZvdW5kLAorb3RoZXJ3aXNlIDAuCisuUHAKK1RoZQorLkZuIGJ0X2RldmluZm8KK2Z1bmN0 aW9uIHBvcHVsYXRlcyBwcm9kaXZkZWQKKy5WdCBidF9kZXZpbmZvCitzdHJ1Y3R1cmUgd2l0aCB0 aGUgaW5mb3JtYXRpb24gYWJvdXQgZ2l2ZW4gQmx1ZXRvb3RoIGRldmljZS4KK1RoZSBjYWxsZXIg aXMgZXhwZWN0ZWQgdG8gcGFzcyBCbHVldG9vdGggZGV2aWNlIG5hbWUgaW4gdGhlCisuRmEgZGV2 bmFtZQorZmllbGQgb2YgdGhlIHBhc3NlZAorLlZ0IGJ0X2RldmluZm8KK3N0cnVjdHVyZS4KK1Ro ZSBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiBzdWNjZXNzZnVsLAorb3RoZXJ3aXNlIC0xLgorVGhl CisuVnQgYnRfZGV2aW5mbworc3RydWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1s aXRlcmFsIC1vZmZzZXQgaW5kZW50CitzdHJ1Y3QgYnRfZGV2aW5mbworeworICAgICAgICBjaGFy ICAgICAgICAgICAgZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworICAgICAgICB1aW50MzJf dCAgICAgICAgc3RhdGU7CisKKyAgICAgICAgYmRhZGRyX3QgICAgICAgIGJkYWRkcjsKKyAgICAg ICAgdWludDE2X3QgICAgICAgIF9yZXNlcnZlZDA7CisKKyAgICAgICAgdWludDhfdCAgICAgICAg IGZlYXR1cmVzW0hDSV9ERVZGRUFUVVJFU19TSVpFXTsKKworICAgICAgICAvKiBidWZmZXIgaW5m byAqLworICAgICAgICB1aW50MTZfdCAgICAgICAgX3Jlc2VydmVkMTsKKyAgICAgICAgdWludDE2 X3QgICAgICAgIGNtZF9mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgc2NvX3NpemU7Cisg ICAgICAgIHVpbnQxNl90ICAgICAgICBzY29fcGt0czsKKyAgICAgICAgdWludDE2X3QgICAgICAg IHNjb19mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgYWNsX3NpemU7CisgICAgICAgIHVp bnQxNl90ICAgICAgICBhY2xfcGt0czsKKyAgICAgICAgdWludDE2X3QgICAgICAgIGFjbF9mcmVl OworCisgICAgICAgIC8qIHN0YXRzICovCisgICAgICAgIHVpbnQzMl90ICAgICAgICBjbWRfc2Vu dDsKKyAgICAgICAgdWludDMyX3QgICAgICAgIGV2bnRfcmVjdjsKKyAgICAgICAgdWludDMyX3Qg ICAgICAgIGFjbF9yZWN2OworICAgICAgICB1aW50MzJfdCAgICAgICAgYWNsX3NlbnQ7CisgICAg ICAgIHVpbnQzMl90ICAgICAgICBzY29fcmVjdjsKKyAgICAgICAgdWludDMyX3QgICAgICAgIHNj b19zZW50OworICAgICAgICB1aW50MzJfdCAgICAgICAgYnl0ZXNfcmVjdjsKKyAgICAgICAgdWlu dDMyX3QgICAgICAgIGJ5dGVzX3NlbnQ7CisKKyAgICAgICAgLyogbWlzYy9zcGVjaWZpYyAqLwor ICAgICAgICB1aW50MTZfdCAgICAgICAgbGlua19wb2xpY3lfaW5mbzsKKyAgICAgICAgdWludDE2 X3QgICAgICAgIHBhY2tldF90eXBlX2luZm87CisgICAgICAgIHVpbnQxNl90ICAgICAgICByb2xl X3N3aXRjaF9pbmZvOworICAgICAgICB1aW50MTZfdCAgICAgICAgZGVidWc7CisKKyAgICAgICAg dWludDhfdCAgICAgICAgIF9wYWRkaW5nWzIwXTsKK307CisuRWQKKy5QcAorVGhlCisuRm4gYnRf ZGV2ZW51bQorZnVuY3Rpb24gZW51bWVyYXRlcyBCbHVldG9vdGggZGV2aWNlcyBwcmVzZW50IGlu IHRoZSBzeXN0ZW0uCitGb3IgZXZlcnkgZGV2aWNlIGZvdW5kLAordGhlIGZ1bmN0aW9uIHdpbGwg Y2FsbCBwcm92aWRlZAorLkZhIGNiCitjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBzaG91bGQgYmUg b2YKKy5WdCBidF9kZXZlbnVtX2NiX3QKK3R5cGUuCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gaXMg cGFzc2VkIGEKKy5EdiBIQ0kKK3NvY2tldAorLkZhIHMgLAorZnVsbHkgcG9wdWxhdGVkCisuVnQg YnRfZGV2aW5mbworc3RydWN0dXJlCisuRmEgZGkKK2FuZAorLkZhIGFyZworYXJndW1lbnQgcHJv dmlkZWQgdG8gdGhlCisuRm4gYnRfZGV2ZW51bSAuCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2Fu IHN0b3AgZW51bWVyYXRpb24gYnkgcmV0dXJuaW5nIGEgdmFsdWUKK3RoYXQgaXMgZ3JlYXRlciB0 aGFuIHplcm8uCitUaGUgZnVuY3Rpb24gcmV0dXJucyBudW1iZXIgb2Ygc3VjY2Vzc2Z1bGx5IGVu dW1lcmF0ZWQgZGV2aWNlcywKK29yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLgorLlBwCitUaGUK IC5GbiBiZGFkZHJfc2FtZSAsCiAuRm4gYmRhZGRyX2FueQogYW5kCkBAIC0yODcsNyArNDAxLDgg QEAKIC5YciBnZXRwcm90b2J5bnVtYmVyIDMgLAogLlhyIGhlcnJvciAzICwKIC5YciBpbmV0X2F0 b24gMyAsCi0uWHIgaW5ldF9udG9hIDMKKy5YciBpbmV0X250b2EgMyAsCisuWHIgbmdfaGNpIDQK IC5TaCBDQVZFQVQKIFRoZQogLkZuIGJ0X2dldGhvc3RlbnQKQEAgLTMxMiw2ICs0MjcsMjAgQEAK IGZ1bmN0aW9uIG9wZW5zIGFuZC9vciByZXdpbmRzIHRoZQogLlBhIC9ldGMvYmx1ZXRvb3RoL3By b3RvY29scwogZmlsZS4KKy5QcAorVGhlCisuRm4gYnRfZGV2ZW51bQorZnVuY3Rpb24gZW51bWVy YXRlcyB1cCB0bworLkR2IEhDSV9ERVZNQVgKK0JsdWV0b290aCBkZXZpY2VzLgorRHVyaW5nIGVu dW1lcmF0aW9uIHRoZQorLkZuIGJ0X2RldmVudW0KK2Z1bmN0aW9uIHVzZXMgdGhlIHNhbWUKKy5E diBIQ0kKK3NvY2tldC4KK1RoZSBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIHNvY2tldCwK K3Bhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sCit3aWxsIGJlIGJvdW5kIGFuZCBjb25u ZWN0ZWQgdG8gdGhlIEJsdWV0b290aCBkZXZpY2UgYmVpbmcgZW51bWVyYXRlZC4KIC5TaCBBVVRI T1JTCiAuQW4gTWFrc2ltIFlldm1lbmtpbiBBcSBtX2V2bWVua2luQHlhaG9vLmNvbQogLlNoIEJV R1MKSW5kZXg6IGJsdWV0b290aC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJsdWV0b290aC5jCShyZXZpc2lv biAxODk0MTQpCisrKyBibHVldG9vdGguYwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDkgQEAK IC8qCiAgKiBibHVldG9vdGguYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzIE1ha3Np bSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgorICovCisKKy8qLQorICogQ29weXJp Z2h0IChjKSAyMDAxLTIwMDkgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+ CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApJbmRleDogYmx1ZXRv b3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gYmx1ZXRvb3RoLmgJKHJldmlzaW9uIDE4OTQxNCkKKysrIGJs dWV0b290aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsOSBAQAogLyoKICAqIGJsdWV0b290 aC5oCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMgTWFrc2ltIFlldm1lbmtpbiA8bV9l dm1lbmtpbkB5YWhvby5jb20+CisgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAw OSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCByaWdodHMg cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSw5ICszNywxMiBAQAogI2luY2x1ZGUg PHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9iaXRzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMv ZW5kaWFuLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o PgogI2luY2x1ZGUgPHN5cy91bi5oPgorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8bmV0 ZGIuaD4KKyNpbmNsdWRlIDxuZXRncmFwaC9uZ19tZXNzYWdlLmg+CiAjaW5jbHVkZSA8bmV0Z3Jh cGgvYmx1ZXRvb3RoL2luY2x1ZGUvbmdfaGNpLmg+CiAjaW5jbHVkZSA8bmV0Z3JhcGgvYmx1ZXRv b3RoL2luY2x1ZGUvbmdfbDJjYXAuaD4KICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5j bHVkZS9uZ19idHNvY2tldC5oPgpAQCAtNzIsNiArNzcsNjMgQEAKIGNoYXIgY29uc3QgKiAgICAg IGJ0X250b2EgICAgICAgICAgICAgKGJkYWRkcl90IGNvbnN0ICpiYSwgY2hhciAqc3RyKTsKIGlu dCAgICAgICAgICAgICAgIGJ0X2F0b24gICAgICAgICAgICAgKGNoYXIgY29uc3QgKnN0ciwgYmRh ZGRyX3QgKmJhKTsKIAorLyogYnRfZGV2WFhYWCgpIGZ1bmN0aW9ucyAoaW5zcGlyZWQgYnkgTmV0 QlNEKSAqLworaW50ICAgICAgICAgICAgICAgYnRfZGV2YWRkciAgICAgICAgICAoY2hhciBjb25z dCAqZGV2bmFtZSwgYmRhZGRyX3QgKmFkZHIpOworaW50ICAgICAgICAgICAgICAgYnRfZGV2bmFt ZSAgICAgICAgICAoY2hhciAqZGV2bmFtZSwgYmRhZGRyX3QgY29uc3QgKmFkZHIpOworCisvKiAK KyAqIEJsdWV0b290aCBIQ0kgZnVuY3Rpb25zCisgKi8KKworI2RlZmluZQlIQ0lfREVWTUFYCQkJ MzIJCS8qIGFyYml0cmFyeSAqLworI2RlZmluZQlIQ0lfREVWTkFNRV9TSVpFCQlOR19OT0RFU0la CisjZGVmaW5lCUhDSV9ERVZGRUFUVVJFU19TSVpFCQlOR19IQ0lfRkVBVFVSRVNfU0laRQorCitz dHJ1Y3QgYnRfZGV2aW5mbworeworCWNoYXIJCWRldm5hbWVbSENJX0RFVk5BTUVfU0laRV07CisK Kwl1aW50MzJfdAlzdGF0ZTsJCS8qIGRldmljZS9pbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyAqLwor CisJYmRhZGRyX3QJYmRhZGRyOworCXVpbnQxNl90CV9yZXNlcnZlZDA7CisKKwl1aW50OF90CQlm ZWF0dXJlc1tIQ0lfREVWRkVBVFVSRVNfU0laRV07CisKKwkvKiBidWZmZXIgaW5mbyAqLworCXVp bnQxNl90CV9yZXNlcnZlZDE7CisJdWludDE2X3QJY21kX2ZyZWU7CisJdWludDE2X3QJc2NvX3Np emU7CisJdWludDE2X3QJc2NvX3BrdHM7CisJdWludDE2X3QJc2NvX2ZyZWU7CisJdWludDE2X3QJ YWNsX3NpemU7CisJdWludDE2X3QJYWNsX3BrdHM7CisJdWludDE2X3QJYWNsX2ZyZWU7CisKKwkv KiBzdGF0cyAqLworCXVpbnQzMl90CWNtZF9zZW50OworCXVpbnQzMl90CWV2bnRfcmVjdjsKKwl1 aW50MzJfdAlhY2xfcmVjdjsKKwl1aW50MzJfdAlhY2xfc2VudDsKKwl1aW50MzJfdAlzY29fcmVj djsKKwl1aW50MzJfdAlzY29fc2VudDsKKwl1aW50MzJfdAlieXRlc19yZWN2OworCXVpbnQzMl90 CWJ5dGVzX3NlbnQ7CisKKwkvKiBtaXNjL3NwZWNpZmljICovCisJdWludDE2X3QJbGlua19wb2xp Y3lfaW5mbzsKKwl1aW50MTZfdAlwYWNrZXRfdHlwZV9pbmZvOworCXVpbnQxNl90CXJvbGVfc3dp dGNoX2luZm87CisJdWludDE2X3QJZGVidWc7CisKKwl1aW50OF90CQlfcGFkZGluZ1syMF07CS8q IGxlYXZlIHNwYWNlIGZvciBmdXR1cmUgYWRkaXRpb25zICovCit9OworCit0eXBlZGVmIGludAko YnRfZGV2ZW51bV9jYl90KShpbnQsIHN0cnVjdCBidF9kZXZpbmZvIGNvbnN0ICosIHZvaWQgKik7 CisKK2ludAkJYnRfZGV2aW5mbyAoc3RydWN0IGJ0X2RldmluZm8gKmRpKTsKK2ludAkJYnRfZGV2 ZW51bSAoYnRfZGV2ZW51bV9jYl90ICpjYiwgdm9pZCAqYXJnKTsKKwogLyoKICAqIGJkYWRkciB1 dGlsaXR5IGZ1bmN0aW9ucyAoZnJvbSBOZXRCU0QpCiAgKi8KSW5kZXg6IE1ha2VmaWxlCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIE1ha2VmaWxlCShyZXZpc2lvbiAxODk0MTQpCisrKyBNYWtlZmlsZQkod29ya2lu ZyBjb3B5KQpAQCAtOSw3ICs5LDcgQEAKIAogU0hMSUJfTUFKT1I9CTMKIAotU1JDUz0JCWJsdWV0 b290aC5jCitTUkNTPQkJYmx1ZXRvb3RoLmMgZGV2LmMgaGNpLmMKIElOQ1M9CQlibHVldG9vdGgu aAogCiBNTElOS1MrPQlibHVldG9vdGguMyBidF9nZXRob3N0YnluYW1lLjMKQEAgLTI3LDYgKzI3 LDEyIEBACiBNTElOS1MrPQlibHVldG9vdGguMyBidF9udG9hLjMKIE1MSU5LUys9CWJsdWV0b290 aC4zIGJ0X2F0b24uMwogCitNTElOS1MrPQlibHVldG9vdGguMyBidF9kZXZhZGRyLjMKK01MSU5L Uys9CWJsdWV0b290aC4zIGJ0X2Rldm5hbWUuMworCitNTElOS1MrPQlibHVldG9vdGguMyBidF9k ZXZpbmZvLjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmVudW0uMworCiBNTElOS1MrPQli bHVldG9vdGguMyBiZGFkZHJfc2FtZS4zCiBNTElOS1MrPQlibHVldG9vdGguMyBiZGFkZHJfYW55 LjMKIE1MSU5LUys9CWJsdWV0b290aC4zIGJkYWRkcl9jb3B5LjMK --00504502c8e6d17e0904646720df--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70903051500j70837feo659b22dba44428fe>