From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: [RFC] compact buffers when idle Date: Wed, 18 Jul 2012 19:47:00 +0400 Message-ID: <5006DA74.1020100@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040105000501030504080105" X-Trace: dough.gmane.org 1342626448 5579 80.91.229.3 (18 Jul 2012 15:47:28 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 18 Jul 2012 15:47:28 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jul 18 17:47:27 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SrWTE-0000uE-EM for ged-emacs-devel@m.gmane.org; Wed, 18 Jul 2012 17:47:24 +0200 Original-Received: from localhost ([::1]:53804 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SrWTD-00006g-PC for ged-emacs-devel@m.gmane.org; Wed, 18 Jul 2012 11:47:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:46383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SrWT4-00089S-Ka for emacs-devel@gnu.org; Wed, 18 Jul 2012 11:47:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SrWSw-0003vp-3h for emacs-devel@gnu.org; Wed, 18 Jul 2012 11:47:14 -0400 Original-Received: from forward11.mail.yandex.net ([95.108.130.93]:34899) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SrWSv-0003ve-I5 for emacs-devel@gnu.org; Wed, 18 Jul 2012 11:47:06 -0400 Original-Received: from smtp13.mail.yandex.net (smtp13.mail.yandex.net [95.108.130.68]) by forward11.mail.yandex.net (Yandex) with ESMTP id CF0D2E85756 for ; Wed, 18 Jul 2012 19:47:01 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1342626421; bh=O5FfcG0okaLe06v9CPKQG+7Fxn/Pc/t/5uAHBbAzkx8=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=vndxuq/4N9kxM+0KwYJgJvZ6Mt9lOr/GWBvqcoNiHlu9Z2yYZkGlvOuf4b0RPzM0M TKeqt5Op7IzFwWUh7lx3/CH01WuB0kQ+YOefQO1vmcXSHV16wlTc0RtVQd3LfWpMDY If82ozvhKT3HR5+5bhSTIVgmODTfzl7b87nL3PHs= Original-Received: from smtp13.mail.yandex.net (localhost [127.0.0.1]) by smtp13.mail.yandex.net (Yandex) with ESMTP id BC92AE40015 for ; Wed, 18 Jul 2012 19:47:01 +0400 (MSK) Original-Received: from 247.gprs.mts.ru (247.gprs.mts.ru [213.87.135.247]) by smtp13.mail.yandex.net (nwsmtp/Yandex) with ESMTP id l09K1oGw-l098L7Ft; Wed, 18 Jul 2012 19:47:01 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1342626421; bh=O5FfcG0okaLe06v9CPKQG+7Fxn/Pc/t/5uAHBbAzkx8=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=Mb/vyKxTw9C9PRvvJvQ3BJiRstNzSzPnfsdm7Xh1O9Yq/PgIjTCLEb7zlpcrF0HMA sgLlPzWRbBeOP3paHYZXYvCLqPX3iMO+LQPPnXQfDcW/34NEGRTY7X0im1isgUri8+ Ox6XxKS5kxs+9Kk+m0L4Wgq5IZNC1PbtYH8wmf0E= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.93 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:151736 Archived-At: This is a multi-part message in MIME format. --------------040105000501030504080105 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Core idea of this stuff is to run compact_buffer when idle, e.g. with: (defun idle-compact-buffers (timeout) (run-with-idle-timer timeout t '(lambda nil (mapcar '(lambda (buffer) (if (not (eq buffer (current-buffer))) (compact-buffer buffer))) (buffer-list))))) This offloads Fgarbage_collect, especially if there are a few hundreds of buffers. Dmitry --------------040105000501030504080105 Content-Type: text/plain; charset=UTF-8; name="compact_buffer.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="compact_buffer.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0w Ny0xOCAwOTo0NjowNyArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNy0xOCAxNTo0NTow NSArMDAwMApAQCAtMjcwLDYgKzI3MCw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QgbWFrZV9w dXJlX3ZlY3RvciAocHRyZGlmZl90KTsKIHN0YXRpYyB2b2lkIG1hcmtfZ2x5cGhfbWF0cml4 IChzdHJ1Y3QgZ2x5cGhfbWF0cml4ICopOwogc3RhdGljIHZvaWQgbWFya19mYWNlX2NhY2hl IChzdHJ1Y3QgZmFjZV9jYWNoZSAqKTsKK3N0YXRpYyBpbnQgY29tcGFjdF9idWZmZXIgKHN0 cnVjdCBidWZmZXIgKik7CiAKICNpZiAhZGVmaW5lZCBSRUxfQUxMT0MgfHwgZGVmaW5lZCBT WVNURU1fTUFMTE9DCiBzdGF0aWMgdm9pZCByZWZpbGxfbWVtb3J5X3Jlc2VydmUgKHZvaWQp OwpAQCAtNTM5MSw2ICs1MzkyLDcgQEAKICAgKHZvaWQpCiB7CiAgIHJlZ2lzdGVyIHN0cnVj dCBzcGVjYmluZGluZyAqYmluZDsKKyAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqbmV4dGI7 CiAgIGNoYXIgc3RhY2tfdG9wX3ZhcmlhYmxlOwogICBwdHJkaWZmX3QgaTsKICAgaW50IG1l c3NhZ2VfcDsKQEAgLTU0MDgsNDIgKzU0MTAsMTAgQEAKIAogICBDSEVDS19DT05TX0xJU1Qg KCk7CiAKLSAgLyogRG9uJ3Qga2VlcCB1bmRvIGluZm9ybWF0aW9uIGFyb3VuZCBmb3JldmVy LgotICAgICBEbyB0aGlzIGVhcmx5IG9uLCBzbyBpdCBpcyBubyBwcm9ibGVtIGlmIHRoZSB1 c2VyIHF1aXRzLiAgKi8KLSAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKm5leHRi ID0gYWxsX2J1ZmZlcnM7Ci0KLSAgICB3aGlsZSAobmV4dGIpCi0gICAgICB7Ci0JLyogSWYg YSBidWZmZXIncyB1bmRvIGxpc3QgaXMgUXQsIHRoYXQgbWVhbnMgdGhhdCB1bmRvIGlzCi0J ICAgdHVybmVkIG9mZiBpbiB0aGF0IGJ1ZmZlci4gIENhbGxpbmcgdHJ1bmNhdGVfdW5kb19s aXN0IG9uCi0JICAgUXQgdGVuZHMgdG8gcmV0dXJuIE5VTEwsIHdoaWNoIGVmZmVjdGl2ZWx5 IHR1cm5zIHVuZG8gYmFjayBvbi4KLQkgICBTbyBkb24ndCBjYWxsIHRydW5jYXRlX3VuZG9f bGlzdCBpZiB1bmRvX2xpc3QgaXMgUXQuICAqLwotCWlmICghIE5JTFAgKG5leHRiLT5CVUZG RVJfSU5URVJOQUxfRklFTEQgKG5hbWUpKQotCSAgICAmJiAhIEVRIChuZXh0Yi0+QlVGRkVS X0lOVEVSTkFMX0ZJRUxEICh1bmRvX2xpc3QpLCBRdCkpCi0JICB0cnVuY2F0ZV91bmRvX2xp c3QgKG5leHRiKTsKLQotCS8qIFNocmluayBidWZmZXIgZ2FwcywgYnV0IHNraXAgaW5kaXJl Y3QgYW5kIGRlYWQgYnVmZmVycy4gICovCi0JaWYgKG5leHRiLT5iYXNlX2J1ZmZlciA9PSAw ICYmICFOSUxQIChuZXh0Yi0+QlVGRkVSX0lOVEVSTkFMX0ZJRUxEIChuYW1lKSkKLQkgICAg JiYgISBuZXh0Yi0+dGV4dC0+aW5oaWJpdF9zaHJpbmtpbmcpCi0JICB7Ci0JICAgIC8qIElm IGEgYnVmZmVyJ3MgZ2FwIHNpemUgaXMgbW9yZSB0aGFuIDEwJSBvZiB0aGUgYnVmZmVyCi0J ICAgICAgIHNpemUsIG9yIGxhcmdlciB0aGFuIDIwMDAgYnl0ZXMsIHRoZW4gc2hyaW5rIGl0 Ci0JICAgICAgIGFjY29yZGluZ2x5LiAgS2VlcCBhIG1pbmltdW0gc2l6ZSBvZiAyMCBieXRl cy4gICovCi0JICAgIGludCBzaXplID0gbWluICgyMDAwLCBtYXggKDIwLCAobmV4dGItPnRl eHQtPnpfYnl0ZSAvIDEwKSkpOwotCi0JICAgIGlmIChuZXh0Yi0+dGV4dC0+Z2FwX3NpemUg PiBzaXplKQotCSAgICAgIHsKLQkJc3RydWN0IGJ1ZmZlciAqc2F2ZV9jdXJyZW50ID0gY3Vy cmVudF9idWZmZXI7Ci0JCWN1cnJlbnRfYnVmZmVyID0gbmV4dGI7Ci0JCW1ha2VfZ2FwICgt KG5leHRiLT50ZXh0LT5nYXBfc2l6ZSAtIHNpemUpKTsKLQkJY3VycmVudF9idWZmZXIgPSBz YXZlX2N1cnJlbnQ7Ci0JICAgICAgfQotCSAgfQotCi0JbmV4dGIgPSBuZXh0Yi0+aGVhZGVy Lm5leHQuYnVmZmVyOwotICAgICAgfQotICB9CisgIC8qIERvbid0IGtlZXAgdW5kbyBpbmZv cm1hdGlvbiBhcm91bmQgZm9yZXZlci4gRG8gdGhpcworICAgICBlYXJseSBvbiwgc28gaXQg aXMgbm8gcHJvYmxlbSBpZiB0aGUgdXNlciBxdWl0cy4gICovCisgIGZvciAobmV4dGIgPSBh bGxfYnVmZmVyczsgbmV4dGI7IG5leHRiID0gbmV4dGItPmhlYWRlci5uZXh0LmJ1ZmZlcikK KyAgICBjb21wYWN0X2J1ZmZlciAobmV4dGIpOwogCiAgIHQxID0gY3VycmVudF9lbWFjc190 aW1lICgpOwogCkBAIC01NTUyLDUzICs1NTIyLDQ3IEBACiAgIG1hcmtfc3RhY2sgKCk7CiAj ZW5kaWYKIAotICAvKiBFdmVyeXRoaW5nIGlzIG5vdyBtYXJrZWQsIGV4Y2VwdCBmb3IgdGhl IHRoaW5ncyB0aGF0IHJlcXVpcmUgc3BlY2lhbAotICAgICBmaW5hbGl6YXRpb24sIGkuZS4g dGhlIHVuZG9fbGlzdC4KLSAgICAgTG9vayB0aHJ1IGV2ZXJ5IGJ1ZmZlcidzIHVuZG8gbGlz dAotICAgICBmb3IgZWxlbWVudHMgdGhhdCB1cGRhdGUgbWFya2VycyB0aGF0IHdlcmUgbm90 IG1hcmtlZCwKLSAgICAgYW5kIGRlbGV0ZSB0aGVtLiAgKi8KLSAgewotICAgIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKm5leHRiID0gYWxsX2J1ZmZlcnM7Ci0KLSAgICB3aGlsZSAobmV4 dGIpCi0gICAgICB7Ci0JLyogSWYgYSBidWZmZXIncyB1bmRvIGxpc3QgaXMgUXQsIHRoYXQg bWVhbnMgdGhhdCB1bmRvIGlzCi0JICAgdHVybmVkIG9mZiBpbiB0aGF0IGJ1ZmZlci4gIENh bGxpbmcgdHJ1bmNhdGVfdW5kb19saXN0IG9uCi0JICAgUXQgdGVuZHMgdG8gcmV0dXJuIE5V TEwsIHdoaWNoIGVmZmVjdGl2ZWx5IHR1cm5zIHVuZG8gYmFjayBvbi4KLQkgICBTbyBkb24n dCBjYWxsIHRydW5jYXRlX3VuZG9fbGlzdCBpZiB1bmRvX2xpc3QgaXMgUXQuICAqLwotCWlm ICghIEVRIChuZXh0Yi0+QlVGRkVSX0lOVEVSTkFMX0ZJRUxEICh1bmRvX2xpc3QpLCBRdCkp Ci0JICB7Ci0JICAgIExpc3BfT2JqZWN0IHRhaWwsIHByZXY7Ci0JICAgIHRhaWwgPSBuZXh0 Yi0+QlVGRkVSX0lOVEVSTkFMX0ZJRUxEICh1bmRvX2xpc3QpOwotCSAgICBwcmV2ID0gUW5p bDsKLQkgICAgd2hpbGUgKENPTlNQICh0YWlsKSkKLQkgICAgICB7Ci0JCWlmIChDT05TUCAo WENBUiAodGFpbCkpCi0JCSAgICAmJiBNQVJLRVJQIChYQ0FSIChYQ0FSICh0YWlsKSkpCi0J CSAgICAmJiAhWE1BUktFUiAoWENBUiAoWENBUiAodGFpbCkpKS0+Z2NtYXJrYml0KQotCQkg IHsKLQkJICAgIGlmIChOSUxQIChwcmV2KSkKLQkJICAgICAgbmV4dGItPkJVRkZFUl9JTlRF Uk5BTF9GSUVMRCAodW5kb19saXN0KSA9IHRhaWwgPSBYQ0RSICh0YWlsKTsKLQkJICAgIGVs c2UKLQkJICAgICAgewotCQkJdGFpbCA9IFhDRFIgKHRhaWwpOwotCQkJWFNFVENEUiAocHJl diwgdGFpbCk7Ci0JCSAgICAgIH0KLQkJICB9Ci0JCWVsc2UKLQkJICB7Ci0JCSAgICBwcmV2 ID0gdGFpbDsKLQkJICAgIHRhaWwgPSBYQ0RSICh0YWlsKTsKLQkJICB9Ci0JICAgICAgfQot CSAgfQotCS8qIE5vdyB0aGF0IHdlIGhhdmUgc3RyaXBwZWQgdGhlIGVsZW1lbnRzIHRoYXQg bmVlZCBub3QgYmUgaW4gdGhlCi0JICAgdW5kb19saXN0IGFueSBtb3JlLCB3ZSBjYW4gZmlu YWxseSBtYXJrIHRoZSBsaXN0LiAgKi8KLQltYXJrX29iamVjdCAobmV4dGItPkJVRkZFUl9J TlRFUk5BTF9GSUVMRCAodW5kb19saXN0KSk7Ci0KLQluZXh0YiA9IG5leHRiLT5oZWFkZXIu bmV4dC5idWZmZXI7Ci0gICAgICB9Ci0gIH0KKyAgLyogRXZlcnl0aGluZyBpcyBub3cgbWFy a2VkLCBleGNlcHQgZm9yIHRoZSB0aGluZ3MgdGhhdAorICAgICByZXF1aXJlIHNwZWNpYWwg ZmluYWxpemF0aW9uLCBpLmUuIHRoZSB1bmRvX2xpc3QuCisgICAgIExvb2sgdGhydSBldmVy eSBidWZmZXIncyB1bmRvIGxpc3QgZm9yIGVsZW1lbnRzIHRoYXQKKyAgICAgdXBkYXRlIG1h cmtlcnMgdGhhdCB3ZXJlIG5vdCBtYXJrZWQsIGFuZCBkZWxldGUgdGhlbS4gICovCisKKyAg Zm9yIChuZXh0YiA9IGFsbF9idWZmZXJzOyBuZXh0YjsgbmV4dGIgPSBuZXh0Yi0+aGVhZGVy Lm5leHQuYnVmZmVyKQorICAgIHsKKyAgICAgIC8qIElmIGEgYnVmZmVyJ3MgdW5kbyBsaXN0 IGlzIFF0LCB0aGF0IG1lYW5zIHRoYXQgdW5kbyBpcworCSB0dXJuZWQgb2ZmIGluIHRoYXQg YnVmZmVyLiAgQ2FsbGluZyB0cnVuY2F0ZV91bmRvX2xpc3Qgb24KKwkgUXQgdGVuZHMgdG8g cmV0dXJuIE5VTEwsIHdoaWNoIGVmZmVjdGl2ZWx5IHR1cm5zIHVuZG8gYmFjayBvbi4KKwkg U28gZG9uJ3QgY2FsbCB0cnVuY2F0ZV91bmRvX2xpc3QgaWYgdW5kb19saXN0IGlzIFF0LiAg Ki8KKyAgICAgIGlmICghIEVRIChuZXh0Yi0+QlVGRkVSX0lOVEVSTkFMX0ZJRUxEICh1bmRv X2xpc3QpLCBRdCkpCisJeworCSAgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKKwkgIHRhaWwg PSBuZXh0Yi0+QlVGRkVSX0lOVEVSTkFMX0ZJRUxEICh1bmRvX2xpc3QpOworCSAgcHJldiA9 IFFuaWw7CisJICB3aGlsZSAoQ09OU1AgKHRhaWwpKQorCSAgICB7CisJICAgICAgaWYgKENP TlNQIChYQ0FSICh0YWlsKSkKKwkJICAmJiBNQVJLRVJQIChYQ0FSIChYQ0FSICh0YWlsKSkp CisJCSAgJiYgIVhNQVJLRVIgKFhDQVIgKFhDQVIgKHRhaWwpKSktPmdjbWFya2JpdCkKKwkJ eworCQkgIGlmIChOSUxQIChwcmV2KSkKKwkJICAgIG5leHRiLT5CVUZGRVJfSU5URVJOQUxf RklFTEQgKHVuZG9fbGlzdCkgPSB0YWlsID0gWENEUiAodGFpbCk7CisJCSAgZWxzZQorCQkg ICAgeworCQkgICAgICB0YWlsID0gWENEUiAodGFpbCk7CisJCSAgICAgIFhTRVRDRFIgKHBy ZXYsIHRhaWwpOworCQkgICAgfQorCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgcHJldiA9 IHRhaWw7CisJCSAgdGFpbCA9IFhDRFIgKHRhaWwpOworCQl9CisJICAgIH0KKwl9CisgICAg ICAvKiBOb3cgdGhhdCB3ZSBoYXZlIHN0cmlwcGVkIHRoZSBlbGVtZW50cyB0aGF0IG5lZWQg bm90IGJlIGluIHRoZQorCSB1bmRvX2xpc3QgYW55IG1vcmUsIHdlIGNhbiBmaW5hbGx5IG1h cmsgdGhlIGxpc3QuICAqLworICAgICAgbWFya19vYmplY3QgKG5leHRiLT5CVUZGRVJfSU5U RVJOQUxfRklFTEQgKHVuZG9fbGlzdCkpOworICAgIH0KIAogICBnY19zd2VlcCAoKTsKIApA QCAtNTg3OCw2ICs1ODQyLDQ2IEBACiAgICAgbWFya19idWZmZXIgKGJ1ZmZlci0+YmFzZV9i dWZmZXIpOwogfQogCisvKiBUcnVuY2F0ZSB1bmRvIGxpc3QgYW5kIHNocmluayB0aGUgZ2Fw IG9mIEJVRi4gICovCisKK3N0YXRpYyBpbnQKK2NvbXBhY3RfYnVmZmVyIChzdHJ1Y3QgYnVm ZmVyICpidWYpCit7CisgIC8qIFNraXAgZGVhZCBidWZmZXJzLCBpbmRpcmVjdCBidWZmZXJz IGFuZCBidWZmZXJzCisgICAgIHdoaWNoIGFyZW4ndCBjaGFuZ2VkIHNpbmNlIGxhc3QgY29t cGFjdGlvbi4gICovCisgIGlmICghTklMUCAoYnVmLT5CVUZGRVJfSU5URVJOQUxfRklFTEQg KG5hbWUpKQorICAgICAgJiYgKGJ1Zi0+YmFzZV9idWZmZXIgPT0gTlVMTCkKKyAgICAgICYm IChidWYtPnRleHQtPmNvbXBhY3QgIT0gYnVmLT50ZXh0LT5tb2RpZmYpKQorICAgIHsKKyAg ICAgIC8qIElmIGEgYnVmZmVyJ3MgdW5kbyBsaXN0IGlzIFF0LCB0aGF0IG1lYW5zIHRoYXQg dW5kbyBpcworCSB0dXJuZWQgb2ZmIGluIHRoYXQgYnVmZmVyLiAgQ2FsbGluZyB0cnVuY2F0 ZV91bmRvX2xpc3Qgb24KKwkgUXQgdGVuZHMgdG8gcmV0dXJuIE5VTEwsIHdoaWNoIGVmZmVj dGl2ZWx5IHR1cm5zIHVuZG8gYmFjayBvbi4KKwkgU28gZG9uJ3QgY2FsbCB0cnVuY2F0ZV91 bmRvX2xpc3QgaWYgdW5kb19saXN0IGlzIFF0LiAgKi8KKyAgICAgIGlmICghIEVRIChidWYt PkJVRkZFUl9JTlRFUk5BTF9GSUVMRCAodW5kb19saXN0KSwgUXQpKQorCXRydW5jYXRlX3Vu ZG9fbGlzdCAoYnVmKTsKKworICAgICAgLyogU2hyaW5rIGJ1ZmZlciBnYXBzLiAgKi8KKyAg ICAgIGlmICghYnVmLT50ZXh0LT5pbmhpYml0X3Nocmlua2luZykKKwl7CisJICAvKiBJZiBh IGJ1ZmZlcidzIGdhcCBzaXplIGlzIG1vcmUgdGhhbiAxMCUgb2YgdGhlIGJ1ZmZlcgorCSAg ICAgc2l6ZSwgb3IgbGFyZ2VyIHRoYW4gMjAwMCBieXRlcywgdGhlbiBzaHJpbmsgaXQKKwkg ICAgIGFjY29yZGluZ2x5LiAgS2VlcCBhIG1pbmltdW0gc2l6ZSBvZiAyMCBieXRlcy4gICov CisJICBpbnQgc2l6ZSA9IG1pbiAoMjAwMCwgbWF4ICgyMCwgKGJ1Zi0+dGV4dC0+el9ieXRl IC8gMTApKSk7CisKKwkgIGlmIChidWYtPnRleHQtPmdhcF9zaXplID4gc2l6ZSkKKwkgICAg eworCSAgICAgIHN0cnVjdCBidWZmZXIgKnNhdmVfY3VycmVudCA9IGN1cnJlbnRfYnVmZmVy OworCSAgICAgIGN1cnJlbnRfYnVmZmVyID0gYnVmOworCSAgICAgIG1ha2VfZ2FwICgtKGJ1 Zi0+dGV4dC0+Z2FwX3NpemUgLSBzaXplKSk7CisJICAgICAgY3VycmVudF9idWZmZXIgPSBz YXZlX2N1cnJlbnQ7CisJICAgIH0KKwl9CisgICAgICBidWYtPnRleHQtPmNvbXBhY3QgPSBi dWYtPnRleHQtPm1vZGlmZjsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgcmV0dXJuIDA7 Cit9CisKIC8qIERldGVybWluZSB0eXBlIG9mIGdlbmVyaWMgTGlzcF9PYmplY3QgYW5kIG1h cmsgaXQgYWNjb3JkaW5nbHkuICAqLwogCiB2b2lkCkBAIC02NjE4LDcgKzY2MjIsMTggQEAK ICNlbmRpZgogfQogCi0KK0RFRlVOICgiY29tcGFjdC1idWZmZXIiLCBGY29tcGFjdF9idWZm ZXIsIFNjb21wYWN0X2J1ZmZlciwgMCwgMSwgMCwKKyAgICAgICBkb2M6IC8qIENvbXBhY3Qg QlVGRkVSIGJ5IHRydW5jYXRpbmcgdW5kbyBsaXN0IGFuZCBzaHJpbmtpbmcgdGhlIGdhcC4K K0lmIGJ1ZmZlciBpcyBuaWwsIGNvbXBhY3QgY3VycmVudCBidWZmZXIuICBDb21wYWN0aW9u IGlzIHBlcmZvcm1lZAorb25seSBpZiB0aGUgYnVmZmVyIHdhcyBjaGFuZ2VkIHNpbmNlIGxh c3QgY29tcGFjdGlvbi4gIFJldHVybiB0IGlmCitidWZmZXIgY29tcGFjdGlvbiB3YXMgcGVy Zm9ybWVkLCBhbmQgbmlsIG90aGVyd2lzZS4gICovKQorICAoTGlzcF9PYmplY3QgYnVmZmVy KQoreworICBpZiAoTklMUCAoYnVmZmVyKSkKKyAgICBYU0VUQlVGRkVSIChidWZmZXIsIGN1 cnJlbnRfYnVmZmVyKTsKKyAgQ0hFQ0tfQlVGRkVSIChidWZmZXIpOworICByZXR1cm4gY29t cGFjdF9idWZmZXIgKFhCVUZGRVIgKGJ1ZmZlcikpID8gUXQgOiBRbmlsOworfQogCiAMCiAv KiBEZWJ1Z2dpbmcgYWlkcy4gICovCkBAIC02ODk3LDYgKzY5MTIsNyBAQAogICBkZWZzdWJy ICgmU21ha2Vfc3ltYm9sKTsKICAgZGVmc3ViciAoJlNtYWtlX21hcmtlcik7CiAgIGRlZnN1 YnIgKCZTcHVyZWNvcHkpOworICBkZWZzdWJyICgmU2NvbXBhY3RfYnVmZmVyKTsKICAgZGVm c3ViciAoJlNnYXJiYWdlX2NvbGxlY3QpOwogICBkZWZzdWJyICgmU21lbW9yeV9saW1pdCk7 CiAgIGRlZnN1YnIgKCZTbWVtb3J5X2ZyZWUpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9i dWZmZXIuaCcKLS0tIHNyYy9idWZmZXIuaAkyMDEyLTA3LTE3IDA0OjI5OjUwICswMDAwCisr KyBzcmMvYnVmZmVyLmgJMjAxMi0wNy0xOCAxNDo0NTozOCArMDAwMApAQCAtNDM2LDYgKzQz Niw5IEBACiAKICAgICBFTUFDU19JTlQgb3ZlcmxheV9tb2RpZmY7CS8qIENvdW50cyBtb2Rp ZmljYXRpb25zIHRvIG92ZXJsYXlzLiAgKi8KIAorICAgIEVNQUNTX0lOVCBjb21wYWN0OwkJ IC8qIFNldCB0byBtb2RpZmYgZWFjaCB0aW1lIHdoZW4KKwkJCQkgICAgY29tcGFjdF9idWZm ZXIgYWRqdXN0cyB1cy4gICovCisKICAgICAvKiBNaW5pbXVtIHZhbHVlIG9mIEdQVCAtIEJF RyBzaW5jZSBsYXN0IHJlZGlzcGxheSB0aGF0IGZpbmlzaGVkLiAgKi8KICAgICBwdHJkaWZm X3QgYmVnX3VuY2hhbmdlZDsKIAoK --------------040105000501030504080105--