From owner-freebsd-bluetooth@FreeBSD.ORG Mon May 25 12:48:07 2009 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A297106566C for ; Mon, 25 May 2009 12:48:07 +0000 (UTC) (envelope-from plunky@rya-online.net) Received: from smtp02.one2one.net (smtp02.one2one.net [149.254.192.174]) by mx1.freebsd.org (Postfix) with ESMTP id C78208FC0C for ; Mon, 25 May 2009 12:48:06 +0000 (UTC) (envelope-from plunky@rya-online.net) Received: from [127.0.0.1] (helo=localhost) by localhost.t-mobile.co.uk with esmtp (Exim 4.50) id 1M8Zaz-0004pn-HK; Mon, 25 May 2009 12:48:01 +0000 Received: from localhost.t-mobile.co.uk ([127.0.0.1]) by localhost (smtpbeckt01 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 18256-06; Mon, 25 May 2009 13:48:00 +0100 (BST) Received: from [10.214.136.20] (helo=rya-online.net) by localhost.t-mobile.co.uk with smtp (Exim 4.50) id 1M8Zai-0004ph-Fu; Mon, 25 May 2009 12:48:00 +0000 Received: (nullmailer pid 7338 invoked by uid 1000); Mon, 25 May 2009 12:47:06 -0000 Date: Mon, 25 May 2009 13:47:06 +0100 (BST) To: Boris Samorodov In-Reply-To: <45283323@srv.sem.ipt.ru> References: <20070816105005.GA24403@harmless.hu> <20070817113053.GA61263@harmless.hu> <20070818133634.GA1448@harmless.hu> <20070902193327.15488.qmail@stuge.se> <45283323@srv.sem.ipt.ru> User-Agent: Alpine 2.00 (NEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1972968182-1243255626=:27920" Message-Id: <1243255626.298740.6650.nullmailer@galant.ukfsn.org> From: Iain Hibbert X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at example.com X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: plunky@rya-online.net X-SA-Exim-Scanned: No (on localhost.t-mobile.co.uk); SAEximRunCond expanded to false Cc: freebsd-bluetooth@freebsd.org Subject: Re: FBSD bt gammu X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2009 12:48:07 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-1972968182-1243255626=:27920 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 6 Sep 2007, Boris Samorodov wrote: > On Wed, 5 Sep 2007 09:56:26 -0700 Maksim Yevmenkin wrote: > > > please modify cmake scripts so it can properly detect bluetooth on freebsd > > Michal incorporated all FreeBSD patches to svn version. All bluetooth > functions except channel searching (switched off for FreeBSD) should > work fine. > > Those who are interested may test it and give a feedback. > Those who are interested may look into channel searching problem and > produce patches. ;-) Hi Boris, This was some time ago but I have just rewritten the FBSD support in gammu to be generic BSD support and implemented channel searching using the new device access (already in FreeBSD) and service discovery (which Max is working on porting) routines. I wonder if you can validate that my work doesn't cause any regressions on FreeBSD? The attached patch adds cmake/FindBSDBluetooth.cmake libgammu/device/bluetoth/blue_bsd.c libgammu/device/bluetoth/blue_bsd.h and converts the build to use those files instead of the 'fbsd' versions, which can be removed, and the cmake framework will enable the channel searching if the new API is present. I'm not quite ready to commit the bt_dev stuff into NetBSD but will push this upstream after we have all caught up. I'm not sure if it will be worth putting the patches into ports or not, will leave that up to you. iain --0-1972968182-1243255626=:27920 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=gammu-diff.txt Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: update FBSD to BSD support Content-Disposition: attachment; filename=gammu-diff.txt ZGlmZiAtTnJ1IG9yaWcvZ2FtbXUtMS4yNC4wL0NNYWtlTGlzdHMudHh0IGdh bW11LTEuMjQuMC9DTWFrZUxpc3RzLnR4dA0KLS0tIG9yaWcvZ2FtbXUtMS4y NC4wL0NNYWtlTGlzdHMudHh0CTIwMDktMDQtMTUgMTQ6Mzk6NTQuMDAwMDAw MDAwICswMTAwDQorKysgZ2FtbXUtMS4yNC4wL0NNYWtlTGlzdHMudHh0CTIw MDktMDUtMjUgMTM6MDQ6MzYuMDAwMDAwMDAwICswMTAwDQpAQCAtMjcwLDEy ICsyNzAsMTIgQEANCiAgICAgICAgICAgICBzZXQoQkxVRVRPT1RIX1NFQVJD SCBUUlVFKQ0KICAgICAgICAgICAgIG1lc3NhZ2UoU1RBVFVTICJVc2luZyBC bHVlWiBzdGFjayIpDQogICAgICAgICBlbmRpZiAoQkxVRVpfRk9VTkQpDQot ICAgICAgICBmaW5kX3BhY2thZ2UgKEZCU0RCbHVldG9vdGgpDQotICAgICAg ICBpZiAoRkJTRF9CTFVFX0ZPVU5EKQ0KKyAgICAgICAgZmluZF9wYWNrYWdl IChCU0RCbHVldG9vdGgpDQorICAgICAgICBpZiAoQlNEX0JMVUVfRk9VTkQp DQogICAgICAgICAgICAgc2V0KEJMVUVUT09USF9GT1VORCBPTikNCi0gICAg ICAgICAgICBzZXQoQkxVRVRPT1RIX1NFQVJDSCBGQUxTRSkNCi0gICAgICAg ICAgICBtZXNzYWdlKFNUQVRVUyAiVXNpbmcgRnJlZUJTRCBCbHVldG9vdGgg c3RhY2siKQ0KLSAgICAgICAgZW5kaWYgKEZCU0RfQkxVRV9GT1VORCkNCisJ ICAgIGNoZWNrX2xpYnJhcnlfZXhpc3RzKGJsdWV0b290aCBzZHBfc2Vydmlj ZV9zZWFyY2hfYXR0cmlidXRlICIiIEJMVUVUT09USF9TRUFSQ0gpDQorICAg ICAgICAgICAgbWVzc2FnZShTVEFUVVMgIlVzaW5nIEJTRCBCbHVldG9vdGgg c3RhY2siKQ0KKyAgICAgICAgZW5kaWYgKEJTRF9CTFVFX0ZPVU5EKQ0KICAg ICAgICAgZmluZF9wYWNrYWdlIChPU1hCbHVldG9vdGgpDQogICAgICAgICBp ZiAoT1NYX0JMVUVfRk9VTkQpDQogICAgICAgICAgICAgc2V0KEJMVUVUT09U SF9GT1VORCBPTikNCkBAIC0zNjAsMTEgKzM2MCwxMSBAQA0KICAgICBlbmRp ZiAoTk9UICIke0JMVUVaX0xJQlJBUklFU30iIFNUUkVRVUFMICIiKQ0KIGVu ZGlmIChCTFVFWl9GT1VORCkNCiANCi1pZiAoRkJTRF9CTFVFX0ZPVU5EKQ0K LSAgICBpZiAoTk9UICIke0ZCU0RfQkxVRV9MSUJSQVJJRVN9IiBTVFJFUVVB TCAiIikNCi0gICAgICAgIHNldCAoR0FNTVVfTElCUyAiJHtHQU1NVV9MSUJT fSAtbCR7RkJTRF9CTFVFX0xJQlJBUklFU30iKQ0KLSAgICBlbmRpZiAoTk9U ICIke0ZCU0RfQkxVRV9MSUJSQVJJRVN9IiBTVFJFUVVBTCAiIikNCi1lbmRp ZiAoRkJTRF9CTFVFX0ZPVU5EKQ0KK2lmIChCU0RfQkxVRV9GT1VORCkNCisg ICAgaWYgKE5PVCAiJHtCU0RfQkxVRV9MSUJSQVJJRVN9IiBTVFJFUVVBTCAi IikNCisgICAgICAgIHNldCAoR0FNTVVfTElCUyAiJHtHQU1NVV9MSUJTfSAt bCR7QlNEX0JMVUVfTElCUkFSSUVTfSIpDQorICAgIGVuZGlmIChOT1QgIiR7 QlNEX0JMVUVfTElCUkFSSUVTfSIgU1RSRVFVQUwgIiIpDQorZW5kaWYgKEJT RF9CTFVFX0ZPVU5EKQ0KIA0KIGlmIChJQ09OVl9GT1VORCkNCiAgICAgaWYg KE5PVCAiJHtJQ09OVl9MSUJSQVJJRVN9IiBTVFJFUVVBTCAiIikNCmRpZmYg LU5ydSBvcmlnL2dhbW11LTEuMjQuMC9jbWFrZS9GaW5kQlNEQmx1ZXRvb3Ro LmNtYWtlIGdhbW11LTEuMjQuMC9jbWFrZS9GaW5kQlNEQmx1ZXRvb3RoLmNt YWtlDQotLS0gb3JpZy9nYW1tdS0xLjI0LjAvY21ha2UvRmluZEJTREJsdWV0 b290aC5jbWFrZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEw MA0KKysrIGdhbW11LTEuMjQuMC9jbWFrZS9GaW5kQlNEQmx1ZXRvb3RoLmNt YWtlCTIwMDktMDUtMjIgMDk6NDg6MjYuMDAwMDAwMDAwICswMTAwDQpAQCAt MCwwICsxLDM1IEBADQorIyAtIEZpbmRzIEJsdWV0b290aCBsaWJyYXJ5IG9u IEJTRA0KKyMgVGhpcyBtb2R1bGUgZGVmaW5lcw0KKyMgIEJTRF9CTFVFX0lO Q0xVREVfRElSLCB3aGVyZSB0byBmaW5kIGJsdWV0b290aC5oDQorIyAgQlNE X0JMVUVfTElCUkFSSUVTLCB0aGUgbGlicmFyaWVzIG5lZWRlZCB0byB1c2Ug QlNEIEJsdWV0b290aC4NCisjICBCU0RfQkxVRV9GT1VORCwgSWYgZmFsc2Us IGRvIG5vdCB0cnkgdG8gdXNlIEJTRCBCbHVldG9vdGguDQorIw0KKyMgQ29w eXJpZ2h0IChjKSAyMDA3LCBNaWNoYWwgQ2loYXIsIDxtaWNoYWxAY2loYXIu Y29tPg0KKyMNCisjIHZpbTogZXhwYW5kdGFiIHN3PTQgdHM9NCBzdHM9NDoN CisNCitpZiAoTk9UIERFRklORUQgQlNEX0JMVUVfRk9VTkQpDQorICAgIGlm IChOT1QgQ1JPU1NfTUlOR1cpDQorICAgICAgICBmaW5kX3BhdGgoQlNEX0JM VUVfSU5DTFVERV9ESVIgTkFNRVMgYmx1ZXRvb3RoLmgNCisgICAgICAgICAg IFBBVEhTDQorICAgICAgICAgICAvdXNyL2luY2x1ZGUNCisgICAgICAgICAg IC91c3IvbG9jYWwvaW5jbHVkZQ0KKyAgICAgICAgKQ0KKw0KKyAgICAgICAg ZmluZF9saWJyYXJ5KEJTRF9CTFVFX0xJQlJBUklFUyBOQU1FUyBibHVldG9v dGgNCisgICAgICAgICAgIFBBVEhTDQorICAgICAgICAgICAvdXNyL2xpYg0K KyAgICAgICAgICAgL3Vzci9sb2NhbC9saWINCisgICAgICAgICkNCisNCisg ICAgICAgIGlmKEJTRF9CTFVFX0lOQ0xVREVfRElSIEFORCBCU0RfQkxVRV9M SUJSQVJJRVMpDQorICAgICAgICAgICBzZXQoQlNEX0JMVUVfRk9VTkQgVFJV RSBDQUNIRSBJTlRFUk5BTCAiQlNEIEJsdWV0b290aCBmb3VuZCIpDQorICAg ICAgICAgICBtZXNzYWdlKFNUQVRVUyAiRm91bmQgQlNEIEJsdWV0b290aDog JHtCU0RfQkxVRV9JTkNMVURFX0RJUn0sICR7QlNEX0JMVUVfTElCUkFSSUVT fSIpDQorICAgICAgICBlbHNlKEJTRF9CTFVFX0lOQ0xVREVfRElSIEFORCBC U0RfQkxVRV9MSUJSQVJJRVMpDQorICAgICAgICAgICBzZXQoQlNEX0JMVUVf Rk9VTkQgRkFMU0UgQ0FDSEUgSU5URVJOQUwgIkJTRCBCbHVldG9vdGggZm91 bmQiKQ0KKyAgICAgICAgICAgbWVzc2FnZShTVEFUVVMgIkJTRCBCbHVldG9v dGggbm90IGZvdW5kLiIpDQorICAgICAgICBlbmRpZihCU0RfQkxVRV9JTkNM VURFX0RJUiBBTkQgQlNEX0JMVUVfTElCUkFSSUVTKQ0KKw0KKyAgICAgICAg bWFya19hc19hZHZhbmNlZChCU0RfQkxVRV9JTkNMVURFX0RJUiBCU0RfQkxV RV9MSUJSQVJJRVMpDQorICAgIGVuZGlmIChOT1QgQ1JPU1NfTUlOR1cpDQor ZW5kaWYgKE5PVCBERUZJTkVEIEJTRF9CTFVFX0ZPVU5EKQ0KZGlmZiAtTnJ1 IG9yaWcvZ2FtbXUtMS4yNC4wL2NtYWtlL3RlbXBsYXRlcy9nYW1tdS1jb25m aWcuaC5jbWFrZSBnYW1tdS0xLjI0LjAvY21ha2UvdGVtcGxhdGVzL2dhbW11 LWNvbmZpZy5oLmNtYWtlDQotLS0gb3JpZy9nYW1tdS0xLjI0LjAvY21ha2Uv dGVtcGxhdGVzL2dhbW11LWNvbmZpZy5oLmNtYWtlCTIwMDktMDMtMTcgMTU6 MDE6MTEuMDAwMDAwMDAwICswMDAwDQorKysgZ2FtbXUtMS4yNC4wL2NtYWtl L3RlbXBsYXRlcy9nYW1tdS1jb25maWcuaC5jbWFrZQkyMDA5LTA1LTIyIDA5 OjQ5OjI4LjAwMDAwMDAwMCArMDEwMA0KQEAgLTMyMiw4ICszMjIsOCBAQA0K IC8qIERvIHdlIGhhdmUgbGlidXNiLTEuMCA/ICovDQogI2NtYWtlZGVmaW5l IExJQlVTQl9GT1VORA0KIA0KLS8qIFdpbGwgYmUgdXNlZCBGcmVlQlNEIEJs dWV0b290aCBzdGFjayA/ICovDQotI2NtYWtlZGVmaW5lIEZCU0RfQkxVRV9G T1VORA0KKy8qIFdpbGwgYmUgdXNlZCBCU0QgQmx1ZXRvb3RoIHN0YWNrID8g Ki8NCisjY21ha2VkZWZpbmUgQlNEX0JMVUVfRk9VTkQNCiANCiAvKiBXaWxs IGJlIHVzZWQgT1NYIEJsdWV0b290aCBzdGFjayA/ICovDQogI2NtYWtlZGVm aW5lIE9TWF9CTFVFX0ZPVU5EDQpkaWZmIC1OcnUgb3JpZy9nYW1tdS0xLjI0 LjAvbGliZ2FtbXUvQ01ha2VMaXN0cy50eHQgZ2FtbXUtMS4yNC4wL2xpYmdh bW11L0NNYWtlTGlzdHMudHh0DQotLS0gb3JpZy9nYW1tdS0xLjI0LjAvbGli Z2FtbXUvQ01ha2VMaXN0cy50eHQJMjAwOS0wMy0xOCAwOToxNjozOC4wMDAw MDAwMDAgKzAwMDANCisrKyBnYW1tdS0xLjI0LjAvbGliZ2FtbXUvQ01ha2VM aXN0cy50eHQJMjAwOS0wNS0yMiAwOTo0NjoyMy4wMDAwMDAwMDAgKzAxMDAN CkBAIC03Niw5ICs3Niw5IEBADQogaWYgKExJQlVTQl9GT1VORCkNCiAgICAg bGlzdCAoQVBQRU5EIExJQlJBUllfU1JDIGRldmljZS91c2IvdXNiLmMpDQog ZW5kaWYgKExJQlVTQl9GT1VORCkNCi1pZiAoRkJTRF9CTFVFX0ZPVU5EKQ0K LSAgICBsaXN0IChBUFBFTkQgTElCUkFSWV9TUkMgZGV2aWNlL2JsdWV0b3Ro L2JsdWVfZmJzZC5jKQ0KLWVuZGlmIChGQlNEX0JMVUVfRk9VTkQpDQoraWYg KEJTRF9CTFVFX0ZPVU5EKQ0KKyAgICBsaXN0IChBUFBFTkQgTElCUkFSWV9T UkMgZGV2aWNlL2JsdWV0b3RoL2JsdWVfYnNkLmMpDQorZW5kaWYgKEJTRF9C TFVFX0ZPVU5EKQ0KIGlmIChPU1hfQkxVRV9GT1VORCkNCiAgICAgbGlzdCAo QVBQRU5EIExJQlJBUllfU1JDIGRldmljZS9ibHVldG90aC9ibHVlX29zeC5j KQ0KIGVuZGlmIChPU1hfQkxVRV9GT1VORCkNCkBAIC0xMjYsMTAgKzEyNiwx MCBAQA0KICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzICgke0xJQlVTQl9JTkNM VURFX0RJUn0pDQogZW5kaWYgKExJQlVTQl9GT1VORCkNCiANCi1pZiAoRkJT RF9CTFVFX0ZPVU5EKQ0KLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMgKGxp YkdhbW11ICR7RkJTRF9CTFVFX0xJQlJBUklFU30pDQotICAgIGluY2x1ZGVf ZGlyZWN0b3JpZXMgKCR7RkJTRF9CTFVFX0lOQ0xVREVfRElSfSkNCi1lbmRp ZiAoRkJTRF9CTFVFX0ZPVU5EKQ0KK2lmIChCU0RfQkxVRV9GT1VORCkNCisg ICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzIChsaWJHYW1tdSAke0JTRF9CTFVF X0xJQlJBUklFU30pDQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgKCR7QlNE X0JMVUVfSU5DTFVERV9ESVJ9KQ0KK2VuZGlmIChCU0RfQkxVRV9GT1VORCkN CiANCiBpZiAoT1NYX0JMVUVfRk9VTkQpDQogICAgIHRhcmdldF9saW5rX2xp YnJhcmllcyAobGliR2FtbXUgJHtPU1hfQkxVRV9MSUJTfSkNCmRpZmYgLU5y dSBvcmlnL2dhbW11LTEuMjQuMC9saWJnYW1tdS9kZXZpY2UvYmx1ZXRvdGgv Ymx1ZV9ic2QuYyBnYW1tdS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2JsdWV0 b3RoL2JsdWVfYnNkLmMNCi0tLSBvcmlnL2dhbW11LTEuMjQuMC9saWJnYW1t dS9kZXZpY2UvYmx1ZXRvdGgvYmx1ZV9ic2QuYwkxOTcwLTAxLTAxIDAxOjAw OjAwLjAwMDAwMDAwMCArMDEwMA0KKysrIGdhbW11LTEuMjQuMC9saWJnYW1t dS9kZXZpY2UvYmx1ZXRvdGgvYmx1ZV9ic2QuYwkyMDA5LTA1LTI1IDEzOjM3 OjQwLjAwMDAwMDAwMCArMDEwMA0KQEAgLTAsMCArMSwyNjUgQEANCisvKi0N CisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgSWFpbiBIaWJiZXJ0DQorICogQWxs IHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6 DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SDQor ICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUw0KKyAqIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuDQorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhF IEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0K KyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KKyAqIE5PVCBMSU1J VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkNCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorICogKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GDQorICogVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4NCisgKi8NCisNCisjaW5jbHVkZSAiLi4vLi4vZ3Ntc3RhdGUuaCINCisN CisjaWZkZWYgR1NNX0VOQUJMRV9CTFVFVE9PVEhERVZJQ0UNCisjaWZkZWYg QlNEX0JMVUVfRk9VTkQNCisNCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0K KyNpbmNsdWRlIDxzeXMvdGltZS5oPg0KKw0KKyNpbmNsdWRlIDxibHVldG9v dGguaD4NCisjaW5jbHVkZSA8ZXJybm8uaD4NCisjaW5jbHVkZSA8bmV0ZGIu aD4NCisjaW5jbHVkZSA8c2RwLmg+DQorI2luY2x1ZGUgPHN0ZGlvLmg+DQor I2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisj aW5jbHVkZSA8dW5pc3RkLmg+DQorDQorI2luY2x1ZGUgIi4uLy4uL2dzbWNv bW9uLmgiDQorI2luY2x1ZGUgIi4uL2RldmZ1bmMuaCINCisjaW5jbHVkZSAi Ymx1ZXRvdGguaCINCisNCisvKg0KKyAqIEhhbmRsZSBGcmVlQlNEIGNvbXBh dGliaWxpdHkNCisgKi8NCisjaWZuZGVmIEJUUFJPVE9fUkZDT01NDQorI2Rl ZmluZSBCVFBST1RPX1JGQ09NTQlCTFVFVE9PVEhfUFJPVE9fUkZDT01NDQor I2RlZmluZSBCREFERFJfQU5ZCU5HX0hDSV9CREFERFJfQU5ZDQorI2RlZmlu ZSBzb2NrYWRkcl9idAlzb2NrYWRkcl9yZmNvbW0NCisjZGVmaW5lIGJ0X2xl bgkJcmZjb21tX2xlbg0KKyNkZWZpbmUgYnRfZmFtaWx5CXJmY29tbV9mYW1p bHkNCisjZGVmaW5lIGJ0X2NoYW5uZWwJcmZjb21tX2NoYW5uZWwNCisjZGVm aW5lIGJ0X2JkYWRkcglyZmNvbW1fYmRhZGRyDQorI2VuZGlmDQorDQorc3Rh dGljIEdTTV9FcnJvciBibHVldG9vdGhfb3BlbihHU01fU3RhdGVNYWNoaW5l ICpzLCBiZGFkZHJfdCAqYmRhZGRyLCBpbnQgY2hhbm5lbCkNCit7DQorCUdT TV9EZXZpY2VfQmx1ZVRvb3RoRGF0YQkqZCA9ICZzLT5EZXZpY2UuRGF0YS5C bHVlVG9vdGg7DQorCXN0cnVjdCBzb2NrYWRkcl9idCAJCXNhOw0KKwlpbnQg CQkJCWZkOw0KKw0KKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc2EpKTsNCisJ c2EuYnRfbGVuID0gc2l6ZW9mKHNhKTsNCisJc2EuYnRfZmFtaWx5ID0gQUZf QkxVRVRPT1RIOw0KKw0KKwlzbXByaW50ZihzLCAiQ29ubmVjdGluZyB0byBS RiBjaGFubmVsICVpXG4iLCBjaGFubmVsKTsNCisNCisJZmQgPSBzb2NrZXQo UEZfQkxVRVRPT1RILCBTT0NLX1NUUkVBTSwgQlRQUk9UT19SRkNPTU0pOw0K KwlpZiAoZmQgPCAwKSB7DQorCQlzbXByaW50ZihzLCAiQ2FuJ3QgY3JlYXRl IHNvY2tldFxuIik7DQorCQlyZXR1cm4gRVJSX0RFVklDRU5PRFJJVkVSOw0K Kwl9DQorDQorCWJkYWRkcl9jb3B5KCZzYS5idF9iZGFkZHIsIEJEQUREUl9B TlkpOw0KKw0KKwlpZiAoYmluZChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZz YSwgc2l6ZW9mKHNhKSkgPCAwKSB7DQorCQlzbXByaW50ZihzLCAiQ2FuJ3Qg YmluZCBzb2NrZXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOw0KKwkJY2xv c2UoZmQpOw0KKwkJcmV0dXJuIEVSUl9ERVZJQ0VPUEVORVJST1I7DQorCX0N CisNCisJc2EuYnRfY2hhbm5lbCA9IGNoYW5uZWw7DQorCWJkYWRkcl9jb3B5 KCZzYS5idF9iZGFkZHIsIGJkYWRkcik7DQorDQorCWlmIChjb25uZWN0KGZk LCAoc3RydWN0IHNvY2thZGRyICopJnNhLCBzaXplb2Yoc2EpKSA8IDApIHsN CisJCXNtcHJpbnRmKHMsICJDYW4ndCBjb25uZWN0IHRvICVzOiAlc1xuIiwg YnRfbnRvYShiZGFkZHIsIE5VTEwpLCBzdHJlcnJvcihlcnJubykpOw0KKwkJ Y2xvc2UoZmQpOw0KKwkJcmV0dXJuIEVSUl9ERVZJQ0VPUEVORVJST1I7DQor CX0NCisNCisJZC0+aFBob25lID0gZmQ7DQorICAgIAlyZXR1cm4gRVJSX05P TkU7DQorfQ0KKw0KK0dTTV9FcnJvciBibHVldG9vdGhfY29ubmVjdChHU01f U3RhdGVNYWNoaW5lICpzLCBpbnQgcG9ydCwgY2hhciAqZGV2aWNlKQ0KK3sN CisJYmRhZGRyX3QJYmRhZGRyOw0KKwlzdHJ1Y3QgaG9zdGVudCAqaGUgPSBO VUxMOw0KKw0KKwlpZiAoIWJ0X2F0b24oZGV2aWNlLCAmYmRhZGRyKSkgew0K KwkJaWYgKChoZSA9IGJ0X2dldGhvc3RieW5hbWUoZGV2aWNlKSkgPT0gTlVM TCkgew0KKwkJCXNtcHJpbnRmKHMsICIlczogJXNcbiIsIGRldmljZSwgaHN0 cmVycm9yKGhfZXJybm8pKTsNCisJCQlyZXR1cm4gRVJSX1VOS05PV047DQor CQl9DQorDQorCQliZGFkZHJfY29weSgmYmRhZGRyLCAoYmRhZGRyX3QgKilo ZS0+aF9hZGRyKTsNCisJfQ0KKw0KKwlyZXR1cm4gYmx1ZXRvb3RoX29wZW4o cywgJmJkYWRkciwgcG9ydCk7DQorfQ0KKw0KKyNpZmRlZiBCTFVFVE9PVEhf UkZfU0VBUkNISU5HDQorDQorc3RhdGljIGludCBibHVldG9vdGhfY2hhbm5l bChzZHBfZGF0YV90ICp2YWx1ZSkNCit7DQorCXNkcF9kYXRhX3QJcGRsLCBz ZXE7DQorCXVpbnRtYXhfdAljaGFubmVsOw0KKw0KKwlzZHBfZ2V0X2FsdCh2 YWx1ZSwgdmFsdWUpOwkvKiBzdHJpcCBhbnkgYWx0IGNvbnRhaW5lciAqLw0K Kw0KKwl3aGlsZSAoc2RwX2dldF9zZXEodmFsdWUsICZwZGwpKSB7DQorCQlp ZiAoc2RwX2dldF9zZXEoJnBkbCwgJnNlcSkNCisJCSAgICAmJiBzZHBfbWF0 Y2hfdXVpZDE2KCZzZXEsIFNEUF9VVUlEX1BST1RPQ09MX0wyQ0FQKQ0KKwkJ ICAgICYmIHNkcF9nZXRfc2VxKCZwZGwsICZzZXEpDQorCQkgICAgJiYgc2Rw X21hdGNoX3V1aWQxNigmc2VxLCBTRFBfVVVJRF9QUk9UT0NPTF9SRkNPTU0p DQorCQkgICAgJiYgc2RwX2dldF91aW50KCZzZXEsICZjaGFubmVsKQ0KKwkJ ICAgICYmIGNoYW5uZWwgPj0gMSAmJiBjaGFubmVsIDw9IDMwKQ0KKwkJCXJl dHVybiBjaGFubmVsOw0KKwl9DQorDQorCXJldHVybiAtMTsNCit9DQorDQor c3RhdGljIGNoYXIgKmJsdWV0b290aF9zZXJ2aWNlKHNkcF9kYXRhX3QgKnZh bHVlKQ0KK3sNCisJY2hhcgkJKnN0cjsNCisJc2l6ZV90CQlsZW47DQorDQor CWlmICghc2RwX2dldF9zdHIodmFsdWUsICZzdHIsICZsZW4pKQ0KKwkJcmV0 dXJuIE5VTEw7DQorDQorCXJldHVybiBzdHJuZHVwKHN0ciwgbGVuKTsNCit9 DQorDQorc3RhdGljIEdTTV9FcnJvciBibHVldG9vdGhfc2VhcmNoKEdTTV9T dGF0ZU1hY2hpbmUgKnMsIGJkYWRkcl90ICpiZGFkZHIpDQorew0KKwlzZHBf ZGF0YV90CXJlYywgcnNwLCBzc3AsIHZhbHVlOw0KKwl1aW50OF90CQlidWZb M107DQorCXVpbnQxNl90CWF0dHI7DQorCXNkcF9zZXNzaW9uX3QJc3M7DQor CWludAkJY2gsIGNoYW5uZWwsIHNjLCBzY29yZTsNCisJY2hhcgkJKnN2Ow0K Kw0KKwlzbXByaW50ZihzLCAiU2VhcmNoaW5nIGZvciBzZXJ2aWNlcyBvbiAl c1xuIiwgYnRfbnRvYShiZGFkZHIsIE5VTEwpKTsNCisNCisJc3MgPSBzZHBf b3BlbihOVUxMLCBiZGFkZHIpOw0KKwlpZiAoc3MgPT0gTlVMTCkgew0KKwkJ c21wcmludGYocywgIlNEUCBDb25uZWN0aW9uIGZhaWxlZDogJXNcbiIsIHN0 cmVycm9yKGVycm5vKSk7DQorCQlyZXR1cm4gRVJSX1RJTUVPVVQ7DQorCX0N CisNCisJc3NwLm5leHQgPSBidWY7DQorCXNzcC5lbmQgPSBidWYgKyBzaXpl b2YoYnVmKTsNCisJc2RwX3B1dF91dWlkMTYoJnNzcCwgU0RQX1VVSURfUFJP VE9DT0xfUkZDT01NKTsNCisJc3NwLmVuZCA9IHNzcC5uZXh0Ow0KKwlzc3Au bmV4dCA9IGJ1ZjsNCisNCisJaWYgKCFzZHBfc2VydmljZV9zZWFyY2hfYXR0 cmlidXRlKHNzLCAmc3NwLCBOVUxMLCAmcnNwKSkgew0KKwkJc21wcmludGYo cywgIlNEUCBTZXJ2aWNlIFNlYXJjaCBBdHRyaWJ1dGUgZmFpbGVkOiAlc1xu Iiwgc3RyZXJyb3IoZXJybm8pKTsNCisJCXNkcF9jbG9zZShzcyk7DQorCQly ZXR1cm4gRVJSX1VOS05PV047DQorCX0NCisNCisJY2hhbm5lbCA9IC0xOw0K KwlzY29yZSA9IDA7DQorDQorCXdoaWxlIChzZHBfZ2V0X3NlcSgmcnNwLCAm cmVjKSkgew0KKwkJY2ggPSAtMTsNCisJCXN2ID0gTlVMTDsNCisNCisJCXdo aWxlIChzZHBfZ2V0X2F0dHIoJnJlYywgJmF0dHIsICZ2YWx1ZSkpIHsNCisJ CQlzd2l0Y2ggKGF0dHIpIHsNCisJCQljYXNlIFNEUF9BVFRSX1BST1RPQ09M X0RFU0NSSVBUT1JfTElTVDoNCisJCQkJY2ggPSBibHVldG9vdGhfY2hhbm5l bCgmdmFsdWUpOw0KKwkJCQlicmVhazsNCisNCisJCQljYXNlIFNEUF9BVFRS X1BSSU1BUllfTEFOR1VBR0VfQkFTRV9JRCArIFNEUF9BVFRSX1NFUlZJQ0Vf TkFNRV9PRkZTRVQ6DQorCQkJCXN2ID0gYmx1ZXRvb3RoX3NlcnZpY2UoJnZh bHVlKTsNCisJCQkJYnJlYWs7DQorDQorCQkJZGVmYXVsdDoNCisJCQkJYnJl YWs7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaWYgKGNoICE9IC0xKSB7DQorCQkJ c21wcmludGYocywgIiAgIENoYW5uZWwgJWkiLCBjaCk7DQorCQkJaWYgKHN2 ICE9IE5VTEwpIHsNCisJCQkJc2MgPSBibHVldG9vdGhfY2hlY2tzZXJ2aWNl bmFtZShzLCBzdik7DQorCQkJCXNtcHJpbnRmKHMsICIgLSBcIiVzXCIgKHNj b3JlPSVkKSIsIHN2LCBzYyk7DQorCQkJCWlmIChzYyA+IHNjb3JlKSB7DQor CQkJCQlzY29yZSA9IHNjOw0KKwkJCQkJY2hhbm5lbCA9IGNoOw0KKwkJCQl9 DQorCQkJfQ0KKwkJCXNtcHJpbnRmKHMsICJcbiIpOw0KKwkJfQ0KKw0KKwkJ ZnJlZShzdik7DQorCX0NCisNCisJc2RwX2Nsb3NlKHNzKTsNCisNCisJaWYg KGNoYW5uZWwgPT0gLTEpIHsNCisJCXNtcHJpbnRmKHMsICJObyBzdWl0YWJs ZSBzZXJ2aWNlIGZvdW5kIVxuIik7DQorCQlyZXR1cm4gRVJSX05PVFNVUFBP UlRFRDsNCisJfQ0KKw0KKwlyZXR1cm4gYmx1ZXRvb3RoX29wZW4ocywgYmRh ZGRyLCBjaGFubmVsKTsNCit9DQorDQorR1NNX0Vycm9yIGJsdWV0b290aF9m aW5kY2hhbm5lbChHU01fU3RhdGVNYWNoaW5lICpzKQ0KK3sNCisJY2hhcgkJ CSpkZXZpY2UgPSBzLT5DdXJyZW50Q29uZmlnLT5EZXZpY2U7DQorCWJkYWRk cl90CQliZGFkZHI7DQorCXN0cnVjdCBob3N0ZW50CQkqaGU7DQorCXN0cnVj dCBidF9kZXZpbnF1aXJ5CSppaTsNCisJaW50CQkJbjsNCisNCisJaWYgKGJ0 X2F0b24oZGV2aWNlLCAmYmRhZGRyKSkNCisJCXJldHVybiBibHVldG9vdGhf c2VhcmNoKHMsICZiZGFkZHIpOw0KKw0KKwlpZiAoKGhlID0gYnRfZ2V0aG9z dGJ5bmFtZShkZXZpY2UpKSAhPSBOVUxMKQ0KKwkJcmV0dXJuIGJsdWV0b290 aF9zZWFyY2gocywgKGJkYWRkcl90ICopaGUtPmhfYWRkcik7DQorDQorCXNt cHJpbnRmKHMsICJEZXZpY2UgXCIlc1wiIHVua25vd24uIFN0YXJ0aW5nIGlu cXVpcnkuLlxuIik7DQorDQorCWlmICgobiA9IGJ0X2RldmlucXVpcnkoTlVM TCwgMTAsIDIwLCAmaWkpKSA9PSAtMSkgew0KKwkJc21wcmludGYocywgIklu cXVpcnkgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsNCisJCXJl dHVybiBFUlJfVU5LTk9XTjsNCisJfQ0KKw0KKwlzbXByaW50ZihzLCAiRm91 bmQgJWQgZGV2aWNlc1xuIiwgbik7DQorDQorCXdoaWxlIChuLS0gPiAwKSB7 DQorCQlpZiAoYmx1ZXRvb3RoX3NlYXJjaChzLCAmaWktPmJkYWRkcikgPT0g RVJSX05PTkUpDQorCQkJcmV0dXJuIEVSUl9OT05FOw0KKw0KKwkJaWkrKzsN CisJfQ0KKw0KKwlyZXR1cm4gRVJSX1VOS05PV047DQorfQ0KKw0KKyNlbmRp Zg0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKy8qIEhvdyBzaG91bGQgZWRpdG9y IGhhZGxlIHRhYnMgaW4gdGhpcyBmaWxlPyBBZGQgZWRpdG9yIGNvbW1hbmRz IGhlcmUuDQorICogdmltOiBub2V4cGFuZHRhYiBzdz04IHRzPTggc3RzPTg6 DQorICovDQpkaWZmIC1OcnUgb3JpZy9nYW1tdS0xLjI0LjAvbGliZ2FtbXUv ZGV2aWNlL2JsdWV0b3RoL2JsdWVfYnNkLmggZ2FtbXUtMS4yNC4wL2xpYmdh bW11L2RldmljZS9ibHVldG90aC9ibHVlX2JzZC5oDQotLS0gb3JpZy9nYW1t dS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2JsdWV0b3RoL2JsdWVfYnNkLmgJ MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDANCisrKyBnYW1t dS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2JsdWV0b3RoL2JsdWVfYnNkLmgJ MjAwOS0wNS0yNSAxMzozNTo0NC4wMDAwMDAwMDAgKzAxMDANCkBAIC0wLDAg KzEgQEANCisvKiBlbXB0eSBmaWxlICovDQpkaWZmIC1OcnUgb3JpZy9nYW1t dS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2JsdWV0b3RoL2JsdWV0b3RoLmMg Z2FtbXUtMS4yNC4wL2xpYmdhbW11L2RldmljZS9ibHVldG90aC9ibHVldG90 aC5jDQotLS0gb3JpZy9nYW1tdS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2Js dWV0b3RoL2JsdWV0b3RoLmMJMjAwOS0wMi0xMiAxNDoxOTowMS4wMDAwMDAw MDAgKzAwMDANCisrKyBnYW1tdS0xLjI0LjAvbGliZ2FtbXUvZGV2aWNlL2Js dWV0b3RoL2JsdWV0b3RoLmMJMjAwOS0wNS0yMiAwOTo0NDoyOS4wMDAwMDAw MDAgKzAxMDANCkBAIC0yMSw4ICsyMSw4IEBADQogI2lmZGVmIEJMVUVaX0ZP VU5EDQogIyAgaW5jbHVkZSAiYmx1ZXouaCINCiAjZW5kaWYNCi0jaWZkZWYg RkJTRF9CTFVFX0ZPVU5EDQotIyAgaW5jbHVkZSAiYmx1ZV9mYnNkLmgiDQor I2lmZGVmIEJTRF9CTFVFX0ZPVU5EDQorIyAgaW5jbHVkZSAiYmx1ZV9ic2Qu aCINCiAjZW5kaWYNCiAjaWZkZWYgT1NYX0JMVUVfRk9VTkQNCiAjICBpbmNs dWRlICJibHVlX29zeC5oIg0K --0-1972968182-1243255626=:27920--