Date: Thu, 5 Mar 2009 11:03:36 -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: <bb4a86c70903051103q8937592sb117db281b20705f@mail.gmail.com> In-Reply-To: <1234605178.990729.799.nullmailer@galant.ukfsn.org> References: <1233365217.00068654.1233354838@10.7.7.3> <4988EBAC.3080202@mavhome.dp.ua> <bb4a86c70902031731q83bf261s49e5812a3c208f81@mail.gmail.com> <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>
next in thread | previous in thread | raw e-mail | index | archive | help
--000e0cd17ea8558850046463d37d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Iain & All, On Sat, Feb 14, 2009 at 1:52 AM, Iain Hibbert <plunky@rya-online.net> wrote: > On Fri, 13 Feb 2009, Maksim Yevmenkin wrote: > >> i kinda started to work on hci/bluetooth shims. please take a look at >> the attached patch. this is basically to implement bt_devname() and >> bt_devaddr() similar to netbsd and i also added bt_hci_devinfo() and >> bt_hci_devenum() inspired by linux-bluez. > > some quick comments as I'm on battery and ENOTIME > > - I think it should lose the "_hci" part of the name :) sure :) > - count = bt_devenum(cb, arg) > > no limits in API (no objection to underlying implementation limit :) > the callback can signal, if it has seen enough. > (could allow callback=NULL to just count the devices) well, i'm kinda torn about it, but i guess its ok. i will just set internal limit to "reasonable" size :) > - len = bt_devinfo(name, buffer, sizeof(buffer)) > > the calling program gives buffer and size, allowing the devinfo to > be extended later without breaking ABI. actually, i'd rather add some padding to the devinfo structure. > len == 0 means not found > also, reserved slots in the structure become unnecessary, let the > compiler handle padding. i'd like to keep them. i prefer to have "hole" filled with something so it can be reused later if needed. > (size and name could be passed in devinfo?) sure, i agree to pass name in devinfo > (is variable size struct perhaps too ugly to handle? what about > 'version' field?) probably too much. please take a look at the attached patch and let me know what do you think. thanks, max --000e0cd17ea8558850046463d37d 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_frxt2lmh0 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 X3QgKmEiCkBAIC0xOTcsNiArMjA3LDExOCBAQAogSWYgbm8gYnVmZmVyIHdhcyBwcm92aWRlZCB0 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 ZGV2ZW51bQorZnVuY3Rpb24gZW51bWVyYXRlcyB1cCB0bworLkR2IEhDSV9ERVZNQVgKK0JsdWV0 b290aCBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbS4KK0ZvciBldmVyeSBkZXZpY2UgZm91 bmQsCit0aGUgZnVuY3Rpb24gd2lsbCBjYWxsIHByb3ZpZGVkCisuRmEgY2IKK2NhbGxiYWNrIGZ1 bmN0aW9uIHdoaWNoIHNob3VsZCBiZSBvZgorLlZ0IGJ0X2RldmVudW1fY2JfdAordHlwZS4KK1Ro ZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBwYXNzZWQgYSBjb25uZWN0ZWQKKy5EdiBIQ0kKK3NvY2tl dAorLkZhIHMgLAorZnVsbHkgcG9wdWxhdGVkCisuVnQgYnRfZGV2aW5mbworc3RydWN0dXJlCisu RmEgZGkKK2FuZAorLkZhIGFyZworYXJndW1lbnQgcHJvdmlkZWQgdG8gdGhlCisuRm4gYnRfZGV2 ZW51bSAuCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIHN0b3AgZW51bWVyYXRpb24gYnkgcmV0 dXJuaW5nIGEgdmFsdWUKK3RoYXQgaXMgZ3JlYXRlciB0aGFuIHplcm8uCitUaGUKKy5GbiBidF9k ZXZlbnVtCit1c2VzIHRoZSBzYW1lIHNvY2tldCBmb3IgdGhlIGR1cmF0aW9uIG9mIGVudW1lcmF0 aW9uLgorVGhlIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCB0aGUgc29ja2V0LAorcGFzc2VkIHRv IHRoZSBjYWxsYmFjayBmdW5jdGlvbiwKK3dpbGwgYmUgYm91bmQgYW5kIGNvbm5lY3RlZCB0byB0 aGUgQmx1ZXRvb3RoIGRldmljZSBiZWluZyBlbnVtZXJhdGVkLgorVGhlIGZ1bmN0aW9uIHJldHVy bnMgbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSBlbnVtZXJhdGVkIGRldmljZXMsCitvdGhlcndpc2Ug LTEuCisuUHAKK1RoZQogLkZuIGJkYWRkcl9zYW1lICwKIC5GbiBiZGFkZHJfYW55CiBhbmQKQEAg LTI4Nyw3ICs0MDksOCBAQAogLlhyIGdldHByb3RvYnludW1iZXIgMyAsCiAuWHIgaGVycm9yIDMg LAogLlhyIGluZXRfYXRvbiAzICwKLS5YciBpbmV0X250b2EgMworLlhyIGluZXRfbnRvYSAzICwK Ky5YciBuZ19oY2kgNAogLlNoIENBVkVBVAogVGhlCiAuRm4gYnRfZ2V0aG9zdGVudApJbmRleDog Ymx1ZXRvb3RoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmx1ZXRvb3RoLmMJKHJldmlzaW9uIDE4OTQxNCkK KysrIGJsdWV0b290aC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsOSBAQAogLyoKICAqIGJs dWV0b290aC5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMgTWFrc2ltIFlldm1lbmtp biA8bV9ldm1lbmtpbkB5YWhvby5jb20+CisgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIw MDEtMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkluZGV4OiBibHVldG9vdGguaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBibHVldG9vdGguaAkocmV2aXNpb24gMTg5NDE0KQorKysgYmx1ZXRvb3RoLmgJ KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw5IEBACiAvKgogICogYmx1ZXRvb3RoLmgKLSAqCi0g KiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlh aG9vLmNvbT4KKyAqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA5IE1ha3NpbSBZ ZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM1LDkgKzM3LDEyIEBACiAjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CiAjaW5jbHVkZSA8c3lzL2JpdHN0cmluZy5oPgogI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4K KyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVk ZSA8c3lzL3VuLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxuZXRkYi5oPgorI2lu Y2x1ZGUgPG5ldGdyYXBoL25nX21lc3NhZ2UuaD4KICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9v dGgvaW5jbHVkZS9uZ19oY2kuaD4KICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVk ZS9uZ19sMmNhcC5oPgogI2luY2x1ZGUgPG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2J0 c29ja2V0Lmg+CkBAIC03Miw2ICs3Nyw2MyBAQAogY2hhciBjb25zdCAqICAgICAgYnRfbnRvYSAg ICAgICAgICAgICAoYmRhZGRyX3QgY29uc3QgKmJhLCBjaGFyICpzdHIpOwogaW50ICAgICAgICAg ICAgICAgYnRfYXRvbiAgICAgICAgICAgICAoY2hhciBjb25zdCAqc3RyLCBiZGFkZHJfdCAqYmEp OwogCisvKiBidF9kZXZYWFhYKCkgZnVuY3Rpb25zIChpbnNwaXJlZCBieSBOZXRCU0QpICovCitp bnQgICAgICAgICAgICAgICBidF9kZXZhZGRyICAgICAgICAgIChjaGFyIGNvbnN0ICpkZXZuYW1l LCBiZGFkZHJfdCAqYWRkcik7CitpbnQgICAgICAgICAgICAgICBidF9kZXZuYW1lICAgICAgICAg IChjaGFyICpkZXZuYW1lLCBiZGFkZHJfdCBjb25zdCAqYWRkcik7CisKKy8qIAorICogQmx1ZXRv b3RoIEhDSSBmdW5jdGlvbnMKKyAqLworCisjZGVmaW5lCUhDSV9ERVZNQVgJCQkzMgkJLyogYXJi aXRyYXJ5ICovCisjZGVmaW5lCUhDSV9ERVZOQU1FX1NJWkUJCU5HX05PREVTSVoKKyNkZWZpbmUJ SENJX0RFVkZFQVRVUkVTX1NJWkUJCU5HX0hDSV9GRUFUVVJFU19TSVpFCisKK3N0cnVjdCBidF9k ZXZpbmZvCit7CisJY2hhcgkJZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworCXVpbnQzMl90 CXN0YXRlOworCisJYmRhZGRyX3QJYmRhZGRyOworCXVpbnQxNl90CV9yZXNlcnZlZDA7CisKKwl1 aW50OF90CQlmZWF0dXJlc1tIQ0lfREVWRkVBVFVSRVNfU0laRV07CisKKwkvKiBidWZmZXIgaW5m byAqLworCXVpbnQxNl90CV9yZXNlcnZlZDE7CisJdWludDE2X3QJY21kX2ZyZWU7CisJdWludDE2 X3QJc2NvX3NpemU7CisJdWludDE2X3QJc2NvX3BrdHM7CisJdWludDE2X3QJc2NvX2ZyZWU7CisJ dWludDE2X3QJYWNsX3NpemU7CisJdWludDE2X3QJYWNsX3BrdHM7CisJdWludDE2X3QJYWNsX2Zy ZWU7CisKKwkvKiBzdGF0cyAqLworCXVpbnQzMl90CWNtZF9zZW50OworCXVpbnQzMl90CWV2bnRf cmVjdjsKKwl1aW50MzJfdAlhY2xfcmVjdjsKKwl1aW50MzJfdAlhY2xfc2VudDsKKwl1aW50MzJf dAlzY29fcmVjdjsKKwl1aW50MzJfdAlzY29fc2VudDsKKwl1aW50MzJfdAlieXRlc19yZWN2Owor CXVpbnQzMl90CWJ5dGVzX3NlbnQ7CisKKwkvKiBtaXNjL3NwZWNpZmljICovCisJdWludDE2X3QJ bGlua19wb2xpY3lfaW5mbzsKKwl1aW50MTZfdAlwYWNrZXRfdHlwZV9pbmZvOworCXVpbnQxNl90 CXJvbGVfc3dpdGNoX2luZm87CisJdWludDE2X3QJZGVidWc7CisKKwl1aW50OF90CQlfcGFkZGlu Z1syMF07CS8qIG1ha2UgaXQgMTI4IGJ5dGVzIGluIHNpemUgKi8KK307CisKK3R5cGVkZWYgaW50 CShidF9kZXZlbnVtX2NiX3QpKGludCwgc3RydWN0IGJ0X2RldmluZm8gY29uc3QgKiwgdm9pZCAq KTsKKworaW50CQlidF9kZXZpbmZvIChzdHJ1Y3QgYnRfZGV2aW5mbyAqZGkpOworaW50CQlidF9k ZXZlbnVtIChidF9kZXZlbnVtX2NiX3QgKmNiLCB2b2lkICphcmcpOworCiAvKgogICogYmRhZGRy IHV0aWxpdHkgZnVuY3Rpb25zIChmcm9tIE5ldEJTRCkKICAqLwpJbmRleDogTWFrZWZpbGUKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gTWFrZWZpbGUJKHJldmlzaW9uIDE4OTQxNCkKKysrIE1ha2VmaWxlCSh3b3Jr aW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQAogCiBTSExJQl9NQUpPUj0JMwogCi1TUkNTPQkJYmx1 ZXRvb3RoLmMKK1NSQ1M9CQlibHVldG9vdGguYyBkZXYuYyBoY2kuYwogSU5DUz0JCWJsdWV0b290 aC5oCiAKIE1MSU5LUys9CWJsdWV0b290aC4zIGJ0X2dldGhvc3RieW5hbWUuMwpAQCAtMjcsNiAr MjcsMTIgQEAKIE1MSU5LUys9CWJsdWV0b290aC4zIGJ0X250b2EuMwogTUxJTktTKz0JYmx1ZXRv b3RoLjMgYnRfYXRvbi4zCiAKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmFkZHIuMworTUxJ TktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2bmFtZS4zCisKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0 X2RldmluZm8uMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZW51bS4zCisKIE1MSU5LUys9 CWJsdWV0b290aC4zIGJkYWRkcl9zYW1lLjMKIE1MSU5LUys9CWJsdWV0b290aC4zIGJkYWRkcl9h bnkuMwogTUxJTktTKz0JYmx1ZXRvb3RoLjMgYmRhZGRyX2NvcHkuMwo= --000e0cd17ea8558850046463d37d--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70903051103q8937592sb117db281b20705f>
