From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [PATCH 01/13] PM: Add wake lock api. Date: Sat, 7 Feb 2009 19:56:32 +0100 Message-ID: <200902071956.32964.rjw@sisk.pl> References: <1233802226-23386-1-git-send-email-arve@android.com> <1233802226-23386-2-git-send-email-arve@android.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1233802226-23386-2-git-send-email-arve@android.com> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: Arve =?utf-8?q?Hj=C3=B8nnev=C3=A5g?= Cc: ncunningham@crca.org.au, u.luckas@road.de, swetland@google.com, linux-pm@lists.linux-foundation.org List-Id: linux-pm@vger.kernel.org T24gVGh1cnNkYXkgMDUgRmVicnVhcnkgMjAwOSwgQXJ2ZSBIasO4bm5ldsOlZyB3cm90ZToKPiBT aWduZWQtb2ZmLWJ5OiBBcnZlIEhqw7hubmV2w6VnIDxhcnZlQGFuZHJvaWQuY29tPgo+IC0tLQo+ ICBEb2N1bWVudGF0aW9uL3Bvd2VyL3dha2Vsb2Nrcy50eHQgfCAgIDkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L3dha2Vsb2NrLmggICAgICAg ICAgfCAgIDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMiBmaWxl cyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcG93ZXIvd2FrZWxvY2tzLnR4dAo+ICBjcmVhdGUgbW9k ZSAxMDA3NTUgaW5jbHVkZS9saW51eC93YWtlbG9jay5oCj4gCj4gZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vcG93ZXIvd2FrZWxvY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvd2FrZWxv Y2tzLnR4dAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjE5YmIxMQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3dha2Vsb2Nrcy50eHQK PiBAQCAtMCwwICsxLDkxIEBACj4gK1dha2Vsb2Nrcwo+ICs9PT09PT09PT0KPiArCj4gK0EgbG9j a2VkIHdha2Vsb2NrLCBkZXBlbmRpbmcgb24gaXRzIHR5cGUsIHByZXZlbnRzIHRoZSBzeXN0ZW0g ZnJvbSBlbnRlcmluZwo+ICtzdXNwZW5kIG9yIG90aGVyIGxvdy1wb3dlciBzdGF0ZXMuIFdoZW4g Y3JlYXRpbmcgYSB3YWtlbG9jaywgeW91IGNhbiBzZWxlY3QKPiAraWYgaXQgcHJldmVudHMgc3Vz cGVuZCBvciBsb3ctcG93ZXIgaWRsZSBzdGF0ZXMuICBJZiB0aGUgdHlwZSBpcyBzZXQgdG8KPiAr V0FLRV9MT0NLX1NVU1BFTkQsIHRoZSB3YWtlbG9jayBwcmV2ZW50cyBhIGZ1bGwgc3lzdGVtIHN1 c3BlbmQuIElmIHRoZSB0eXBlCj4gK2lzIFdBS0VfTE9DS19JRExFLCBsb3ctcG93ZXIgc3RhdGVz IHRoYXQgY2F1c2UgbGFyZ2UgaW50ZXJydXB0IGxhdGVuY2llcywgb3IKPiArdGhhdCBkaXNhYmxl IGEgc2V0IG9mIGludGVycnVwdHMsIHdpbGwgbm90IGJlIGVudGVyZWQgZnJvbSBpZGxlIHVudGls IHRoZQo+ICt3YWtlbG9ja3MgYXJlIHJlbGVhc2VkLiBVbmxlc3MgdGhlIHR5cGUgaXMgc3BlY2lm aWVkLCB0aGlzIGRvY3VtZW50IHJlZmVycwo+ICt0byB3YWtlbG9ja3Mgd2l0aCB0aGUgdHlwZSBz ZXQgdG8gV0FLRV9MT0NLX1NVU1BFTkQuCj4gKwo+ICtJZiB0aGUgc3VzcGVuZCBvcGVyYXRpb24g aGFzIGFscmVhZHkgc3RhcnRlZCB3aGVuIGxvY2tpbmcgYSB3YWtlbG9jaywgaXQgd2lsbAo+ICth Ym9ydCB0aGUgc3VzcGVuZCBvcGVyYXRpb24gYXMgbG9uZyBpdCBoYXMgbm90IGFscmVhZHkgcmVh Y2hlZCB0aGUgc3VzcGVuZF9sYXRlCj4gK3N0YWdlLiBUaGlzIG1lYW5zIHRoYXQgbG9ja2luZyBh IHdha2Vsb2NrIGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIgb3IgYQo+ICtmcmVlemVhYmxlIHRo cmVhZCBhbHdheXMgd29ya3MsIGJ1dCBpZiB5b3UgbG9jayBhIHdha2Vsb2NrIGZyb20gYSBzdXNw ZW5kX2xhdGUKPiAraGFuZGxlciB5b3UgbXVzdCBhbHNvIHJldHVybiBhbiBlcnJvciBmcm9tIHRo YXQgaGFuZGxlciB0byBhYm9ydCBzdXNwZW5kLgo+ICsKPiArV2FrZWxvY2tzIGNhbiBiZSB1c2Vk IHRvIGFsbG93IHVzZXItc3BhY2UgdG8gZGVjaWRlIHdoaWNoIGtleXMgc2hvdWxkIHdha2UgdGhl Cj4gK2Z1bGwgc3lzdGVtIHVwIGFuZCB0dXJuIHRoZSBzY3JlZW4gb24uIFVzZSBzZXRfaXJxX3dh a2Ugb3IgYSBwbGF0Zm9ybSBzcGVjaWZpYwo+ICthcGkgdG8gbWFrZSBzdXJlIHRoZSBrZXlwYWQg aW50ZXJydXB0IHdha2VzIHVwIHRoZSBjcHUuIE9uY2UgdGhlIGtleXBhZCBkcml2ZXIKPiAraGFz IHJlc3VtZWQsIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMgY2FuIGxvb2sgbGlrZSB0aGlzOgo+ICst IFRoZSBLZXlwYWQgZHJpdmVyIGdldHMgYW4gaW50ZXJydXB0LiBJdCB0aGVuIGxvY2tzIHRoZSBr ZXlwYWQtc2NhbiB3YWtlbG9jawo+ICsgIGFuZCBzdGFydHMgc2Nhbm5pbmcgdGhlIGtleXBhZCBt YXRyaXguCj4gKy0gVGhlIGtleXBhZC1zY2FuIGNvZGUgZGV0ZWN0cyBhIGtleSBjaGFuZ2UgYW5k IHJlcG9ydHMgaXQgdG8gdGhlIGlucHV0LWV2ZW50Cj4gKyAgZHJpdmVyLgo+ICstIFRoZSBpbnB1 dC1ldmVudCBkcml2ZXIgc2VlcyB0aGUga2V5IGNoYW5nZSwgZW5xdWV1ZXMgYW4gZXZlbnQsIGFu ZCBsb2Nrcwo+ICsgIHRoZSBpbnB1dC1ldmVudC1xdWV1ZSB3YWtlbG9jay4KPiArLSBUaGUga2V5 cGFkLXNjYW4gY29kZSBkZXRlY3RzIHRoYXQgbm8ga2V5cyBhcmUgaGVsZCBhbmQgdW5sb2NrcyB0 aGUKPiArICBrZXlwYWQtc2NhbiB3YWtlbG9jay4KPiArLSBUaGUgdXNlci1zcGFjZSBpbnB1dC1l dmVudCB0aHJlYWQgcmV0dXJucyBmcm9tIHNlbGVjdC9wb2xsLCBsb2NrcyB0aGUKPiArICBwcm9j ZXNzLWlucHV0LWV2ZW50cyB3YWtlbG9jayBhbmQgdGhlbiBjYWxscyByZWFkIGluIHRoZSBpbnB1 dC1ldmVudCBkZXZpY2UuCj4gKy0gVGhlIGlucHV0LWV2ZW50IGRyaXZlciBkZXF1ZXVlcyB0aGUg a2V5LWV2ZW50IGFuZCwgc2luY2UgdGhlIHF1ZXVlIGlzIG5vdwo+ICsgIGVtcHR5LCBpdCB1bmxv Y2tzIHRoZSBpbnB1dC1ldmVudC1xdWV1ZSB3YWtlbG9jay4KPiArLSBUaGUgdXNlci1zcGFjZSBp bnB1dC1ldmVudCB0aHJlYWQgcmV0dXJucyBmcm9tIHJlYWQuIEl0IGRldGVybWluZXMgdGhhdCB0 aGUKPiArICBrZXkgc2hvdWxkIG5vdCB3YWtlIHVwIHRoZSBmdWxsIHN5c3RlbSwgcmVsZWFzZXMg dGhlIHByb2Nlc3MtaW5wdXQtZXZlbnRzCj4gKyAgd2FrZWxvY2sgYW5kIGNhbGxzIHNlbGVjdCBv ciBwb2xsLgoKSG0sIGNhbiB5b3UgcGxlYXNlIGV4cGxhaW4gdG8gbWUgd2hhdCB0aGlzIGV4YW1w bGUgaXMgc3VwcG9zZWQgdG8gaWxsdXN0cmF0ZT8KCklmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29y cmVjdCwgYSB3YWtlbG9jayBpcyBhIG1lY2hhbmlzbSB0aGF0LCBpZiBoZWxkLCB3aWxsCnByZXZl bnQgdGhlIHN5c3RlbSBmcm9tIChhdXRvbWF0aWNhbGx5KSBlbnRlcmluZyBhIHNsZWVwIHN0YXRl LCBidXQgd2h5IGRvIHdlCm5lZWQgYSBudW1iZXIgb2Ygc3VjaCB3YWtlbG9ja3MgaW5zdGVhZCBv ZiBqdXN0IG9uZSByZWZlcmVuY2UgY291bnRlciB3aXRoIHRoZQpydWxlIHRoYXQgKGF1dG9tYXRp Yykgc3VzcGVuZCBjYW4gb25seSBoYXBwZW4gaWYgdGhlIGNvdW50ZXIgaXMgemVybz8KClRoZW4s IGNvZGUgcGF0aHMgd2FudGluZyB0byBwcmV2ZW50IHRoZSBzdXNwZW5kIGZyb20gaGFwcGVuaW5n IHdvdWxkIG9ubHkgbmVlZAp0byBpbmNyZWFzZSB0aGUgY291bnRlciBhbmQgaXQgc2hvdWxkbid0 IGJlIGRpZmZpY3VsdCB0byBwcm92aWRlIGEgdXNlciBzcGFjZQppbnRlcmZhY2UgZm9yIHRoYXQu Cgo+ICsKPiArICAgICAgICAgICAgICAgICBLZXkgcHJlc3NlZCAgIEtleSByZWxlYXNlZAo+ICsg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKPiAra2V5cGFkLXNjYW4gICAgICAg ICAgKysrKysrKysrKysrKysrKysrCj4gK2lucHV0LWV2ZW50LXF1ZXVlICAgICAgICArKysgICAg ICAgICAgKysrCj4gK3Byb2Nlc3MtaW5wdXQtZXZlbnRzICAgICAgICsrKyAgICAgICAgICArKysK PiArCj4gKwo+ICtEcml2ZXIgQVBJCj4gKz09PT09PT09PT0KPiArCj4gK0EgZHJpdmVyIGNhbiB1 c2UgdGhlIHdha2Vsb2NrIGFwaSBieSBhZGRpbmcgYSB3YWtlbG9jayB2YXJpYWJsZSB0byBpdHMg c3RhdGUKPiArYW5kIGNhbGxpbmcgd2FrZV9sb2NrX2luaXQuIEZvciBpbnN0YW5jZToKPiArc3Ry dWN0IHN0YXRlIHsKPiArCXN0cnVjdCB3YWtlbG9jayB3YWtlbG9jazsKPiArfQo+ICsKPiAraW5p dCgpIHsKPiArCXdha2VfbG9ja19pbml0KCZzdGF0ZS0+d2FrZWxvY2ssIFdBS0VfTE9DS19TVVNQ RU5ELCAid2FrZWxvY2tuYW1lIik7Cj4gK30KPiArCj4gK0JlZm9yZSBmcmVlaW5nIHRoZSBtZW1v cnksIHdha2VfbG9ja19kZXN0cm95IG11c3QgYmUgY2FsbGVkOgo+ICsKPiArdW5pbml0KCkgewo+ ICsJd2FrZV9sb2NrX2Rlc3Ryb3koJnN0YXRlLT53YWtlbG9jayk7Cj4gK30KPiArCj4gK1doZW4g dGhlIGRyaXZlciBkZXRlcm1pbmVzIHRoYXQgaXQgbmVlZHMgdG8gcnVuICh1c3VhbGx5IGluIGFu IGludGVycnVwdAo+ICtoYW5kbGVyKSBpdCBjYWxscyB3YWtlX2xvY2s6Cj4gKwl3YWtlX2xvY2so JnN0YXRlLT53YWtlbG9jayk7Cj4gKwo+ICtXaGVuIGl0IG5vIGxvbmdlciBuZWVkcyB0byBydW4g aXQgY2FsbHMgd2FrZV91bmxvY2s6Cj4gKwl3YWtlX3VubG9jaygmc3RhdGUtPndha2Vsb2NrKTsK PiArCj4gK0l0IGNhbiBhbHNvIGNhbGwgd2FrZV9sb2NrX3RpbWVvdXQgdG8gcmVsZWFzZSB0aGUg d2FrZWxvY2sgYWZ0ZXIgYSBkZWxheToKPiArCXdha2VfbG9ja190aW1lb3V0KCZzdGF0ZS0+d2Fr ZWxvY2ssIEhaKTsKPiArCj4gK1RoaXMgd29ya3Mgd2hldGhlciB0aGUgd2FrZWxvY2sgaXMgYWxy ZWFkeSBoZWxkIG9yIG5vdC4gSXQgaXMgdXNlZnVsIGlmIHRoZQo+ICtkcml2ZXIgd29rZSB1cCBv dGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRoYXQgZG8gbm90IHVzZSB3YWtlbG9ja3MgYnV0Cj4g K3N0aWxsIG5lZWQgdG8gcnVuLiBBdm9pZCB0aGlzIHdoZW4gcG9zc2libGUsIHNpbmNlIGl0IHdp bGwgd2FzdGUgcG93ZXIKPiAraWYgdGhlIHRpbWVvdXQgaXMgbG9uZyBvciBtYXkgZmFpbCB0byBm aW5pc2ggbmVlZGVkIHdvcmsgaWYgdGhlIHRpbWVvdXQgaXMKPiArc2hvcnQuCgpBbmQgd2hhdCdz IHRoaXMgY2FsbCBuZWVkZWQgZm9yPwoKPiArCj4gKwo+ICtVc2VyLXNwYWNlIEFQSQo+ICs9PT09 PT09PT09PT09PQo+ICsKPiArV3JpdGUgImxvY2tuYW1lIiBvciAibG9ja25hbWUgdGltZW91dCIg dG8gL3N5cy9wb3dlci93YWtlX2xvY2sgbG9jayBhbmQgaWYKPiArbmVlZGVkIGNyZWF0ZSBhIHdh a2Vsb2NrLiBUaGUgdGltZW91dCBoZXJlIGlzIHNwZWNpZmllZCBuYW5vc2Vjb25kcy4KPiArV3Jp dGUgImxvY2tuYW1lIiB0byAvc3lzL3Bvd2VyL3dha2VfdW5sb2NrIHRvIHVubG9jayBhIHVzZXIg d2FrZWxvY2suCgpJcyB0aGVyZSBhIG1lY2hhbmlzbSBhbGxvd2luZyB1cyB0byBzZWUgd2hhdCB3 YWtlbG9ja3MgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkKdGhlIHVzZXIgbGFuZD8gIFNvbWV0aGluZyBs aWtlIHRoaXMgd291bGQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCgo+ICtEbyBub3QgdXNlIHJh bmRvbWx5IGdlbmVyYXRlZCB3YWtlbG9jayBuYW1lcyBhcyB0aGVyZSBpcyBubyBhcGkgdG8gZnJl ZQo+ICthIHVzZXItc3BhY2Ugd2FrZWxvY2suCgpUaGlzIGFwcGVhcnMgdG8gYmUgdmVyeSBmcmFn aWxlLiAgUGxlYXNlIHJldGhpbmsgaXQuCgo+ICsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC93YWtlbG9jay5oIGIvaW5jbHVkZS9saW51eC93YWtlbG9jay5oCj4gbmV3IGZpbGUgbW9kZSAx MDA3NTUKPiBpbmRleCAwMDAwMDAwLi5iMTdlOTkzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2lu Y2x1ZGUvbGludXgvd2FrZWxvY2suaAo+IEBAIC0wLDAgKzEsOTIgQEAKPiArLyogaW5jbHVkZS9s aW51eC93YWtlbG9jay5oCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IEdvb2ds ZSwgSW5jLgo+ICsgKgo+ICsgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCj4gKyAqIG1h eSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMu Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqLwo+ICsKPiAr I2lmbmRlZiBfTElOVVhfV0FLRUxPQ0tfSAo+ICsjZGVmaW5lIF9MSU5VWF9XQUtFTE9DS19ICj4g Kwo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva3RpbWUuaD4K PiArCj4gKy8qIEEgd2FrZV9sb2NrIHByZXZlbnRzIHRoZSBzeXN0ZW0gZnJvbSBlbnRlcmluZyBz dXNwZW5kIG9yIG90aGVyIGxvdyBwb3dlcgo+ICsgKiBzdGF0ZXMgd2hlbiBhY3RpdmUuIElmIHRo ZSB0eXBlIGlzIHNldCB0byBXQUtFX0xPQ0tfU1VTUEVORCwgdGhlIHdha2VfbG9jawo+ICsgKiBw cmV2ZW50cyBhIGZ1bGwgc3lzdGVtIHN1c3BlbmQuIElmIHRoZSB0eXBlIGlzIFdBS0VfTE9DS19J RExFLCBsb3cgcG93ZXIKPiArICogc3RhdGVzIHRoYXQgY2F1c2UgbGFyZ2UgaW50ZXJydXB0IGxh dGVuY2llcyBvciB0aGF0IGRpc2FibGUgYSBzZXQgb2YKPiArICogaW50ZXJydXB0cyB3aWxsIG5v dCBlbnRlcmVkIGZyb20gaWRsZSB1bnRpbCB0aGUgd2FrZV9sb2NrcyBhcmUgcmVsZWFzZWQuCj4g KyAqLwo+ICsKPiArZW51bSB7Cj4gKwlXQUtFX0xPQ0tfU1VTUEVORCwgLyogUHJldmVudCBzdXNw ZW5kICovCj4gKwlXQUtFX0xPQ0tfSURMRSwgICAgLyogUHJldmVudCBsb3cgcG93ZXIgaWRsZSAq Lwo+ICsJV0FLRV9MT0NLX1RZUEVfQ09VTlQKPiArfTsKPiArCj4gK3N0cnVjdCB3YWtlX2xvY2sg ewo+ICsjaWZkZWYgQ09ORklHX0hBU19XQUtFTE9DSwo+ICsJc3RydWN0IGxpc3RfaGVhZCAgICBs aW5rOwo+ICsJaW50ICAgICAgICAgICAgICAgICBmbGFnczsKPiArCWNvbnN0IGNoYXIgICAgICAg ICAqbmFtZTsKPiArCXVuc2lnbmVkIGxvbmcgICAgICAgZXhwaXJlczsKPiArI2lmZGVmIENPTkZJ R19XQUtFTE9DS19TVEFUCj4gKwlzdHJ1Y3Qgewo+ICsJCWludCAgICAgICAgICAgICBjb3VudDsK PiArCQlpbnQgICAgICAgICAgICAgZXhwaXJlX2NvdW50Owo+ICsJCWludCAgICAgICAgICAgICB3 YWtldXBfY291bnQ7Cj4gKwkJa3RpbWVfdCAgICAgICAgIHRvdGFsX3RpbWU7Cj4gKwkJa3RpbWVf dCAgICAgICAgIHByZXZlbnRfc3VzcGVuZF90aW1lOwo+ICsJCWt0aW1lX3QgICAgICAgICBtYXhf dGltZTsKPiArCQlrdGltZV90ICAgICAgICAgbGFzdF90aW1lOwo+ICsJfSBzdGF0Owo+ICsjZW5k aWYKPiArI2VuZGlmCj4gK307Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0hBU19XQUtFTE9DSwo+ICsK PiArdm9pZCB3YWtlX2xvY2tfaW5pdChzdHJ1Y3Qgd2FrZV9sb2NrICpsb2NrLCBpbnQgdHlwZSwg Y29uc3QgY2hhciAqbmFtZSk7Cj4gK3ZvaWQgd2FrZV9sb2NrX2Rlc3Ryb3koc3RydWN0IHdha2Vf bG9jayAqbG9jayk7Cj4gK3ZvaWQgd2FrZV9sb2NrKHN0cnVjdCB3YWtlX2xvY2sgKmxvY2spOwo+ ICt2b2lkIHdha2VfbG9ja190aW1lb3V0KHN0cnVjdCB3YWtlX2xvY2sgKmxvY2ssIGxvbmcgdGlt ZW91dCk7Cj4gK3ZvaWQgd2FrZV91bmxvY2soc3RydWN0IHdha2VfbG9jayAqbG9jayk7Cj4gKwo+ ICsvKiB3YWtlX2xvY2tfYWN0aXZlIHJldHVybnMgYSBub24temVybyB2YWx1ZSBpZiB0aGUgd2Fr ZV9sb2NrIGlzIGN1cnJlbnRseQo+ICsgKiBsb2NrZWQuIElmIHRoZSB3YWtlX2xvY2sgaGFzIGEg dGltZW91dCwgaXQgZG9lcyBub3QgY2hlY2sgdGhlIHRpbWVvdXQsCj4gKyAqIGJ1dCBpZiB0aGUg dGltZW91dCBoYWQgYWxyZWFkeSBleHBpcmVkIHdoZW4gaXQgd2FzIGNoZWNrZWQgZWxzZXdoZXJl Cj4gKyAqIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gMC4KPiArICovCj4gK2ludCB3YWtlX2xv Y2tfYWN0aXZlKHN0cnVjdCB3YWtlX2xvY2sgKmxvY2spOwoKV2hhdCdzIHRoZSBwdXJwb3NlIG9m IHRoaXMgZnVuY3Rpb24/Cgo+ICsKPiArLyogaGFzX3dha2VfbG9jayByZXR1cm5zIDAgaWYgbm8g d2FrZSBsb2NrcyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYXJlIGFjdGl2ZSwKPiArICogYW5kIG5v bi16ZXJvIGlmIG9uZSBvciBtb3JlIHdha2UgbG9ja3MgYXJlIGhlbGQuIFNwZWNpZmljYWxseSBp dCByZXR1cm5zCj4gKyAqIC0xIGlmIG9uZSBvciBtb3JlIHdha2UgbG9ja3Mgd2l0aCBubyB0aW1l b3V0IGFyZSBhY3RpdmUgb3IgdGhlCj4gKyAqIG51bWJlciBvZiBqaWZmaWVzIHVudGlsIGFsbCBh Y3RpdmUgd2FrZSBsb2NrcyB0aW1lIG91dC4KPiArICovCj4gK2xvbmcgaGFzX3dha2VfbG9jayhp bnQgdHlwZSk7CgpBbmQgdGhpcz8KCj4gKwo+ICsjZWxzZQo+ICsKPiArc3RhdGljIGlubGluZSB2 b2lkIHdha2VfbG9ja19pbml0KHN0cnVjdCB3YWtlX2xvY2sgKmxvY2ssIGludCB0eXBlLAo+ICsJ CQkJCWNvbnN0IGNoYXIgKm5hbWUpIHt9Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB3YWtlX2xvY2tf ZGVzdHJveShzdHJ1Y3Qgd2FrZV9sb2NrICpsb2NrKSB7fQo+ICtzdGF0aWMgaW5saW5lIHZvaWQg d2FrZV9sb2NrKHN0cnVjdCB3YWtlX2xvY2sgKmxvY2spIHt9Cj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCB3YWtlX2xvY2tfdGltZW91dChzdHJ1Y3Qgd2FrZV9sb2NrICpsb2NrLCBsb25nIHRpbWVvdXQp IHt9Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB3YWtlX3VubG9jayhzdHJ1Y3Qgd2FrZV9sb2NrICps b2NrKSB7fQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgd2FrZV9sb2NrX2FjdGl2ZShzdHJ1Y3Qg d2FrZV9sb2NrICpsb2NrKSB7IHJldHVybiAwOyB9Cj4gK3N0YXRpYyBpbmxpbmUgbG9uZyBoYXNf d2FrZV9sb2NrKGludCB0eXBlKSB7IHJldHVybiAwOyB9Cj4gKwo+ICsjZW5kaWYKPiArCj4gKyNl bmRpZgo+ICsKClRoYW5rcywKUmFmYWVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LXBtIG1haWxpbmcgbGlzdApsaW51eC1wbUBsaXN0cy5saW51 eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcG0=