From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 21 09:39:50 2017 Received: (at submit) by debbugs.gnu.org; 21 Jul 2017 13:39:50 +0000 Received: from localhost ([127.0.0.1]:50487 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYY9m-0006g5-5c for submit@debbugs.gnu.org; Fri, 21 Jul 2017 09:39:50 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51454) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYY9k-0006fs-Ub for submit@debbugs.gnu.org; Fri, 21 Jul 2017 09:39:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dYY9e-0005Cs-UR for submit@debbugs.gnu.org; Fri, 21 Jul 2017 09:39:43 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38566) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dYY9e-0005Ck-QS for submit@debbugs.gnu.org; Fri, 21 Jul 2017 09:39:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42405) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dYY9d-0008Tg-J2 for bug-guile@gnu.org; Fri, 21 Jul 2017 09:39:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dYY9Z-0005A4-K0 for bug-guile@gnu.org; Fri, 21 Jul 2017 09:39:41 -0400 Received: from mail-pf0-x232.google.com ([2607:f8b0:400e:c00::232]:35948) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dYY9Z-000591-CK for bug-guile@gnu.org; Fri, 21 Jul 2017 09:39:37 -0400 Received: by mail-pf0-x232.google.com with SMTP id o88so24324277pfk.3 for ; Fri, 21 Jul 2017 06:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=sS7KkSIiDloap3/Fngj0RzmWpbNZ8GCPRUC9HvT4Zpo=; b=N/INHmNM5v6UlTpvTPfdc11AgQ4huLTsHGIQLBHhcspHYWcLKV34O7Y+Cty52uso9K vY6NZyGHxqm1m+YnTThOi+oYs1fhyoQ6fKfPNQyx4P6LpN5/kegxx5CB/cI/q9v1al1b NN3q55iFe8l3PBCbJLwhBjvrYoqx8Rq3wTvMKCZQ+Bl+d7iCEBqqMlaNOsg7jKVL2Ty8 Cp2HkZed+ojaW6uRZOfp4J3ke0OSjAVEYEpMAGJKzP1Ho0oWRNJGiFuLMlgQiecAN05T dJBS2ss9IiNqQV1nmpDxD+2hA829Z4v5ZAwOWItvQzr7lz3ZfO1xLi2OX+trx7Wc9Ec+ HhcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=sS7KkSIiDloap3/Fngj0RzmWpbNZ8GCPRUC9HvT4Zpo=; b=CcoqbF0kWJeR7kbyIAKbzlLsh57RfGx6YhpYed8OyHqqKIqpkpw9RSd5K0L2vsDRWb wmpS9n6SPJHUKCdZ0vTsKf8CoD18icFBtkPOYpRJ2sC5OdxBmJsJip6sHJ8eH/yD/EWv 6NMcsQyaYxpOlLoV2hq+j7KGTv2jOxb17FmkbcDExYL6NZo6aHbTLJMgg6taqkbXED9c AwUaqJBzSrz7zLQryfWE9N38KTq5wJrsGtbEXq3n3Ikratc5TlzC2vx+xv1tmvhyGzVI Jbxdt9RgVsmDXKUi810fuUKoL4YjR8pN4HMKhxyNiMsVUWKqdm5vOChy2MGScN6kbUVH +7NA== X-Gm-Message-State: AIVw110eA2yIPSGlyuYmidiMXpSBYrp1TvV/sQtk2vE1CctVKCwH+iws Y83QBfgDGRr5mG0UGcc= X-Received: by 10.99.152.66 with SMTP id l2mr7251123pgo.93.1500644374140; Fri, 21 Jul 2017 06:39:34 -0700 (PDT) Received: from nautilus.championbroadband.com (216-165-236-44.championbroadband.com. [216.165.236.44]) by smtp.gmail.com with ESMTPSA id v9sm6634161pfi.115.2017.07.21.06.39.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Jul 2017 06:39:33 -0700 (PDT) From: Matt Wette Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: [wishlist] scheme level mmap Message-Id: Date: Fri, 21 Jul 2017 06:39:32 -0700 To: bug-guile@gnu.org X-Mailer: Apple Mail (2.3273) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) There was an implicit request on the user-guile mailing list (20 Jul = 2017) to provide a scheme language call to mmap. I am working on a prototype and will post when I get a simple case = working. Here is non-working code so far: Currently I have this in a file =E2=80=9Cmmap.c=E2=80=9D and #including = into filesys.c. #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_SYS_MMAN_H # include #endif #include "libguile/_scm.h" #include "libguile/smob.h" #include "libguile/fdes-finalizers.h" #include "libguile/feature.h" SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset); SCM_API SCM scm_munmap (SCM addr, SCM len); #if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) // python mmap makes the last four args optional // should use fd=3D-1 default on mac SCM_DEFINE (scm_mmap, "mmap", 6, 0, 0,=20 (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), "See the man page. returns a foreign pointer which one = would" "ordinarily convert to bytevector using pointer->bytevector. = " "Note that the region returned by mmap is not (?) searched " "by the garbage collector." "@example\n(define reg\n (pointer->bytevector\n " "(mmap %void-pointer #x10000 (logior PROT_READ PROT_WRITE) " "MAP_ANON -1 0) #x1000))" "@end example" ) #define FUNC_NAME s_scm_mmap { void *c_mem, *c_addr; size_t c_len; int c_prot, c_flags, c_fd; scm_t_off c_offset; SCM ret; SCM_VALIDATE_POINTER (1, addr); =20 c_addr =3D (void *) SCM_POINTER_VALUE (addr); c_len =3D scm_to_size_t (len); c_prot =3D scm_to_int (prot); c_flags =3D scm_to_int (flags); c_fd =3D scm_to_int (fd); c_offset =3D SCM_UNBNDP (offset) ? 0: scm_to_off_t (offset); =20 c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); ret =3D scm_from_pointer (c_mem, NULL); return ret; } #undef FUNC_NAME SCM_DEFINE (scm_munmap, "munmap", 2, 0, 0,=20 (SCM addr, SCM len), "See the man page. Given foreign pointer unmap." ) #define FUNC_NAME s_scm_munmap { void *c_addr; size_t c_len; int c_res; SCM res; SCM_VALIDATE_POINTER (1, addr); =20 c_addr =3D (void *) SCM_POINTER_VALUE (addr); c_len =3D scm_to_size_t (len); c_res =3D munmap(c_addr, c_len); res =3D scm_from_int (c_res); return res; } #endif /* HAVE_SYS_MMAN_H */ #if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) #define MMAP_DEFS \ scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); \ scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); \ scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); \ scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); \ \ scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); \ scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); \ scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); \ scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); \ scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); \ scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); \ scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); \ scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)) #else #define MMAP_DEFS /* */ #endif /* HAVE_SYS_MMAN_H */ From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 21 10:35:42 2017 Received: (at 27782) by debbugs.gnu.org; 21 Jul 2017 14:35:42 +0000 Received: from localhost ([127.0.0.1]:51345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYZ1p-00088b-Sd for submit@debbugs.gnu.org; Fri, 21 Jul 2017 10:35:42 -0400 Received: from mail-pf0-f170.google.com ([209.85.192.170]:34023) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYZ1o-00088P-30 for 27782@debbugs.gnu.org; Fri, 21 Jul 2017 10:35:40 -0400 Received: by mail-pf0-f170.google.com with SMTP id q85so24886604pfq.1 for <27782@debbugs.gnu.org>; Fri, 21 Jul 2017 07:35:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:date:references :to:in-reply-to:message-id; bh=tndBSRmlKBtcRNG/2KZbAu8xymotB4VCxVwliIg0WaU=; b=lJnCg6kwv9TamVwdzkXrCjZ8VBnh1uRJQTE2yz3a4HNcqTF23YuR+IjqvKQKJJzhfm W3p4er3Q3gG3kdY35r74yJvzgJ/Pgb2F2r9Fje88oDv+7S4kAEpdn6CTDzSgtZUcspI8 0VBL9R2S5Y2YFUSOzgUyo8a1kCjg6SKdDi3yU8xUU8sZOTqg5Wl2STNAhKKFphJ/FqUV k5npjDpIJLEgTLmrag+KIaE7qo3054AIRNJoqllyT9QxBbhq8ik771EyUZf+aYXeDP/Q 1cgTnnBNfLgnxCd/neF/neSd5VJhCXSVJsU3cOQ1PYPCk+9Z5IhKqJJ5NG+zZ7qQfA8x S/0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:date:references:to:in-reply-to:message-id; bh=tndBSRmlKBtcRNG/2KZbAu8xymotB4VCxVwliIg0WaU=; b=jPyMPCFtmQ9dTvzTq8BEsgw2ekYELsbTQMFi/WzDGdGtuK28ljKNJ9Mj/w+MDNa/vJ sgiZ+u4523tQ5GzdKckslyQiRh8Dm/HqweDOb6DcLwEASuAgfyz9HS98k+WIa4wMjoqv cw/NU+HWVYTPyIAi/sjBE0XhYHzzb+UnF9M+Hcmn3OMh0u14TsI/O/pIjRE2MqFg3/1J XCvl5IyhUP7nTYFldwfPj1Kaf9UbmfegpT4GknLR126L3MAlrJhwRCrUDLPXMxCxa1XZ DK84k/DzifCUGINVZ4qAKRpHNzoy9H8KVq8xi7JbJFy8k9SIOe4/B//5qMSdJ00HB2xu 2i6Q== X-Gm-Message-State: AIVw113axFwVtaIy+QHSQENAGZnW/9ZwBL5IX14/IGY5iY4CHfMiqR3u TlpEvTDuJeOlTl6ZBuY= X-Received: by 10.84.149.197 with SMTP id a5mr8360951plh.3.1500647733442; Fri, 21 Jul 2017 07:35:33 -0700 (PDT) Received: from nautilus.championbroadband.com (216-165-236-44.championbroadband.com. [216.165.236.44]) by smtp.gmail.com with ESMTPSA id v18sm9730043pfg.164.2017.07.21.07.35.32 for <27782@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Jul 2017 07:35:32 -0700 (PDT) From: Matt Wette Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: bug#27782: Acknowledgement ([wishlist] scheme level mmap) Date: Fri, 21 Jul 2017 07:35:31 -0700 References: To: 27782@debbugs.gnu.org In-Reply-To: Message-Id: <417DAD59-E2A0-43D3-9364-41660CFCD31B@gmail.com> X-Mailer: Apple Mail (2.3273) X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) Works on guile-2.2.2: > (use-modules (system foreign)) > (define raw (mmap %null-pointer #x1000 (logior PROT_READ PROT_WRITE) (logior MAP_ANON MAP_PRIVATE) -1 0)) > (munmap raw #x1000) $ diff filesys.c.orig filesys.c + #include "mmap.c" + void scm_init_filesys () { + MMAP_DEFS; #ifdef HAVE_POSIX scm_tc16_dir = scm_make_smob_type ("directory", 0); scm_set_smob_free (scm_tc16_dir, scm_dir_free); mmap.c-post2: #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_SYS_MMAN_H # include # include #endif #include "libguile/_scm.h" #include "libguile/smob.h" #include "libguile/fdes-finalizers.h" #include "libguile/feature.h" SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset); SCM_API SCM scm_munmap (SCM addr, SCM len); #if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) // python mmap makes the last four args optional // should use fd=-1 default on mac // The following works: // > (use-modules (system foreign)) // > (define raw (mmap %null-pointer #x1000 (logior PROT_READ PROT_WRITE) // (logior MAP_ANON MAP_PRIVATE) -1 0)) // > (munmap raw #x1000) SCM_DEFINE (scm_mmap, "mmap", 6, 0, 0, (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset), "See the man page. returns a foreign pointer which one would" "ordinarily convert to bytevector using pointer->bytevector. " "Note that the region returned by mmap is not (?) searched " "by the garbage collector." "@example\n(define reg\n (pointer->bytevector\n " "(mmap %null-pointer #x10000 (logior PROT_READ PROT_WRITE) " "(logior MAP_ANON MAP_PRIVATE) -1 0) #x1000))" "@end example" ) #define FUNC_NAME s_scm_mmap { void *c_mem, *c_addr; size_t c_len; int c_prot, c_flags, c_fd; scm_t_off c_offset; SCM_VALIDATE_POINTER (1, addr); c_addr = (void *) SCM_POINTER_VALUE (addr); c_len = scm_to_size_t (len); c_prot = scm_to_int (prot); c_flags = scm_to_int (flags); c_fd = scm_to_int (fd); c_offset = SCM_UNBNDP (offset) ? 0: scm_to_off_t (offset); c_mem = mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); if (c_mem == MAP_FAILED) SCM_SYSERROR; /* errno set */ else return scm_from_pointer (c_mem, NULL); } #undef FUNC_NAME SCM_DEFINE (scm_munmap, "munmap", 2, 0, 0, (SCM addr, SCM len), "See the man page. Given foreign pointer unmap." ) #define FUNC_NAME s_scm_munmap { void *c_addr; size_t c_len; int c_res; SCM_VALIDATE_POINTER (1, addr); c_addr = (void *) SCM_POINTER_VALUE (addr); c_len = scm_to_size_t (len); c_res = munmap(c_addr, c_len); if (c_res == -1) SCM_SYSERROR; /* errno set */ else return scm_from_int (c_res); } #endif /* HAVE_SYS_MMAN_H */ #if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) #define MMAP_DEFS \ scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); \ scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); \ scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); \ scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); \ \ scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); \ scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); \ scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); \ scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); \ scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); \ scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); \ scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); \ scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)) #else #define MMAP_DEFS /* */ #endif /* HAVE_SYS_MMAN_H */ From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 28 11:25:37 2017 Received: (at 27782) by debbugs.gnu.org; 28 Oct 2017 15:25:37 +0000 Received: from localhost ([127.0.0.1]:39355 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e8SzR-000767-GV for submit@debbugs.gnu.org; Sat, 28 Oct 2017 11:25:37 -0400 Received: from mail-pf0-f170.google.com ([209.85.192.170]:48109) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e8SzQ-00075u-AA for 27782@debbugs.gnu.org; Sat, 28 Oct 2017 11:25:36 -0400 Received: by mail-pf0-f170.google.com with SMTP id z11so7131267pfk.4 for <27782@debbugs.gnu.org>; Sat, 28 Oct 2017 08:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=cVZJG3tyGqFNaJMiho1SoCxe3qumfUS0KPdbm7l6hL8=; b=DqHxEKPan31ItFHmd9mLSTFXTLx/YefHGQzo2oztsb6K8+TiVEWmnaSJbKBRF4R/L0 7v+thzNbUj1vcGNI776HHtF13UR2NbKD2wQoiHA9fqQDe/K8EYPYz0qQyxXgR6tmb2c6 uTREHpE51OeSkI8VDqlVfRnpbJkV+6YtNzAr3OJchMxhU2PQvBL4jC0TOmGsdCOMBZ7r moRQtrJGF9x+7MvlQ6LUmUFUjJUqM3k0PRbAyfXoUyqIc5VRvEVYglZhV65Qbs6cjkJQ de5goxscS8A440YBu5CsxLsaSkwJfY0IqLjVkfb6ODs2TOu3jLyIyOMlQ8QcKG1tWVpn lvqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=cVZJG3tyGqFNaJMiho1SoCxe3qumfUS0KPdbm7l6hL8=; b=PcHNFI22Odn9Q07sO92q6tszhBBMBDFuyrzRHu8OAsyxxN/NBuyljNu/pd8FZMTXu1 7tQKyJB7nVlk91EtHh5+8WJvvUqvTlR1afu6GDDl0bIDcy926PF1KLdKSyn5ergAarBB DMtG3c+NEtKtOnqD4JTEdBlO40rJU3kXfn/xMZh8YmifRukudGBD3YEbXvjZ3WfqOFgL RnO46+WyeydFypjmXzAgD8CjxZEBdk6/DDPXPa2nzP0YHe9srNhJ+8NiHas8bpMnRYao GuKIVwXXnEU7wYeQE9lwZHXIwUFYA5k6G6jFfYLdYLEDRT2PqE/o/nZNcs31LVDv77ar QaDw== X-Gm-Message-State: AMCzsaVQjqFpmHZxdwRj4VHNHGmeWiMNForISeid8/rU4alURqdGTTKJ RoVQk1thMZERlI8MR1P96Ov9fZ+F X-Google-Smtp-Source: ABhQp+QtKd0JdSxYVtRnT7RHCOtVbdFA9rqYH78uvcYzuuIQs/phMI+UaqP6GUNUHpFrwg/05j8rfg== X-Received: by 10.98.34.22 with SMTP id i22mr3685367pfi.340.1509204329940; Sat, 28 Oct 2017 08:25:29 -0700 (PDT) Received: from nautilus.championbroadband.com (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id u7sm17899657pfh.142.2017.10.28.08.25.28 for <27782@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Oct 2017 08:25:29 -0700 (PDT) From: Matt Wette Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: mmap for guile 2.2.2 Message-Id: <68E9A19E-CC14-4FEF-96C3-4FCB6F6AD74A@gmail.com> Date: Sat, 28 Oct 2017 08:25:27 -0700 To: 27782@debbugs.gnu.org X-Mailer: Apple Mail (2.3273) X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) I worked on the code a bit more. It is currently implemented as a = #include "mman.c" in filesys.c=20 and another file "mman.c". I believe this needs to be reviewed by someone who understands the = constraints on foriegn pointers=20 and finalization better than I do. Also, there is a comment to add a = procedure mmap/no-search to=20 guarantee that the allocated region is not searched by the GC for = pointers. The following patch is against guile-2.2.2: --- libguile/filesys.c.orig 2017-07-21 06:14:18.000000000 -0700 +++ libguile/filesys.c 2017-10-27 15:40:04.000000000 -0700 @@ -1828,9 +1828,14 @@ =20 =0C =20 +#include "mman.c" + void scm_init_filesys () { +#ifdef HAVE_SYS_MMAN_H + init_mman(); +#endif #ifdef HAVE_POSIX scm_tc16_dir =3D scm_make_smob_type ("directory", 0); scm_set_smob_free (scm_tc16_dir, scm_dir_free); --- libguile/mman.c.orig 2017-07-20 17:06:55.000000000 -0700 +++ libguile/mman.c 2017-10-28 08:12:46.000000000 -0700 @@ -0,0 +1,165 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_SYS_MMAN_H +# include +# include +#endif + +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) + +#include "libguile/_scm.h" +#include "libguile/smob.h" +#include "libguile/fdes-finalizers.h" +#include "libguile/feature.h" + +SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, + SCM offset); +SCM_API SCM scm_munmap (SCM bvec); +void init_mman(void); +static void mmap_finalizer (void *ptr, void *data); + + +SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0,=20 + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), + "mmap addr len [prot [flags [fd [offset]]]]" + "See the man page. Returns a bytevector." + "ordinarily convert to bytevector using pointer->bytevector. = " + "Note that the region returned by mmap is not (?) searched " + "by the garbage collector. Defaults:\n" + " PROT (logior PROT_READ PROT_WRITE)\n" + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" + " FD -1\n" + " OFFSET 0\n" + "@example\n(define reg (mmap %null-pointer #x1000)\n" + "@end example" + ) +#define FUNC_NAME s_scm_mmap +{ + void *c_mem, *c_addr; + size_t c_len; + int c_prot, c_flags, c_fd; + scm_t_off c_offset; + SCM pointer, bvec; + + if (SCM_POINTER_P (addr)) + c_addr =3D SCM_POINTER_VALUE (addr); + else if (scm_is_integer (addr)) + c_addr =3D (void*) scm_to_uintptr_t (addr); + else + SCM_MISC_ERROR("bad addr", addr); + + c_len =3D scm_to_size_t (len); + =20 + if (SCM_UNBNDP (prot)) + c_prot =3D PROT_READ | PROT_WRITE; + else=20 + c_prot =3D scm_to_int (prot); + + if (SCM_UNBNDP (flags)) + c_flags =3D MAP_ANON | MAP_PRIVATE; + else + c_flags =3D scm_to_int (flags); + + if (SCM_UNBNDP (fd)) + c_fd =3D -1; + else + c_fd =3D scm_to_int (fd); + + if (SCM_UNBNDP (fd)) + c_offset =3D 0; + else + c_offset =3D scm_to_off_t (offset); + + c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); + if (c_mem =3D=3D MAP_FAILED) + SCM_SYSERROR; /* errno set */ + + pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem); + bvec =3D scm_c_take_typed_bytevector((signed char *) c_mem + = c_offset, c_len, + SCM_ARRAY_ELEMENT_TYPE_VU8, = pointer); + /* if sizeof(void*) < sizeof(size_t) we are in trouble: */ + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) c_len); + return bvec; +} +static void +mmap_finalizer (void *ptr, void *data) +{ + void *c_addr; + intptr_t c_len; + int res; + + c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER (ptr)); + c_len =3D (intptr_t) data; + res =3D munmap(c_addr, c_len); + if (res !=3D 0) SCM_SYSERROR; +} +#undef FUNC_NAME + +SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0,=20 + (SCM bvec), + "See the man page. Given bytevector unmap." + ) +#define FUNC_NAME s_scm_munmap +{ + void *c_addr; + size_t c_len; + int c_res; + + SCM_VALIDATE_BYTEVECTOR (1, bvec); + =20 + c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec); + c_len =3D SCM_BYTEVECTOR_LENGTH (bvec); + + c_res =3D munmap(c_addr, c_len); + if (c_res =3D=3D -1) + SCM_SYSERROR; /* errno set */ + + // TODO: clean up bytevector + return SCM_UNSPECIFIED; +} +#undef FUNC_NAME + +void init_mman(void) { +#ifdef PROT_NONE + scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); +#endif + +#ifdef MAP_ANONYMOUS + scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); +#endif +#ifdef MAP_ANON + scm_c_define ("MAP_ANO= From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 28 13:10:02 2017 Received: (at 27782) by debbugs.gnu.org; 28 Oct 2017 17:10:02 +0000 Received: from localhost ([127.0.0.1]:39418 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e8UcT-0001HI-EK for submit@debbugs.gnu.org; Sat, 28 Oct 2017 13:10:02 -0400 Received: from mail-pg0-f49.google.com ([74.125.83.49]:48554) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e8UcR-0001H6-CA for 27782@debbugs.gnu.org; Sat, 28 Oct 2017 13:09:59 -0400 Received: by mail-pg0-f49.google.com with SMTP id v78so7720578pgb.5 for <27782@debbugs.gnu.org>; Sat, 28 Oct 2017 10:09:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:date:references :to:in-reply-to:message-id; bh=vrWA8FdyGEhjvlvR6CMPIZYqnbqc+an9Q5n0Fcq4H6k=; b=Fq6iZDvXdO9LfV5RdHzFoJGfozjT76//msK8upmZuZ3LrppiwNQkgnLL0p4Zz6roYy Ioqr/67r9FBsJl1AxlSxgfwblrzM3d4hYBUfU9hYxKCQBrWimwfPBiAwxIrVKQd0VthA ftkHudYSB1Kl4b/iPyInVnLfmjoxORmaXPaMJ4XsjMX2mtBZpxIx7vq40Nb87OAlvr/f p8QSD9y3xKsI+NLoUfVFiHQlCN89O0lLZCoAcuppqjiryAAZKwEt0wh/Isr72iZjt7x+ TpMtnsGs7xlsgw3Mb2YiO0B032YW0yjleCNfcKLIu2jBtyhLaE4iEHlKiU6rF7j1z7N4 8UhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:date:references:to:in-reply-to:message-id; bh=vrWA8FdyGEhjvlvR6CMPIZYqnbqc+an9Q5n0Fcq4H6k=; b=fOWE9EBJK6v2O/0vlDqqOiClck4Jm58t6KWRzHAiUJoXG8o5DaICBDxNMuWJVizYGA lFZfWYeP6xnFEIrVQe/hkVrDsd1KKKsU2OO8RwZlrx1bNoijzv+wcFIgHpo4kANKvuA2 s81AUuDnbUP06MTLfcb4S6rmyENx/9b0Q6HsyYH4gE81yrKXM4LnmGuCQQm+WtiYEEP9 RT0BBeUS7zm+A5bleW2MG5rYnhkMngPDTfoIxWuwJUuHD6oXs8ZudhlLu4REDHE7R68G W9Ujfudo/jAB07iVUWebOOAn73qILSV9nAmtMM/GOT0OJlEfh+9MoVJghptYdc4KqDH/ 2NWw== X-Gm-Message-State: AMCzsaX8O1ZezFjlcYFEJhZUnEW3r/sN1KlaiggPbmTcUu9JX6+sAejX etcouVUlUK51ug3hwwAFuKw6iYQT X-Google-Smtp-Source: ABhQp+RTomTqV0G7ZNRkLwaI3mLsiL+0r2z4cZ2RrAJ1obrYjP5sNp6G1/8BIEOiA2vxDR3af4GLcA== X-Received: by 10.98.80.69 with SMTP id e66mr3840485pfb.112.1509210593173; Sat, 28 Oct 2017 10:09:53 -0700 (PDT) Received: from nautilus.championbroadband.com (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id l22sm21413493pfk.45.2017.10.28.10.09.52 for <27782@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Oct 2017 10:09:52 -0700 (PDT) From: Matt Wette Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: mmap for guile 2.2.2 Date: Sat, 28 Oct 2017 10:09:51 -0700 References: <68E9A19E-CC14-4FEF-96C3-4FCB6F6AD74A@gmail.com> To: 27782@debbugs.gnu.org In-Reply-To: <68E9A19E-CC14-4FEF-96C3-4FCB6F6AD74A@gmail.com> Message-Id: X-Mailer: Apple Mail (2.3273) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) I located GC_exclude_static_roots() call for the collector. Now mmap/search will run allocate a bytevector as in the previously = provided patch. And mmap will call mmap/search and then apply GC_exclude_static_roots() = to the mmap'd region. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 24 10:54:20 2017 Received: (at 27782) by debbugs.gnu.org; 24 Nov 2017 15:54:20 +0000 Received: from localhost ([127.0.0.1]:56132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIGJ1-0002W2-Kt for submit@debbugs.gnu.org; Fri, 24 Nov 2017 10:54:19 -0500 Received: from mail-pg0-f43.google.com ([74.125.83.43]:39085) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIGIz-0002Vp-BA for 27782@debbugs.gnu.org; Fri, 24 Nov 2017 10:54:18 -0500 Received: by mail-pg0-f43.google.com with SMTP id 70so15541114pgf.6 for <27782@debbugs.gnu.org>; Fri, 24 Nov 2017 07:54:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=8CHxkERYU2lWrfMn+NcDkTlhedhgfy/Ic7K4vFtOPKs=; b=Nbl6qMAawI4/uH4kSScN++r/lHLtIOeKIm8ZN/D+BpNmFQXXTK0xDR6QDnfJmnJWUo xvAfJbbedQfp3rSVtBC0mAfl5fyv3IX0OBQV0TAn3AbW22C+8nQZ5joC3BG1MHnWhlJ1 RvzeELZ5mWChPkwB1KkzkgIbdcsgh/bwh22D2usTvwdWoxiL0Njj8q9szTjH+2FhQKTO W1zVzBhGddJoKmJwxz0NmeochlHsv/nF2ZNtR2gMaIPobWLEhd23nKj4nEASFwT4J2HG DMU3aEl6anACoxtoutTzJx+bXVcWcT4OYjwNTCOKuE0IqI6xyDvxRZx5AnPtf00WVUJI 1OlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=8CHxkERYU2lWrfMn+NcDkTlhedhgfy/Ic7K4vFtOPKs=; b=l2Ux4mnLjNwnxdmDUokSs1XfZyr9E0VW1yaHT5t1rYekT6XVNK2liNkKhxbtbjGcxG hiFbYFVQ/mF1y5xd2DMoOv06Xs+swtPwYRW/kSckqbphM3NsuB/NNyas3/d9VT9+MBSy dGJk3mvwvyG4uPtrH+F1Fzv26TRE5H8f0GyvjOmUcpq8LaLyJp6GBap4CninE1AMeHjs H275lAMWfYhN5Og7MFnctbDFoZM7j5PPEZ59HVd8uDXqLjBTCs5hwkfSvdDWKe+EgGXc +Iexw6vs1sN7Vubuwph8c173wqJAUepNXEkLPc+oolGg3Xw1OG2czL7ImQPPjFytr8fp LrSQ== X-Gm-Message-State: AJaThX6qDRYTUUxp4dS3+qHFIb1/B8ZRigeXUfO/+6gwTfEAD/UvRAec 5OJg6CzSUVpT2/GCREFjtmiChR4W X-Google-Smtp-Source: AGs4zMbJgjTMh1nC15dtg9hMREjx7r7t7+PjrNIEvGmh/cXF0PgMPXpSxQcX/krxY+PJrPGRwyeucA== X-Received: by 10.101.80.8 with SMTP id f8mr8436813pgo.24.1511538850652; Fri, 24 Nov 2017 07:54:10 -0800 (PST) Received: from nautilus.championbroadband.com (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id o10sm25364361pgq.89.2017.11.24.07.54.09 for <27782@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Nov 2017 07:54:10 -0800 (PST) From: Matt Wette Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: mmap for guile Message-Id: Date: Fri, 24 Nov 2017 07:54:07 -0800 To: 27782@debbugs.gnu.org X-Mailer: Apple Mail (2.3273) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) I did a little more on this. Here is the latest. It provides mmap (not searched) and mmap/search (searched for pointers = to GC). --- libguile/filesys.c.orig 2017-03-01 10:54:31.000000000 -0800 +++ libguile/filesys.c 2017-10-28 10:05:10.000000000 -0700 @@ -1828,9 +1828,14 @@ =20 =0C =20 +#include "mman.c" + void scm_init_filesys () { +#ifdef HAVE_SYS_MMAN_H + init_mman(); +#endif #ifdef HAVE_POSIX scm_tc16_dir =3D scm_make_smob_type ("directory", 0); scm_set_smob_free (scm_tc16_dir, scm_dir_free); --- libguile/mman.c.orig 2017-10-28 10:05:10.000000000 -0700 +++ libguile/mman.c 2017-11-04 09:23:35.000000000 -0700 @@ -0,0 +1,199 @@ +// mman.c - v171104a +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_SYS_MMAN_H +# include +# include +#endif + +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) + +#include "libguile/_scm.h" +#include "libguile/smob.h" +#include "libguile/fdes-finalizers.h" +#include "libguile/feature.h" + +SCM_API SCM scm_mmap_search (SCM addr, SCM len, SCM prot, SCM flags, = SCM fd, + SCM offset); +SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, + SCM offset); +SCM_API SCM scm_munmap (SCM bvec); +void init_mman(void); +static void mmap_finalizer (void *ptr, void *data); + +SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0,=20 + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), + "mmap addr len [prot [flags [fd [offset]]]]" + "See the unix man page for mmap. Returns a bytevector." + "Note that the region allocated will be searched by the = garbage" + "collector for pointers. \n" + " Defaults:\n" + " PROT (logior PROT_READ PROT_WRITE)\n" + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" + " FD -1\n" + " OFFSET 0\n" + "@example\n(define reg (mmap/search %null-pointer #x1000)\n" + "@end example" + ) +#define FUNC_NAME s_scm_mmap_search +{ + void *c_mem, *c_addr; + size_t c_len; + int c_prot, c_flags, c_fd; + scm_t_off c_offset; + SCM pointer, bvec; + + if (SCM_POINTER_P (addr)) + c_addr =3D SCM_POINTER_VALUE (addr); + else if (scm_is_integer (addr)) + c_addr =3D (void*) scm_to_uintptr_t (addr); + else + SCM_MISC_ERROR("bad addr", addr); + + c_len =3D scm_to_size_t (len); + =20 + if (SCM_UNBNDP (prot)) + c_prot =3D PROT_READ | PROT_WRITE; + else=20 + c_prot =3D scm_to_int (prot); + + if (SCM_UNBNDP (flags)) + c_flags =3D MAP_ANON | MAP_PRIVATE; + else + c_flags =3D scm_to_int (flags); + + if (SCM_UNBNDP (fd)) + c_fd =3D -1; + else + c_fd =3D scm_to_int (fd); + + if (SCM_UNBNDP (fd)) + c_offset =3D 0; + else + c_offset =3D scm_to_off_t (offset); + + c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); + if (c_mem =3D=3D MAP_FAILED) + SCM_SYSERROR; /* errno set */ + + pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem); + bvec =3D scm_c_take_typed_bytevector((signed char *) c_mem + = c_offset, c_len, + SCM_ARRAY_ELEMENT_TYPE_VU8, = pointer); + /* if sizeof(void*) < sizeof(size_t) we are in trouble: */ + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) c_len); + return bvec; +} +#undef FUNC_NAME + +SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0,=20 + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), + "mmap addr len [prot [flags [fd [offset]]]]" + "See the man page. Returns a bytevector." + "Note that the region returned by mmap will NOT be searched = " + "by the garbage collector for pointers.\n" + "Defaults:\n" + " PROT (logior PROT_READ PROT_WRITE)\n" + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" + " FD -1\n" + " OFFSET 0\n" + "@example\n" + "(define bvec-1MB (mmap 0 #x100000)\n" + "@end example" + ) +#define FUNC_NAME s_scm_mmap +{ + SCM bvec; + void *c_mem; + size_t c_len; + + bvec =3D scm_mmap_search(addr, len, prot, flags, fd, offset); + c_mem =3D SCM_BYTEVECTOR_CONTENTS(bvec); + c_len =3D SCM_BYTEVECTOR_LENGTH(bvec); + + /* tell GC not to scan for pointers */ + GC_exclude_static_roots(c_mem, (char*) c_mem + c_len); + + return bvec; +} +static void +mmap_finalizer (void *ptr, void *data) +{ + void *c_addr; + intptr_t c_len; + int res; + + c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER (ptr)); + c_len =3D (intptr_t) data; + res =3D munmap(c_addr, c_len); + if (res !=3D 0) SCM_SYSERROR; +} +#undef FUNC_NAME + +SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0,=20 + (SCM bvec), + "See the man page. Given bytevector unmap." + ) +#define FUNC_NAME s_scm_munmap +{ + void *c_addr; + size_t c_len; + int c_res; + + SCM_VALIDATE_BYTEVECTOR (1, bvec); + =20 + c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec); + c_len =3D SCM_BYTEVECTOR_LENGTH (bvec); + + c_res =3D munmap(c_addr, c_len); + if (c_res =3D=3D -1) + SCM_SYSERROR; /* errno set */ + + // TODO: clean up bytevector + return SCM_UNSPECIFIED; +} +#undef FUNC_NAME + +void init_mman(void) { +#ifdef PROT_NONE + scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); +#endif +#ifdef PROT_ + scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); +#endif + +#ifdef MAP_ANONYMOUS + scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); +#endif +#ifdef MAP_ANON + scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); +#endif +#ifdef MAP_FILE + scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); +#endif +#ifdef MAP_FIXED + scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); +#endif +#ifdef MAP_HASSEMAPHORE + scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); +#endif +#ifdef MAP_PRIVATE + scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); +#endif +#ifdef MAP_SHARED + scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); +#endif +#ifdef MAP_NOCACHE + scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)); +#endif + scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize())); +} + +#endif /* HAVE_SYS_MMAN_H */ From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 24 11:22:23 2017 Received: (at 27782) by debbugs.gnu.org; 24 Nov 2017 16:22:23 +0000 Received: from localhost ([127.0.0.1]:56157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIGkA-0003Bs-KB for submit@debbugs.gnu.org; Fri, 24 Nov 2017 11:22:23 -0500 Received: from mail-yb0-f176.google.com ([209.85.213.176]:34521) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIGk8-0003Bg-Uq for 27782@debbugs.gnu.org; Fri, 24 Nov 2017 11:22:21 -0500 Received: by mail-yb0-f176.google.com with SMTP id k40so8430722ybj.1 for <27782@debbugs.gnu.org>; Fri, 24 Nov 2017 08:22:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=V4cNgaurF9cbLgMRZmHUoQM3RX8Y/QYV84MN32xzCsg=; b=JF6Z0JXdPdLp1Q/h0DbzxezfuaVWKxWWL9CNto/+dsXm0bFuF/CveYxUqDZ3tf7fgY xnqvHFplgJhQheWEzgy5s6fQR1ZssK5ZHKKi+j7HQFvF4le8Ihjz98MX/TW3xDEKjegJ K5LwCREhVjOdrPAc7IslTFSLqfyNVX/bzQBrhfnE1ecKih3QwZ5TGlY0rY6QXHyLC02C PbuSryUJcGU7h5VIx8UWOdNMYERNNSWabl0i9X3jEibe/k4TycA3DH19tz5Fu9yF4Q2d YWLXDO8ZbZozqj1NFw0fZp4v5slejLOpwi2MNj2IsG1HuPUQ5nIfevpOncEunobqSX9W 9bLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=V4cNgaurF9cbLgMRZmHUoQM3RX8Y/QYV84MN32xzCsg=; b=rtLFBL53x64mbJSImLw+/zn20sD4aIv9tOQxR1w/pL7zetuPIGxriHZHLWQF1BYAD6 E9/fEXAt5a0R70tcYrv+7sndWUTz0rkBaAT3T1sWTGygWIMFZl4c+6Jq7P6OCPvtLfex LbHQD99PFyd+d/R3/QPXRyCzX7nBYCnv5DuulDHMWp/5u1ggKXjCtOuaX6ndb/XxtK/S hhtiC/+7zt8Fd77qLMrh3kdW3JEZeN6K/rT4tOHg23EgVRoV8vV3rN3huhEtee2K6fzZ 5WTD0vgoN1oW5olEgoV5ZwCpA/Mb80v45EhI79nz+fIyp1OrqHAhy3JazoHTQL33Y8c5 zMtw== X-Gm-Message-State: AJaThX4AoQCqh33kISUfW0lB+POTmort75K0QOcZBpPfEndLIlaUQK4i God0CAlFy5W+ZrSFA9jOY1uErIx9XMhtLiRfIb4= X-Google-Smtp-Source: AGs4zMbCRjNdA9OtECYp6MNvDlHrXJtASZYja55UYJ+XS9LvRKi2ce+vlQkPhvTVh6ZWUDb/r5aTwoQ+7ASamgUAXTk= X-Received: by 10.37.216.137 with SMTP id p131mr17613971ybg.397.1511540535249; Fri, 24 Nov 2017 08:22:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.45.94 with HTTP; Fri, 24 Nov 2017 08:22:14 -0800 (PST) Received: by 10.37.45.94 with HTTP; Fri, 24 Nov 2017 08:22:14 -0800 (PST) In-Reply-To: References: From: Nala Ginrut Date: Sat, 25 Nov 2017 00:22:14 +0800 Message-ID: Subject: Re: bug#27782: mmap for guile To: Matt Wette Content-Type: multipart/alternative; boundary="94eb2c061e16aad101055ebcf4cd" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) --94eb2c061e16aad101055ebcf4cd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the work! Could you please add MAP_POPULATE too? 2017=E5=B9=B411=E6=9C=8824=E6=97=A5 =E4=B8=8B=E5=8D=8811:55=EF=BC=8C"Matt W= ette" =E5=86=99=E9=81=93=EF=BC=9A > > > > > > I did a little more on this. Here is the latest. > It provides mmap (not searched) and mmap/search (searched for pointers to > GC). > > > --- libguile/filesys.c.orig 2017-03-01 10:54:31.000000000 -0800 > +++ libguile/filesys.c 2017-10-28 10:05:10.000000000 -0700 > @@ -1828,9 +1828,14 @@ > > > > +#include "mman.c" > + > void > scm_init_filesys () > { > +#ifdef HAVE_SYS_MMAN_H > + init_mman(); > +#endif > #ifdef HAVE_POSIX > scm_tc16_dir =3D scm_make_smob_type ("directory", 0); > scm_set_smob_free (scm_tc16_dir, scm_dir_free); > --- libguile/mman.c.orig 2017-10-28 10:05:10.000000000 -0700 > +++ libguile/mman.c 2017-11-04 09:23:35.000000000 -0700 > @@ -0,0 +1,199 @@ > +// mman.c - v171104a > +#ifdef HAVE_CONFIG_H > +# include > +#endif > + > +#ifdef HAVE_SYS_MMAN_H > +# include > +# include > +#endif > + > +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) > + > +#include "libguile/_scm.h" > +#include "libguile/smob.h" > +#include "libguile/fdes-finalizers.h" > +#include "libguile/feature.h" > + > +SCM_API SCM scm_mmap_search (SCM addr, SCM len, SCM prot, SCM flags, SCM > fd, > + SCM offset); > +SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, > + SCM offset); > +SCM_API SCM scm_munmap (SCM bvec); > +void init_mman(void); > +static void mmap_finalizer (void *ptr, void *data); > + > +SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0, > + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset)= , > + "mmap addr len [prot [flags [fd [offset]]]]" > + "See the unix man page for mmap. Returns a bytevector." > + "Note that the region allocated will be searched by the > garbage" > + "collector for pointers. \n" > + " Defaults:\n" > + " PROT (logior PROT_READ PROT_WRITE)\n" > + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" > + " FD -1\n" > + " OFFSET 0\n" > + "@example\n(define reg (mmap/search %null-pointer #x1000)\n" > + "@end example" > + ) > +#define FUNC_NAME s_scm_mmap_search > +{ > + void *c_mem, *c_addr; > + size_t c_len; > + int c_prot, c_flags, c_fd; > + scm_t_off c_offset; > + SCM pointer, bvec; > + > + if (SCM_POINTER_P (addr)) > + c_addr =3D SCM_POINTER_VALUE (addr); > + else if (scm_is_integer (addr)) > + c_addr =3D (void*) scm_to_uintptr_t (addr); > + else > + SCM_MISC_ERROR("bad addr", addr); > + > + c_len =3D scm_to_size_t (len); > + > + if (SCM_UNBNDP (prot)) > + c_prot =3D PROT_READ | PROT_WRITE; > + else > + c_prot =3D scm_to_int (prot); > + > + if (SCM_UNBNDP (flags)) > + c_flags =3D MAP_ANON | MAP_PRIVATE; > + else > + c_flags =3D scm_to_int (flags); > + > + if (SCM_UNBNDP (fd)) > + c_fd =3D -1; > + else > + c_fd =3D scm_to_int (fd); > + > + if (SCM_UNBNDP (fd)) > + c_offset =3D 0; > + else > + c_offset =3D scm_to_off_t (offset); > + > + c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); > + if (c_mem =3D=3D MAP_FAILED) > + SCM_SYSERROR; /* errno set */ > + > + pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem); > + bvec =3D scm_c_take_typed_bytevector((signed char *) c_mem + c_offset, > c_len, > + SCM_ARRAY_ELEMENT_TYPE_VU8, pointer)= ; > + /* if sizeof(void*) < sizeof(size_t) we are in trouble: */ > + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) c_len); > + return bvec; > +} > +#undef FUNC_NAME > + > +SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0, > + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset)= , > + "mmap addr len [prot [flags [fd [offset]]]]" > + "See the man page. Returns a bytevector." > + "Note that the region returned by mmap will NOT be searched " > + "by the garbage collector for pointers.\n" > + "Defaults:\n" > + " PROT (logior PROT_READ PROT_WRITE)\n" > + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" > + " FD -1\n" > + " OFFSET 0\n" > + "@example\n" > + "(define bvec-1MB (mmap 0 #x100000)\n" > + "@end example" > + ) > +#define FUNC_NAME s_scm_mmap > +{ > + SCM bvec; > + void *c_mem; > + size_t c_len; > + > + bvec =3D scm_mmap_search(addr, len, prot, flags, fd, offset); > + c_mem =3D SCM_BYTEVECTOR_CONTENTS(bvec); > + c_len =3D SCM_BYTEVECTOR_LENGTH(bvec); > + > + /* tell GC not to scan for pointers */ > + GC_exclude_static_roots(c_mem, (char*) c_mem + c_len); > + > + return bvec; > +} > +static void > +mmap_finalizer (void *ptr, void *data) > +{ > + void *c_addr; > + intptr_t c_len; > + int res; > + > + c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER (ptr)); > + c_len =3D (intptr_t) data; > + res =3D munmap(c_addr, c_len); > + if (res !=3D 0) SCM_SYSERROR; > +} > +#undef FUNC_NAME > + > +SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0, > + (SCM bvec), > + "See the man page. Given bytevector unmap." > + ) > +#define FUNC_NAME s_scm_munmap > +{ > + void *c_addr; > + size_t c_len; > + int c_res; > + > + SCM_VALIDATE_BYTEVECTOR (1, bvec); > + > + c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec); > + c_len =3D SCM_BYTEVECTOR_LENGTH (bvec); > + > + c_res =3D munmap(c_addr, c_len); > + if (c_res =3D=3D -1) > + SCM_SYSERROR; /* errno set */ > + > + // TODO: clean up bytevector > + return SCM_UNSPECIFIED; > +} > +#undef FUNC_NAME > + > +void init_mman(void) { > +#ifdef PROT_NONE > + scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); > +#endif > + > +#ifdef MAP_ANONYMOUS > + scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); > +#endif > +#ifdef MAP_ANON > + scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); > +#endif > +#ifdef MAP_FILE > + scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); > +#endif > +#ifdef MAP_FIXED > + scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); > +#endif > +#ifdef MAP_HASSEMAPHORE > + scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); > +#endif > +#ifdef MAP_PRIVATE > + scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); > +#endif > +#ifdef MAP_SHARED > + scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); > +#endif > +#ifdef MAP_NOCACHE > + scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)); > +#endif > + scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize())); > +} > + > +#endif /* HAVE_SYS_MMAN_H */ > > > > > --94eb2c061e16aad101055ebcf4cd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the work! Could you please add=C2=A0MAP_POPULATE too?

2017=E5=B9=B411=E6=9C=8824=E6=97=A5 =E4=B8=8B=E5=8D= =8811:55=EF=BC=8C"Matt Wette" <matt.wette@gmail.com>=E5=86=99=E9=81=93=EF=BC=9A





I did a little more on this.=C2=A0 Here is the latest.
It provides mmap (not searched) and mmap/search (searched for pointers to G= C).


--- libguile/filesys.c.orig=C2=A0 =C2=A0 =C2=A02017-03-01 10:54:31.00000000= 0 -0800
+++ libguile/filesys.c=C2=A0 2017-10-28 10:05:10.000000000 -0700
@@ -1828,9 +1828,14 @@



+#include "mman.c"
+
=C2=A0void
=C2=A0scm_init_filesys ()
=C2=A0{
+#ifdef HAVE_SYS_MMAN_H
+=C2=A0 init_mman();
+#endif
=C2=A0#ifdef HAVE_POSIX
=C2=A0 =C2=A0scm_tc16_dir =3D scm_make_smob_type ("directory", 0)= ;
=C2=A0 =C2=A0scm_set_smob_free (scm_tc16_dir, scm_dir_free);
--- libguile/mman.c.orig=C2=A0 =C2=A0 =C2=A0 =C2=A0 2017-10-28 10:05:10.000= 000000 -0700
+++ libguile/mman.c=C2=A0 =C2=A0 =C2=A02017-11-04 09:23:35.000000000 -0700<= br> @@ -0,0 +1,199 @@
+// mman.c - v171104a
+#ifdef HAVE_CONFIG_H
+#=C2=A0 include <config.h>
+#endif
+
+#ifdef HAVE_SYS_MMAN_H
+#=C2=A0 include <sys/mman.h>
+#=C2=A0 include <errno.h>
+#endif
+
+#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS)
+
+#include "libguile/_scm.h"
+#include "libguile/smob.h"
+#include "libguile/fdes-finalizers.h"
+#include "libguile/feature.h"
+
+SCM_API SCM scm_mmap_search (SCM addr, SCM len, SCM prot, SCM flags, SCM f= d,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 SCM offset);
+SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0SCM offset);
+SCM_API SCM scm_munmap (SCM bvec);
+void init_mman(void);
+static void mmap_finalizer (void *ptr, void *data);
+
+SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (SCM addr, SCM len, SCM prot, SC= M flags, SCM fd, SCM offset),
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"mmap addr len [prot [flags = [fd [offset]]]]"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"See the unix man page for m= map.=C2=A0 Returns a bytevector."
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"Note that the region alloca= ted will be searched by the garbage"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"collector for pointers.=C2= =A0 \n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0" Defaults:\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 PROT=C2=A0 =C2=A0(lo= gior PROT_READ PROT_WRITE)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 FLAGS=C2=A0 (logior = MAP_ANON MAP_PRIVATE)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 FD=C2=A0 =C2=A0 =C2= =A0-1\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 OFFSET 0\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"@example\n(define reg (mmap= /search %null-pointer #x1000)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"@end example"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0)
+#define FUNC_NAME s_scm_mmap_search
+{
+=C2=A0 void *c_mem, *c_addr;
+=C2=A0 size_t c_len;
+=C2=A0 int c_prot, c_flags, c_fd;
+=C2=A0 scm_t_off c_offset;
+=C2=A0 SCM pointer, bvec;
+
+=C2=A0 if (SCM_POINTER_P (addr))
+=C2=A0 =C2=A0 c_addr =3D SCM_POINTER_VALUE (addr);
+=C2=A0 else if (scm_is_integer (addr))
+=C2=A0 =C2=A0 c_addr =3D (void*) scm_to_uintptr_t (addr);
+=C2=A0 else
+=C2=A0 =C2=A0 SCM_MISC_ERROR("bad addr", addr);
+
+=C2=A0 c_len =3D scm_to_size_t (len);
+
+=C2=A0 if (SCM_UNBNDP (prot))
+=C2=A0 =C2=A0 c_prot =3D PROT_READ | PROT_WRITE;
+=C2=A0 else
+=C2=A0 =C2=A0 c_prot =3D scm_to_int (prot);
+
+=C2=A0 if (SCM_UNBNDP (flags))
+=C2=A0 =C2=A0 c_flags =3D MAP_ANON | MAP_PRIVATE;
+=C2=A0 else
+=C2=A0 =C2=A0 c_flags =3D scm_to_int (flags);
+
+=C2=A0 if (SCM_UNBNDP (fd))
+=C2=A0 =C2=A0 c_fd =3D -1;
+=C2=A0 else
+=C2=A0 =C2=A0 c_fd =3D scm_to_int (fd);
+
+=C2=A0 if (SCM_UNBNDP (fd))
+=C2=A0 =C2=A0 c_offset =3D 0;
+=C2=A0 else
+=C2=A0 =C2=A0 c_offset =3D scm_to_off_t (offset);
+
+=C2=A0 c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset);
+=C2=A0 if (c_mem =3D=3D MAP_FAILED)
+=C2=A0 =C2=A0 SCM_SYSERROR;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* errno set */
+
+=C2=A0 pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem);
+=C2=A0 bvec =3D scm_c_take_typed_bytevector((signed char *) c_mem + c= _offset, c_len,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SCM_ARRAY_ELEMENT_TYPE= _VU8, pointer);
+=C2=A0 /* if sizeof(void*) < sizeof(size_t) we are in trouble: */
+=C2=A0 scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) c_len)= ;
+=C2=A0 return bvec;
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (SCM addr, SCM len, SCM prot, SC= M flags, SCM fd, SCM offset),
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"mmap addr len [prot [flags = [fd [offset]]]]"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"See the man page.=C2=A0 Ret= urns a bytevector."
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"Note that the region return= ed by mmap will NOT be searched "
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"by the garbage collector fo= r pointers.\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"Defaults:\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 PROT=C2=A0 =C2=A0(lo= gior PROT_READ PROT_WRITE)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 FLAGS=C2=A0 (logior = MAP_ANON MAP_PRIVATE)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 FD=C2=A0 =C2=A0 =C2= =A0-1\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"=C2=A0 OFFSET 0\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"@example\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"(define bvec-1MB (mmap 0 #x= 100000)\n"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"@end example"
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0)
+#define FUNC_NAME s_scm_mmap
+{
+=C2=A0 SCM bvec;
+=C2=A0 void *c_mem;
+=C2=A0 size_t c_len;
+
+=C2=A0 bvec =3D scm_mmap_search(addr, len, prot, flags, fd, offset);
+=C2=A0 c_mem =3D SCM_BYTEVECTOR_CONTENTS(bvec);
+=C2=A0 c_len =3D SCM_BYTEVECTOR_LENGTH(bvec);
+
+=C2=A0 /* tell GC not to scan for pointers */
+=C2=A0 GC_exclude_static_roots(c_mem, (char*) c_mem + c_len);
+
+=C2=A0 return bvec;
+}
+static void
+mmap_finalizer (void *ptr, void *data)
+{
+=C2=A0 void *c_addr;
+=C2=A0 intptr_t c_len;
+=C2=A0 int res;
+
+=C2=A0 c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER (ptr));
+=C2=A0 c_len =3D (intptr_t) data;
+=C2=A0 res =3D munmap(c_addr, c_len);
+=C2=A0 if (res !=3D 0) SCM_SYSERROR;
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (SCM bvec),
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"See the man page. Given byt= evector unmap."
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0)
+#define FUNC_NAME s_scm_munmap
+{
+=C2=A0 void *c_addr;
+=C2=A0 size_t c_len;
+=C2=A0 int c_res;
+
+=C2=A0 SCM_VALIDATE_BYTEVECTOR (1, bvec);
+
+=C2=A0 c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec);
+=C2=A0 c_len =3D SCM_BYTEVECTOR_LENGTH (bvec);
+
+=C2=A0 c_res =3D munmap(c_addr, c_len);
+=C2=A0 if (c_res =3D=3D -1)
+=C2=A0 =C2=A0 SCM_SYSERROR;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* errno set */
+
+=C2=A0 // TODO: clean up bytevector
+=C2=A0 return SCM_UNSPECIFIED;
+}
+#undef FUNC_NAME
+
+void init_mman(void) {
+#ifdef PROT_NONE
+=C2=A0 scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE));
+#endif
+#ifdef PROT_
+=C2=A0 scm_c_define ("PROT_READ", scm_from_int (PROT_READ));
+#endif
+#ifdef PROT_
+=C2=A0 scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); +#endif
+#ifdef PROT_
+=C2=A0 scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC));
+#endif
+
+#ifdef MAP_ANONYMOUS
+=C2=A0 scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOU= S));
+#endif
+#ifdef MAP_ANON
+=C2=A0 scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON));
+#endif
+#ifdef MAP_FILE
+=C2=A0 scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE));
+#endif
+#ifdef MAP_FIXED
+=C2=A0 scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED));
+#endif
+#ifdef MAP_HASSEMAPHORE
+=C2=A0 scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSE= MAPHORE));
+#endif
+#ifdef MAP_PRIVATE
+=C2=A0 scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE));=
+#endif
+#ifdef MAP_SHARED
+=C2=A0 scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); +#endif
+#ifdef MAP_NOCACHE
+=C2=A0 scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE));=
+#endif
+=C2=A0 scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize()));=
+}
+
+#endif /* HAVE_SYS_MMAN_H */




--94eb2c061e16aad101055ebcf4cd-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 24 12:09:44 2017 Received: (at 27782) by debbugs.gnu.org; 24 Nov 2017 17:09:44 +0000 Received: from localhost ([127.0.0.1]:56238 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIHTz-0004Rf-PL for submit@debbugs.gnu.org; Fri, 24 Nov 2017 12:09:44 -0500 Received: from mail-pg0-f52.google.com ([74.125.83.52]:43201) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIHTx-0004RP-Kf for 27782@debbugs.gnu.org; Fri, 24 Nov 2017 12:09:42 -0500 Received: by mail-pg0-f52.google.com with SMTP id r12so15666463pgu.10 for <27782@debbugs.gnu.org>; Fri, 24 Nov 2017 09:09:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=3x9ftzPvouWiFDG9/Sp1S9Dt4Yx4DFpMGHCcvIRfb64=; b=b1HLjTEcU0GP229FQ/GtzaegTB6X9Ju7APQKbBDzHDDL5ghCc51WopYQCWmyF16voz KOMfcrjgjJ4eIC7CcIl+Wwfy6sC53bphRUOh+rCNQ7UIXiU9mMzKAApHrXOB1vu+mWTp quxg/btxhTuNdwc09BJOxMJAfc3EqokgmfnVrP/AEw6LozCND92u5ttuETVLD0CcpTG7 QE02fnvtRs98MaCLuol9coeQi8h5NpAEDmI/R+pb1bdegsHA5bMJxvqwp5jm24KFj/Us I9ItpM7zob9Sidd6QYSksO46oO7GDHSkUxlFtsBrYi753MI5FCowGSKn/1OhmbwpEatU 0peg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=3x9ftzPvouWiFDG9/Sp1S9Dt4Yx4DFpMGHCcvIRfb64=; b=iuq3yjBr29MezrRbu8HiK9bXH4UnSxyIluTPtglWqTbx0d7cOeJHP4a5kU+F7YZjKu DwKz5FU/iugTNCkjNHZ9/uglzk5b1U0c1a/0MFa4SVruLZQnVi8RGd2IeAb4ukv0l2SP ejbiOjhjEjQ1Dskimu2mR2LMeFDCqTnCYY1RktpOVAYq+kWsjN29Zm2kJBQG/z51Fw0N WkWD8z+pSdGQ6LPRRGTkumUzzjgbcvj62YIbwq7ctyCz5AznQnyMAFMhgjiq5w2Cbzfe QDig3dGNSnpw7Ctz4zYwRhJHsUE8N72U/xLeR/WBjb6URnt0uRdR0igz3XI3WE7POqwQ kFTA== X-Gm-Message-State: AJaThX755fCZpC69fui65Fp19oR5HMMQZj/2NIrcjMHGyxshOKF/bWbx fhv55XmYS+rg7QEr+NFNV9U= X-Google-Smtp-Source: AGs4zMZyU2SN2669cuswEeADZ0DWQcwWtG6oz08ubjByOtXisgKtqx0ojxmo37sTEQKdQQ+1f4ShOQ== X-Received: by 10.99.114.30 with SMTP id n30mr28526846pgc.129.1511543375703; Fri, 24 Nov 2017 09:09:35 -0800 (PST) Received: from nautilus.championbroadband.com (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id m87sm27843812pfi.88.2017.11.24.09.09.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Nov 2017 09:09:34 -0800 (PST) From: Matt Wette Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_705C18C9-0341-466A-9392-6E7A4A94B270" Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: bug#27782: mmap for guile Date: Fri, 24 Nov 2017 09:09:33 -0800 In-Reply-To: To: Nala Ginrut References: X-Mailer: Apple Mail (2.3273) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --Apple-Mail=_705C18C9-0341-466A-9392-6E7A4A94B270 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 got it. > On Nov 24, 2017, at 8:22 AM, Nala Ginrut wrote: >=20 > Thanks for the work! Could you please add MAP_POPULATE too? >=20 > 2017=E5=B9=B411=E6=9C=8824=E6=97=A5 =E4=B8=8B=E5=8D=8811:55=EF=BC=8C"Mat= t Wette" >=E5=86=99=E9=81= =93=EF=BC=9A >=20 >=20 >=20 >=20 >=20 > I did a little more on this. Here is the latest. > It provides mmap (not searched) and mmap/search (searched for pointers = to GC). >=20 >=20 > --- libguile/filesys.c.orig 2017-03-01 10:54:31.000000000 -0800 > +++ libguile/filesys.c 2017-10-28 10:05:10.000000000 -0700 > @@ -1828,9 +1828,14 @@ >=20 >=20 >=20 > +#include "mman.c" > + > void > scm_init_filesys () > { > +#ifdef HAVE_SYS_MMAN_H > + init_mman(); > +#endif > #ifdef HAVE_POSIX > scm_tc16_dir =3D scm_make_smob_type ("directory", 0); > scm_set_smob_free (scm_tc16_dir, scm_dir_free); > --- libguile/mman.c.orig 2017-10-28 10:05:10.000000000 -0700 > +++ libguile/mman.c 2017-11-04 09:23:35.000000000 -0700 > @@ -0,0 +1,199 @@ > +// mman.c - v171104a > +#ifdef HAVE_CONFIG_H > +# include > +#endif > + > +#ifdef HAVE_SYS_MMAN_H > +# include > +# include > +#endif > + > +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) > + > +#include "libguile/_scm.h" > +#include "libguile/smob.h" > +#include "libguile/fdes-finalizers.h" > +#include "libguile/feature.h" > + > +SCM_API SCM scm_mmap_search (SCM addr, SCM len, SCM prot, SCM flags, = SCM fd, > + SCM offset); > +SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, > + SCM offset); > +SCM_API SCM scm_munmap (SCM bvec); > +void init_mman(void); > +static void mmap_finalizer (void *ptr, void *data); > + > +SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0, > + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), > + "mmap addr len [prot [flags [fd [offset]]]]" > + "See the unix man page for mmap. Returns a bytevector." > + "Note that the region allocated will be searched by the = garbage" > + "collector for pointers. \n" > + " Defaults:\n" > + " PROT (logior PROT_READ PROT_WRITE)\n" > + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" > + " FD -1\n" > + " OFFSET 0\n" > + "@example\n(define reg (mmap/search %null-pointer = #x1000)\n" > + "@end example" > + ) > +#define FUNC_NAME s_scm_mmap_search > +{ > + void *c_mem, *c_addr; > + size_t c_len; > + int c_prot, c_flags, c_fd; > + scm_t_off c_offset; > + SCM pointer, bvec; > + > + if (SCM_POINTER_P (addr)) > + c_addr =3D SCM_POINTER_VALUE (addr); > + else if (scm_is_integer (addr)) > + c_addr =3D (void*) scm_to_uintptr_t (addr); > + else > + SCM_MISC_ERROR("bad addr", addr); > + > + c_len =3D scm_to_size_t (len); > + > + if (SCM_UNBNDP (prot)) > + c_prot =3D PROT_READ | PROT_WRITE; > + else > + c_prot =3D scm_to_int (prot); > + > + if (SCM_UNBNDP (flags)) > + c_flags =3D MAP_ANON | MAP_PRIVATE; > + else > + c_flags =3D scm_to_int (flags); > + > + if (SCM_UNBNDP (fd)) > + c_fd =3D -1; > + else > + c_fd =3D scm_to_int (fd); > + > + if (SCM_UNBNDP (fd)) > + c_offset =3D 0; > + else > + c_offset =3D scm_to_off_t (offset); > + > + c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); > + if (c_mem =3D=3D MAP_FAILED) > + SCM_SYSERROR; /* errno set */ > + > + pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem); > + bvec =3D scm_c_take_typed_bytevector((signed char *) c_mem + = c_offset, c_len, > + SCM_ARRAY_ELEMENT_TYPE_VU8, = pointer); > + /* if sizeof(void*) < sizeof(size_t) we are in trouble: */ > + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) = c_len); > + return bvec; > +} > +#undef FUNC_NAME > + > +SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0, > + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM = offset), > + "mmap addr len [prot [flags [fd [offset]]]]" > + "See the man page. Returns a bytevector." > + "Note that the region returned by mmap will NOT be = searched " > + "by the garbage collector for pointers.\n" > + "Defaults:\n" > + " PROT (logior PROT_READ PROT_WRITE)\n" > + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" > + " FD -1\n" > + " OFFSET 0\n" > + "@example\n" > + "(define bvec-1MB (mmap 0 #x100000)\n" > + "@end example" > + ) > +#define FUNC_NAME s_scm_mmap > +{ > + SCM bvec; > + void *c_mem; > + size_t c_len; > + > + bvec =3D scm_mmap_search(addr, len, prot, flags, fd, offset); > + c_mem =3D SCM_BYTEVECTOR_CONTENTS(bvec); > + c_len =3D SCM_BYTEVECTOR_LENGTH(bvec); > + > + /* tell GC not to scan for pointers */ > + GC_exclude_static_roots(c_mem, (char*) c_mem + c_len); > + > + return bvec; > +} > +static void > +mmap_finalizer (void *ptr, void *data) > +{ > + void *c_addr; > + intptr_t c_len; > + int res; > + > + c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER (ptr)); > + c_len =3D (intptr_t) data; > + res =3D munmap(c_addr, c_len); > + if (res !=3D 0) SCM_SYSERROR; > +} > +#undef FUNC_NAME > + > +SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0, > + (SCM bvec), > + "See the man page. Given bytevector unmap." > + ) > +#define FUNC_NAME s_scm_munmap > +{ > + void *c_addr; > + size_t c_len; > + int c_res; > + > + SCM_VALIDATE_BYTEVECTOR (1, bvec); > + > + c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec); > + c_len =3D SCM_BYTEVECTOR_LENGTH (bvec); > + > + c_res =3D munmap(c_addr, c_len); > + if (c_res =3D=3D -1) > + SCM_SYSERROR; /* errno set */ > + > + // TODO: clean up bytevector > + return SCM_UNSPECIFIED; > +} > +#undef FUNC_NAME > + > +void init_mman(void) { > +#ifdef PROT_NONE > + scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); > +#endif > +#ifdef PROT_ > + scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); > +#endif > + > +#ifdef MAP_ANONYMOUS > + scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); > +#endif > +#ifdef MAP_ANON > + scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); > +#endif > +#ifdef MAP_FILE > + scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); > +#endif > +#ifdef MAP_FIXED > + scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); > +#endif > +#ifdef MAP_HASSEMAPHORE > + scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); > +#endif > +#ifdef MAP_PRIVATE > + scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); > +#endif > +#ifdef MAP_SHARED > + scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); > +#endif > +#ifdef MAP_NOCACHE > + scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)); > +#endif > + scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize())); > +} > + > +#endif /* HAVE_SYS_MMAN_H */ >=20 >=20 >=20 >=20 --Apple-Mail=_705C18C9-0341-466A-9392-6E7A4A94B270 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 got it.

On Nov 24, 2017, at 8:22 AM, = Nala Ginrut <nalaginrut@gmail.com> wrote:

Thanks for the work! Could you please add MAP_POPULATE too?

2017=E5=B9=B411=E6=9C=8824=E6=97=A5 = =E4=B8=8B=E5=8D=8811:55=EF=BC=8C"Matt Wette" <matt.wette@gmail.com>=E5=86=99=E9=81=93=EF=BC=9A





I did a little more on this.  Here is the latest.
It provides mmap (not searched) and mmap/search (searched for pointers = to GC).


--- libguile/filesys.c.orig     2017-03-01 = 10:54:31.000000000 -0800
+++ libguile/filesys.c  2017-10-28 10:05:10.000000000 -0700
@@ -1828,9 +1828,14 @@



+#include "mman.c"
+
 void
 scm_init_filesys ()
 {
+#ifdef HAVE_SYS_MMAN_H
+  init_mman();
+#endif
 #ifdef HAVE_POSIX
   scm_tc16_dir =3D scm_make_smob_type ("directory", 0);
   scm_set_smob_free (scm_tc16_dir, scm_dir_free);
--- libguile/mman.c.orig        2017-10-28 = 10:05:10.000000000 -0700
+++ libguile/mman.c     2017-11-04 09:23:35.000000000 = -0700
@@ -0,0 +1,199 @@
+// mman.c - v171104a
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_SYS_MMAN_H
+#  include <sys/mman.h>
+#  include <errno.h>
+#endif
+
+#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS)
+
+#include "libguile/_scm.h"
+#include "libguile/smob.h"
+#include "libguile/fdes-finalizers.h"
+#include "libguile/feature.h"
+
+SCM_API SCM scm_mmap_search (SCM addr, SCM len, SCM prot, SCM flags, = SCM fd,
+                    =         SCM offset);
+SCM_API SCM scm_mmap (SCM addr, SCM len, SCM prot, SCM flags, SCM = fd,
+                    =  SCM offset);
+SCM_API SCM scm_munmap (SCM bvec);
+void init_mman(void);
+static void mmap_finalizer (void *ptr, void *data);
+
+SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0,
+            (SCM addr, SCM len, SCM prot, = SCM flags, SCM fd, SCM offset),
+           "mmap addr len [prot [flags = [fd [offset]]]]"
+           "See the unix man page for = mmap.  Returns a bytevector."
+           "Note that the region = allocated will be searched by the garbage"
+           "collector for pointers.  = \n"
+           " Defaults:\n"
+           "  PROT  =  (logior PROT_READ PROT_WRITE)\n"
+           "  FLAGS  (logior = MAP_ANON MAP_PRIVATE)\n"
+           "  FD    =  -1\n"
+           "  OFFSET 0\n"
+           "@example\n(define reg = (mmap/search %null-pointer #x1000)\n"
+           "@end example"
+           )
+#define FUNC_NAME s_scm_mmap_search
+{
+  void *c_mem, *c_addr;
+  size_t c_len;
+  int c_prot, c_flags, c_fd;
+  scm_t_off c_offset;
+  SCM pointer, bvec;
+
+  if (SCM_POINTER_P (addr))
+    c_addr =3D SCM_POINTER_VALUE (addr);
+  else if (scm_is_integer (addr))
+    c_addr =3D (void*) scm_to_uintptr_t (addr);
+  else
+    SCM_MISC_ERROR("bad addr", addr);
+
+  c_len =3D scm_to_size_t (len);
+
+  if (SCM_UNBNDP (prot))
+    c_prot =3D PROT_READ | PROT_WRITE;
+  else
+    c_prot =3D scm_to_int (prot);
+
+  if (SCM_UNBNDP (flags))
+    c_flags =3D MAP_ANON | MAP_PRIVATE;
+  else
+    c_flags =3D scm_to_int (flags);
+
+  if (SCM_UNBNDP (fd))
+    c_fd =3D -1;
+  else
+    c_fd =3D scm_to_int (fd);
+
+  if (SCM_UNBNDP (fd))
+    c_offset =3D 0;
+  else
+    c_offset =3D scm_to_off_t (offset);
+
+  c_mem =3D mmap(c_addr, c_len, c_prot, c_flags, c_fd, = c_offset);
+  if (c_mem =3D=3D MAP_FAILED)
+    SCM_SYSERROR;            =           /* errno set */
+
+  pointer =3D scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem);
+  bvec =3D scm_c_take_typed_bytevector((signed = char *) c_mem + c_offset, c_len,
+                    =                 = SCM_ARRAY_ELEMENT_TYPE_VU8, pointer);
+  /* if sizeof(void*) < sizeof(size_t) we are in trouble: */
+  scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) = c_len);
+  return bvec;
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0,
+            (SCM addr, SCM len, SCM prot, = SCM flags, SCM fd, SCM offset),
+           "mmap addr len [prot [flags = [fd [offset]]]]"
+           "See the man page.  = Returns a bytevector."
+           "Note that the region returned = by mmap will NOT be searched "
+           "by the garbage collector for = pointers.\n"
+           "Defaults:\n"
+           "  PROT  =  (logior PROT_READ PROT_WRITE)\n"
+           "  FLAGS  (logior = MAP_ANON MAP_PRIVATE)\n"
+           "  FD    =  -1\n"
+           "  OFFSET 0\n"
+           "@example\n"
+           "(define bvec-1MB (mmap 0 = #x100000)\n"
+           "@end example"
+           )
+#define FUNC_NAME s_scm_mmap
+{
+  SCM bvec;
+  void *c_mem;
+  size_t c_len;
+
+  bvec =3D scm_mmap_search(addr, len, prot, flags, fd, offset);
+  c_mem =3D SCM_BYTEVECTOR_CONTENTS(bvec);
+  c_len =3D SCM_BYTEVECTOR_LENGTH(bvec);
+
+  /* tell GC not to scan for pointers */
+  GC_exclude_static_roots(c_mem, (char*) c_mem + c_len);
+
+  return bvec;
+}
+static void
+mmap_finalizer (void *ptr, void *data)
+{
+  void *c_addr;
+  intptr_t c_len;
+  int res;
+
+  c_addr =3D (void *) SCM_POINTER_VALUE (SCM_PACK_POINTER = (ptr));
+  c_len =3D (intptr_t) data;
+  res =3D munmap(c_addr, c_len);
+  if (res !=3D 0) SCM_SYSERROR;
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0,
+            (SCM bvec),
+           "See the man page. Given = bytevector unmap."
+           )
+#define FUNC_NAME s_scm_munmap
+{
+  void *c_addr;
+  size_t c_len;
+  int c_res;
+
+  SCM_VALIDATE_BYTEVECTOR (1, bvec);
+
+  c_addr =3D (void *) SCM_BYTEVECTOR_CONTENTS (bvec);
= +  c_len =3D SCM_BYTEVECTOR_LENGTH (bvec);
+
+  c_res =3D munmap(c_addr, c_len);
+  if (c_res =3D=3D -1)
+    SCM_SYSERROR;            =           /* errno set */
+
+  // TODO: clean up bytevector
+  return SCM_UNSPECIFIED;
+}
+#undef FUNC_NAME
+
+void init_mman(void) {
+#ifdef PROT_NONE
+  scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE));
+#endif
+#ifdef PROT_
+  scm_c_define ("PROT_READ", scm_from_int (PROT_READ));
+#endif
+#ifdef PROT_
+  scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE));
+#endif
+#ifdef PROT_
+  scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC));
+#endif
+
+#ifdef MAP_ANONYMOUS
+  scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS));
+#endif
+#ifdef MAP_ANON
+  scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON));
= +#endif
+#ifdef MAP_FILE
+  scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE));
= +#endif
+#ifdef MAP_FIXED
+  scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED));
+#endif
+#ifdef MAP_HASSEMAPHORE
+  scm_c_define ("MAP_HASSEMAPHORE", scm_from_int = (MAP_HASSEMAPHORE));
+#endif
+#ifdef MAP_PRIVATE
+  scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE));
+#endif
+#ifdef MAP_SHARED
+  scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED));
+#endif
+#ifdef MAP_NOCACHE
+  scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE));
+#endif
+  scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize()));
+}
+
+#endif /* HAVE_SYS_MMAN_H */





= --Apple-Mail=_705C18C9-0341-466A-9392-6E7A4A94B270-- From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 25 09:41:27 2017 Received: (at 27782) by debbugs.gnu.org; 25 Nov 2017 14:41:27 +0000 Received: from localhost ([127.0.0.1]:56854 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIbe3-0001bi-G1 for submit@debbugs.gnu.org; Sat, 25 Nov 2017 09:41:27 -0500 Received: from mail-pg0-f51.google.com ([74.125.83.51]:37341) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eIbe2-0001bT-6W for 27782@debbugs.gnu.org; Sat, 25 Nov 2017 09:41:26 -0500 Received: by mail-pg0-f51.google.com with SMTP id m4so6889811pgc.4 for <27782@debbugs.gnu.org>; Sat, 25 Nov 2017 06:41:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:date:references :to:in-reply-to:message-id; bh=50IpS0zXCaueIIG4d8jUtXLPD8HLM/XxmrpezXDvf3I=; b=vXjHblRmgKhxteY36yVYogM6nEY11tHVoBZhoK2sUVQOsUbA3NZyBrqPUwAA3OIZkB dWIA3IE4MyrVwk5UHTr5Fqt4F2mgAOHrVYHprnUCpND05YwHDIGUS2PvO4joQYDBW4Ch aj5oGrz0pNIn8hz/0XRnAywvZZWiyoL76RH8wa+SJegU8z2s//pfJKKwNnPyaE3YmCSO uSbAVEVNTDQ35BZcoiOCxN1/nzz9TMpIxOvlspAL302Jlxq4cPkF326iI0HutSbqTbe4 XAG3pKnQfNK9TMeWamypF1ABqyfkT1df1Rh8/bjbd4eT8X5xh5/LsiXBntiMuNrpk074 Y99Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:date:references:to:in-reply-to:message-id; bh=50IpS0zXCaueIIG4d8jUtXLPD8HLM/XxmrpezXDvf3I=; b=ragMjboZ45+kkzmddLS8fwCKylRw3LEcw30MRHSvlbeVp2uEBBjJV18V6JXgJ/eitM GFfNpr5+dWNtgTMsn0aTBue/bH+s0jST4XcKhnKnuRiZk6OsF9L7cQpOUTo45ffmbQ+0 Qn+6BIYVFCuC/gbZD8jcy2i4Z0HzuRR4Yp2wNuBIF4Hiq6ZpIduLhNTMNYQHtUkGUQzk twJG4osJxv+umGTvJmjQz2iyUJRqHv4vi+ha+Gasm5WBgKp3IoUXtsQ6507E4VPOPVPZ Haw3T50VYRhoMzADT9POOrDP350Nr2JWGP7tTKPZpsJX5UpVuophuTncOtRPZ/R5uNDF T8YQ== X-Gm-Message-State: AJaThX7YftxeAKzOusHj1i2h6VXdFSAA9TReUmuz6z7jvuhSrH4m8Q59 HABt1q0xNn30uWhMLMgk7STfatvv X-Google-Smtp-Source: AGs4zMYqPYHc3a4BVVI0Au+OUgMmgsxJGvhSYhsYAg3fH5btMmw+mQvlXWiNLPkyUtB0XftkzXPRZQ== X-Received: by 10.98.144.141 with SMTP id q13mr12544526pfk.140.1511620879896; Sat, 25 Nov 2017 06:41:19 -0800 (PST) Received: from nautilus.championbroadband.com (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id z86sm46398318pff.4.2017.11.25.06.41.19 for <27782@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Nov 2017 06:41:19 -0800 (PST) From: Matt Wette Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: bug#27782: mmap for guile Date: Sat, 25 Nov 2017 06:41:17 -0800 References: To: 27782@debbugs.gnu.org In-Reply-To: Message-Id: <3F4AACD7-3278-4C4B-90D4-56BCDE5043F6@gmail.com> X-Mailer: Apple Mail (2.3273) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) here is a start on test-suite/tests/mmap.test +;;;; mmap.test --- test suite for Guile's mmap functions -*- scheme -*- +;;;; + +(define-module (test-mmap) + #:use-module (test-suite lib)) + +(use-modules (rnrs bytevectors)) + +(with-test-prefix "mmap" + + (pass-if "basics" + (let* ((siz #x10000) + (reg (mmap 0 siz))) + (and (eqv? (bytevector-length reg) siz) + (begin (bytevector-u8-set! reg 0 99) + (eqv? (bytevector-u8-ref reg 0) 99)) + (begin (bytevector-u8-set! reg (1- siz) 98) + (eqv? (bytevector-u8-ref reg (1- siz)) 98)) + #t))) + + ) + +;;;; --- last line --- From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 25 11:17:19 2017 Received: (at 27782) by debbugs.gnu.org; 25 Nov 2017 16:17:20 +0000 Received: from localhost ([127.0.0.1]:58071 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eId8p-0004EL-Nw for submit@debbugs.gnu.org; Sat, 25 Nov 2017 11:17:19 -0500 Received: from mail-yb0-f182.google.com ([209.85.213.182]:46256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eId8o-0004E5-Ji for 27782@debbugs.gnu.org; Sat, 25 Nov 2017 11:17:18 -0500 Received: by mail-yb0-f182.google.com with SMTP id 188so9172351ybd.13 for <27782@debbugs.gnu.org>; Sat, 25 Nov 2017 08:17:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=NHOzK0j8hlT/jzVuIsjgBOgyUClJ+UXobU6BRM9CIGY=; b=NMlyw4Q5FTKVrOuLvKom/o7sMw5PVGxIPmiVDhFCaVt8CP2RdE/gtXe75V6oiVikrN VDcbuCt1LhPVn20dINxsdYlSXXEHUj7jSJXuUjqYJB6AJl2s+BO3Xm1l2JRLfRYYKJR0 uO2bjrg5lUduO4y3bdrGIY/2io3hn4Lsn1xGPevCXhARyeohW/724fpWf+WnWaJeUyuV breft0WI34fk5+YKU/sN4VER+KmeJjT87j2+dgQipCua0bqWdDuSYOQ4cHKVJC1hgMwP Xz4iAgHblPPQBthB0xTupxR+IIPV01ZrDZ/pw6+PifrZKmgTYNJcyEbBHwtu0a6SyU8B n63A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=NHOzK0j8hlT/jzVuIsjgBOgyUClJ+UXobU6BRM9CIGY=; b=qMZmd/elSLhS7GDTD+QbcUr9FoV32/HR+4LGxB44cAkIJu72iVQP/U1k8LHc0acR5t QKI1GNaM3/TA/2T10Ta8cXbEEW5/mLKyxPBBVtAgvL/8drSD8W4nkiCktQI8gQsMKaLA 9hDSnz6nbA3ETBLNumjhat4TKB+L5z8q2Ztgy6PgMugxgVAM7ThItLcUnDH3/BNOGuH6 uw/l6rsEGVelgy99hpWd2NDiFCOkD6yU03GHRfg9EQ8kS3T6p9CaSn3W32205QtJAdYl TXkrD/4wKQ7b9+JnEW+sx0sn9br7VPP8/EaYEtu9bXDSy+2AvzWc2MXm6DALbJv6qvDN upiA== X-Gm-Message-State: AJaThX4yYU+3MhpLmrxuU9RNfG2Av/7oVxyLBI/fCFZai9QCwKKcshYN wrSs2SJEZrqzETGY1bFQ+AA3wOZbVQkWJ6yfvls= X-Google-Smtp-Source: AGs4zMZdNb8zl195qSmR+BsiNw7aUN5ySNpSbUPJPZ5P9MBigoRvZ/X/K/NPp6DXNCvsmqOGnzkSAEQV9mKAMC1jpcE= X-Received: by 10.37.193.7 with SMTP id r7mr19741467ybf.205.1511626632441; Sat, 25 Nov 2017 08:17:12 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.45.94 with HTTP; Sat, 25 Nov 2017 08:17:11 -0800 (PST) Received: by 10.37.45.94 with HTTP; Sat, 25 Nov 2017 08:17:11 -0800 (PST) In-Reply-To: <3F4AACD7-3278-4C4B-90D4-56BCDE5043F6@gmail.com> References: <3F4AACD7-3278-4C4B-90D4-56BCDE5043F6@gmail.com> From: Nala Ginrut Date: Sun, 26 Nov 2017 00:17:11 +0800 Message-ID: Subject: Re: bug#27782: mmap for guile To: Matt Wette Content-Type: multipart/alternative; boundary="94eb2c05528275b515055ed100e2" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --94eb2c05528275b515055ed100e2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Actually I've been using a FFI version of mmap in my working code, with my previous patch to Guile it's very easy to handle errno. Just few lines code is enough to bind mmap. I am not sure if C version binding is still the best option to maintain. 2017=E5=B9=B411=E6=9C=8825=E6=97=A5 22:42=EF=BC=8C"Matt Wette" =E5=86=99=E9=81=93=EF=BC=9A > here is a start on test-suite/tests/mmap.test > > +;;;; mmap.test --- test suite for Guile's mmap functions -*- scheme -*- > +;;;; > + > +(define-module (test-mmap) > + #:use-module (test-suite lib)) > + > +(use-modules (rnrs bytevectors)) > + > +(with-test-prefix "mmap" > + > + (pass-if "basics" > + (let* ((siz #x10000) > + (reg (mmap 0 siz))) > + (and (eqv? (bytevector-length reg) siz) > + (begin (bytevector-u8-set! reg 0 99) > + (eqv? (bytevector-u8-ref reg 0) 99)) > + (begin (bytevector-u8-set! reg (1- siz) 98) > + (eqv? (bytevector-u8-ref reg (1- siz)) 98)) > + #t))) > + > + ) > + > +;;;; --- last line --- > > > > > --94eb2c05528275b515055ed100e2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Actually I've been using a FFI version of mmap in my = working code, with my previous patch to Guile it's very easy to handle = errno. Just few lines code is enough to bind mmap.
I am no= t sure if C version binding is still the best option to maintain.

2017=E5=B9=B411= =E6=9C=8825=E6=97=A5 22:42=EF=BC=8C"Matt Wette" <matt.wette@gmail.com>=E5=86=99=E9=81=93= =EF=BC=9A
here is = a start on test-suite/tests/mmap.test

+;;;; mmap.test --- test suite for Guile's mmap functions=C2=A0 -*- sch= eme -*-
+;;;;
+
+(define-module (test-mmap)
+=C2=A0 #:use-module (test-suite lib))
+
+(use-modules (rnrs bytevectors))
+
+(with-test-prefix "mmap"
+
+=C2=A0 (pass-if "basics"
+=C2=A0 =C2=A0 (let* ((siz #x10000)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (reg (mmap 0 siz)))
+=C2=A0 =C2=A0 =C2=A0 (and (eqv? (bytevector-length reg) siz)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (begin (bytevector-u8-set! reg 0 99) +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(eqv? (bytev= ector-u8-ref reg 0) 99))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (begin (bytevector-u8-set! reg (1- siz)= 98)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(eqv? (bytev= ector-u8-ref reg (1- siz)) 98))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #t)))
+
+=C2=A0 )
+
+;;;; --- last line ---




--94eb2c05528275b515055ed100e2-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 04 15:40:35 2020 Received: (at 27782) by debbugs.gnu.org; 4 Jul 2020 19:40:35 +0000 Received: from localhost ([127.0.0.1]:59706 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jro1Y-0006SI-Bv for submit@debbugs.gnu.org; Sat, 04 Jul 2020 15:40:35 -0400 Received: from mail-pl1-f176.google.com ([209.85.214.176]:32777) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jro1T-0006Rz-5H for 27782@debbugs.gnu.org; Sat, 04 Jul 2020 15:40:30 -0400 Received: by mail-pl1-f176.google.com with SMTP id 72so3225103ple.0 for <27782@debbugs.gnu.org>; Sat, 04 Jul 2020 12:40:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-language; bh=FKzpf4+cD8aKgO0cDj0mren/Li5JisisgiwAqnjR64E=; b=ECiPaFJINVjoe2KrTVaO9n4SYQo7fP3g16S7TWJaHKCRG5RTbAlG0nGkfJqzaUmdDn loZxEsmaWAAhG3IF6X/X4jFZIECcy/uA7jZ9ZvSEcn+NcaJSoYJzLlVTlnQFhNySzxL4 hQV9lOankV6Zg3mSmZxJtM0OjnC2SXeZyubr/9d8zDPzEn56GUMrTr3vrPpAEgtlGDeJ lViSigmteB+Q5pAESdQXUSmie0d29MWQ+R9Y5WXEHRgbYW1CPNdlV0d8TUegYCXFmFJw mFe2SMyRoT1RxZO0V9fEPR/fVHLqIKY/6QdTc3FSJat18obSOVnaRMJq1u80ucM5UACv r9iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-language; bh=FKzpf4+cD8aKgO0cDj0mren/Li5JisisgiwAqnjR64E=; b=Hb05M0guKdswbFqEJU37SzMTKeXCv0dnaAyVyys9W3j/FejorvB9LCRfQR2qZFSY3Y A/hlL83KU4Oifx/oOhv885BakKXx9CiT4dWd/1IDkBfhHfA2uWpy/N1SAVgqzGqBsoqR zkchKvaFI1JZpBl+XVNGfHuxrRONqGIRDjrPboHLp10hVkQ/jxO6kKTN3AcBIqDPW8nD xE2kB5rsO04R/sE32hUx6IbhiiEIyybUMxVjzpSd75ICabSwOTgLemgARw2nGYgvCI0c MgQWVnggzDW2OBYbzZiyUpGZavla5aFyDbI71prGvYF7u8rFBQXs6Cv+QADOx1Rz65bS 2WQw== X-Gm-Message-State: AOAM532DmJ4NH4i7zPKjrAW16f0VEFoNDtIC3zWqkfKfHuJa8tXjdlmk tT+XzzU9vhE9LMjrqAnOy2E= X-Google-Smtp-Source: ABdhPJyqiM6q/mSMJPPBaX+aF1nfZQzCJ9mY2eZajp+KMpxL9QQbSIQoF412f70Ib7jtcs7SfjTHjA== X-Received: by 2002:a17:90a:9f4a:: with SMTP id q10mr45061474pjv.139.1593891621106; Sat, 04 Jul 2020 12:40:21 -0700 (PDT) Received: from [192.168.2.183] (64-52-176-132.championbroadband.com. [64.52.176.132]) by smtp.gmail.com with ESMTPSA id d5sm15018224pfa.71.2020.07.04.12.40.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 04 Jul 2020 12:40:20 -0700 (PDT) To: 27782@debbugs.gnu.org From: Matt Wette Subject: new patch for mma Message-ID: Date: Sat, 4 Jul 2020 12:40:19 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------405D555CCFABA4AC323713D8" Content-Language: en-US X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27782 Cc: =?UTF-8?Q?Ludovic_Court=c3=a8s?= , matt.wette@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------405D555CCFABA4AC323713D8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is a patch against guile master (at 3.0.4), commit 5e1748f75128107e3a0707b66df5adb95d98437e It is a incomplete, but functional, implementation of a mmap-api, including 1) mmap : low-level mmap, returns a bytevector, not searched for roots 2) mmap/search : like mmap, but not marked w/ GC_exclude_static_roots 3) mmap-file: high-level, easy-to-use mmap (e.g., (mmap-file "foo.dat")) The above are coded in libguile/filesys.[ch]. Also included is test-suite/tests/mmap-api.test. Build: $ ./configure --enable-mmap-api $ make $ make check ... Running mmap-api.test ... Since implementation of mmap may be not simple, I propose a git branch (e.g., wip-mmap-api) be created to invite group review, update, test the update. Matt --------------405D555CCFABA4AC323713D8 Content-Type: text/x-patch; charset=UTF-8; name="mmap-api-branch.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="mmap-api-branch.patch" diff --git a/configure.ac b/configure.ac index 3e96094f6..382d7d528 100644 --- a/configure.ac +++ b/configure.ac @@ -170,6 +170,10 @@ AC_ARG_ENABLE(tmpnam, AS_HELP_STRING([--disable-tmpnam],[omit POSIX tmpnam]),, enable_tmpnam=yes) +AC_ARG_ENABLE(mmap-api, + AS_HELP_STRING([--enable-mmap-api],[enable MMAP interface]),, + enable_mmap_api=no) + AC_ARG_ENABLE([deprecated], AS_HELP_STRING([--disable-deprecated],[omit deprecated features])) @@ -917,6 +921,10 @@ if test "$enable_tmpnam" = yes; then AC_DEFINE([ENABLE_TMPNAM], 1, [Define when tmpnam support is enabled.]) fi +if test "$enable_mmap_api" = yes; then + AC_DEFINE([ENABLE_MMAP_API], 1, [Define when MMAP API is enabled.]) +fi + AC_REPLACE_FUNCS([strerror memmove]) # Reasons for testing: diff --git a/libguile/filesys.c b/libguile/filesys.c index 39bfd38cc..04e5dfd4d 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -79,11 +79,22 @@ # include #endif +#ifdef ENABLE_MMAP_API +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) +# include +# include +# include +#endif +#endif + #include "async.h" #include "boolean.h" +#include "bytevectors.h" /* mmap */ #include "dynwind.h" #include "fdes-finalizers.h" #include "feature.h" +#include "finalizers.h" /* mmap */ +#include "foreign.h" /* mmap */ #include "fports.h" #include "gsubr.h" #include "iselect.h" @@ -1880,6 +1891,314 @@ scm_dir_free (SCM p) +#ifdef ENABLE_MMAP_API +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MAP_ANONYMOUS) + +/* FiXME + * rlb says add msync() + * Windows : look for MapViewOfFile + */ + +/* undefined, string or int acceptable */ +static int +mm_flags (SCM prot, int def) +{ + if (SCM_UNBNDP (prot)) + return def; + else + scm_misc_error("mmap", "bad prot option", SCM_EOL); + return -1; +} + +static int +mm_prot (SCM prot, int def) +{ + if (SCM_UNBNDP (prot)) + return def; + else + scm_misc_error("mmap", "bad prot option", SCM_EOL); + return -1; +} + +static void +mmap_finalizer (void *ptr, void *data) +{ + SCM bvec; + void *c_addr; + size_t c_len; + int res; + + bvec = SCM_PACK_POINTER (ptr); + if (!SCM_BYTEVECTOR_P (bvec)) + abort(); + + c_addr = SCM_BYTEVECTOR_CONTENTS (bvec); + c_len = (size_t) data; + res = munmap(c_addr, c_len); + if (res != 0) + scm_misc_error ("mmap", "failed to munmap memory", SCM_EOL); +} + +SCM_DEFINE (scm_mmap_search, "mmap/search", 2, 4, 0, + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset), + "mmap addr len [prot [flags [fd [offset]]]]" + "See the unix man page for mmap. Returns a bytevector." + "Note that the region allocated will be searched by the garbage" + "collector for pointers. \n" + "Defaults:\n" + " prot (logior PROT_READ PROT_WRITE)\n" + " flags (logior MAP_ANON MAP_PRIVATE)\n" + " fd -1\n" + " offset 0\n" + "E.g., @code{(define reg (mmap/search %null-pointer #x1000)}\n") +#define FUNC_NAME s_scm_mmap_search +{ + void *c_mem, *c_addr; + size_t c_len; + int c_prot, c_flags, c_fd; + scm_t_off c_offset; + SCM pointer, bvec; + + if (SCM_POINTER_P (addr)) + c_addr = SCM_POINTER_VALUE (addr); + else if (scm_is_integer (addr)) + c_addr = (void*) scm_to_uintptr_t (addr); + else + SCM_MISC_ERROR("bad addr", addr); + + c_len = scm_to_size_t (len); + + if (SCM_UNBNDP (prot)) + c_prot = PROT_READ | PROT_WRITE; + else + c_prot = scm_to_int (prot); + + if (SCM_UNBNDP (flags)) + c_flags = MAP_ANON | MAP_PRIVATE; + else + c_flags = scm_to_int (flags); + + if (SCM_UNBNDP (fd)) + c_fd = -1; + else + c_fd = scm_to_int (fd); + + if (SCM_UNBNDP (fd)) + c_offset = 0; + else + c_offset = scm_to_off_t (offset); + + c_mem = mmap(c_addr, c_len, c_prot, c_flags, c_fd, c_offset); + if (c_mem == MAP_FAILED) + SCM_SYSERROR; /* errno set */ + + pointer = scm_cell (scm_tc7_pointer, (scm_t_bits) c_mem); + bvec = scm_c_take_typed_bytevector((signed char *) c_mem + c_offset, c_len, + SCM_ARRAY_ELEMENT_TYPE_VU8, pointer); + assert(sizeof(void*) <= sizeof(size_t)); + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) c_len); + return bvec; +} +#undef FUNC_NAME + +SCM_DEFINE (scm_mmap, "mmap", 2, 4, 0, + (SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset), + "mmap addr len [prot [flags [fd [offset]]]]" + "See the man page. Returns a bytevector." + "Note that the region returned by mmap will NOT be searched " + "by the garbage collector for pointers.\n" + "Defaults:\n" + " PROT (logior PROT_READ PROT_WRITE)\n" + " FLAGS (logior MAP_ANON MAP_PRIVATE)\n" + " FD -1\n" + " OFFSET 0\n" + "@example\n" + "(define bvec-1MB (mmap 0 #x100000)\n" + "@end example" + ) +#define FUNC_NAME s_scm_mmap +{ + void *c_mem; + size_t c_len; + SCM bvec; + + bvec = scm_mmap_search(addr, len, prot, flags, fd, offset); + c_mem = SCM_BYTEVECTOR_CONTENTS(bvec); + c_len = SCM_BYTEVECTOR_LENGTH(bvec); + + /* Tell GC not to scan for pointers. */ + GC_exclude_static_roots(c_mem, (char*) c_mem + c_len); + + return bvec; +} +#undef FUNC_NAME + + +// call fstat to get file size +SCM_DEFINE (scm_mmap_file, "mmap-file", 1, 1, 0, + (SCM file, SCM prot), + "This procedure accepts a file in the form of filename," + " file-port or fd. It returns a bytevector. It must not" + " contain scheme allocated objects as it will not be" + " searched for pointers.\n" + "Defaults:\n" + " prot \"r\"\n" + "E.g., @code{(define bvec-1MB (mmap-file \"foo.dat\")}") +#define FUNC_NAME s_scm_mmap_file +{ + int fd, flags, prot_; + int fd_is_local = 0; + struct stat sb; + off_t size; + void *ptr; + size_t len; + char *filename; + SCM pointer, bvec; + + if (scm_is_string (file)) { + scm_dynwind_begin (0); + filename = scm_to_locale_string (file); + scm_dynwind_free (filename); + flags = mm_flags(prot, O_RDONLY); + prot_ = mm_prot(prot, PROT_READ); + fd = open(filename, flags); + if (fd == -1) + scm_misc_error ("mmap-file", "could not open file ~S", scm_list_1(file)); + fd_is_local = 1; + } else if (SCM_PORTP (file)) { + if (! SCM_UNBNDP (prot)) + scm_misc_error ("mmap-file", "file open, prot arg not allowed", SCM_EOL); + if (SCM_PORT_TYPE (file) != scm_file_port_type) + scm_misc_error ("mmap-file", "port is not file port", SCM_EOL); + fd = SCM_FPORT_FDES (file); + if (scm_input_port_p (file)) { + if (scm_output_port_p (file)) { + flags = O_RDWR; + prot_ = PROT_READ | PROT_WRITE; + } else { + flags = O_RDONLY; + prot_ = PROT_READ; + } + } else if (scm_output_port_p (file)) { + flags = O_WRONLY; + prot_ = PROT_WRITE; + } else { /* not read, not write */ + abort(); + } + } else if (scm_is_integer (file)) { + fd = scm_to_signed_integer (file, 0, 1024); /* FIXME: what for 1024? */ + /* I think fstat() may tell us if the FD is RD,WR,RDWR. */ + flags = O_RDONLY; + prot_ = PROT_READ; + } else { + scm_misc_error ("mmap-file", "bad arg for file", SCM_EOL); + } + fstat(fd, &sb); + size = sb.st_size; + ptr = mmap(0, size, prot_, MAP_PRIVATE, fd, 0); + len = (size_t) size; + if (fd_is_local) close(fd); + + if (ptr == MAP_FAILED) + SCM_SYSERROR; /* errno set */ + + pointer = scm_cell (scm_tc7_pointer, (scm_t_bits) ptr); + bvec = scm_c_take_typed_bytevector((signed char *) ptr, len, + SCM_ARRAY_ELEMENT_TYPE_VU8, pointer); + + assert(sizeof(void*) <= sizeof(size_t)); + scm_i_set_finalizer (SCM2PTR (bvec), mmap_finalizer, (void*) len); + + /* Tell GC not to scan for pointers. */ + GC_exclude_static_roots(ptr, (char*)ptr + len); + + return bvec; +} +#undef FUNC_NAME + +/* The following copied from bytevectors.c. Kludge? */ +#define SCM_BYTEVECTOR_SET_LENGTH(_bv, _len) \ + SCM_SET_CELL_WORD_1 ((_bv), (scm_t_bits) (_len)) +#define SCM_BYTEVECTOR_SET_CONTENTS(_bv, _contents) \ + SCM_SET_CELL_WORD_2 ((_bv), (scm_t_bits) (_contents)) + +SCM_DEFINE (scm_munmap, "munmap", 1, 0, 0, + (SCM bvec), + "See the man page. Given bytevector generated by a mmap" + " function, unmap the associated memory. The argument" + " will be modified to reflect a zero length bv.") +#define FUNC_NAME s_scm_munmap +{ + void *addr; + size_t len; + int res; + + SCM_VALIDATE_BYTEVECTOR (1, bvec); + + addr = (void *) SCM_BYTEVECTOR_CONTENTS (bvec); + len = SCM_BYTEVECTOR_LENGTH (bvec); + + /* Invalidate further work on this bytevector. */ + SCM_BYTEVECTOR_SET_LENGTH (bvec, 0); + SCM_BYTEVECTOR_SET_CONTENTS (bvec, NULL); + + res = munmap(addr, len); + if (res == -1) + SCM_SYSERROR; /* errno set */ + + return SCM_UNSPECIFIED; +} +#undef FUNC_NAME + +static void init_mmap_api(void) { + scm_add_feature("mmap-api"); + scm_add_feature("mmap-file"); + +#ifdef PROT_NONE + scm_c_define ("PROT_NONE", scm_from_int (PROT_NONE)); +#endif +#ifdef PROT_READ + scm_c_define ("PROT_READ", scm_from_int (PROT_READ)); +#endif +#ifdef PROT_WRITE + scm_c_define ("PROT_WRITE", scm_from_int (PROT_WRITE)); +#endif +#ifdef PROT_EXEC + scm_c_define ("PROT_EXEC", scm_from_int (PROT_EXEC)); +#endif + +#ifdef MAP_ANONYMOUS + scm_c_define ("MAP_ANONYMOUS", scm_from_int (MAP_ANONYMOUS)); +#endif +#ifdef MAP_ANON + scm_c_define ("MAP_ANON", scm_from_int (MAP_ANON)); +#endif +#ifdef MAP_FILE + scm_c_define ("MAP_FILE", scm_from_int (MAP_FILE)); +#endif +#ifdef MAP_FIXED + scm_c_define ("MAP_FIXED", scm_from_int (MAP_FIXED)); +#endif +#ifdef MAP_HASSEMAPHORE + scm_c_define ("MAP_HASSEMAPHORE", scm_from_int (MAP_HASSEMAPHORE)); +#endif +#ifdef MAP_PRIVATE + scm_c_define ("MAP_PRIVATE", scm_from_int (MAP_PRIVATE)); +#endif +#ifdef MAP_SHARED + scm_c_define ("MAP_SHARED", scm_from_int (MAP_SHARED)); +#endif +#ifdef MAP_NOCACHE + scm_c_define ("MAP_NOCACHE", scm_from_int (MAP_NOCACHE)); +#endif + scm_c_define ("PAGE_SIZE", scm_from_int (getpagesize())); +} + +#endif /* HAVE_SYS_MMAN_H && HAVE_MMAP_ANONYMOUS */ +#endif /* ENABLE_MMAP_API */ + + + void scm_init_filesys () { @@ -1954,6 +2273,10 @@ scm_init_filesys () #endif #endif /* HAVE_POSIX */ +#ifdef ENABLE_MMAP_API + init_mmap_api(); +#endif /* ENABLE_MMAP_API */ + /* `access' symbols. */ scm_c_define ("R_OK", scm_from_int (R_OK)); scm_c_define ("W_OK", scm_from_int (W_OK)); diff --git a/libguile/filesys.h b/libguile/filesys.h index f870ee434..ddf506ae6 100644 --- a/libguile/filesys.h +++ b/libguile/filesys.h @@ -69,6 +69,10 @@ SCM_API SCM scm_dirname (SCM filename); SCM_API SCM scm_basename (SCM filename, SCM suffix); SCM_API SCM scm_canonicalize_path (SCM path); SCM_API SCM scm_sendfile (SCM out, SCM in, SCM count, SCM offset); +SCM_API SCM scm_mmap_search(SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset); +SCM_API SCM scm_mmap(SCM addr, SCM len, SCM prot, SCM flags, SCM fd, SCM offset); +SCM_API SCM scm_mmap_file(SCM file, SCM prot); +SCM_API SCM scm_munmap(SCM bvec); SCM_INTERNAL SCM scm_i_relativize_path (SCM path, SCM in_path); SCM_INTERNAL void scm_init_filesys (void); diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am index 8158aaf44..cbd7c6568 100644 --- a/test-suite/Makefile.am +++ b/test-suite/Makefile.am @@ -76,6 +76,7 @@ SCM_TESTS = tests/00-initial-env.test \ tests/load.test \ tests/match.test \ tests/match.test.upstream \ + tests/mmap-api.test \ tests/modules.test \ tests/multilingual.nottest \ tests/net-db.test \ diff --git a/test-suite/tests/mmap-api.test b/test-suite/tests/mmap-api.test new file mode 100644 index 000000000..557d4c8db --- /dev/null +++ b/test-suite/tests/mmap-api.test @@ -0,0 +1,59 @@ +;;;; mmap-api.test --- Tests for Guile threading. -*- scheme -*- +;;;; +;;;; Copyright 2020 Free Software Foundation, Inc. +;;;; +;;;; This library is free software; you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public +;;;; License as published by the Free Software Foundation; either +;;;; version 3 of the License, or (at your option) any later version. +;;;; +;;;; This library is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this library; if not, write to the Free Software +;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (test-mmap-api) + #:use-module (test-suite lib) + #:use-module (test-suite guile-test) + #:use-module (rnrs bytevectors) + ) + +(define (mmap-test-file) + (data-file-name "foo.txt")) + +(define mmap-test-string "hello, world") + +(define (gen-mmap-test-file) + (with-output-to-file (mmap-test-file) + (lambda () (display mmap-test-string)))) + +(when (provided? 'mmap-file) + + (gen-mmap-test-file) + + (with-test-prefix "mmap-file" + + (pass-if "mmap-file 1" + (let ((bv (mmap-file (mmap-test-file)))) + (string=? (utf8->string bv) mmap-test-string))) + + )) + +(when (provided? 'mmap-api) + + (gen-mmap-test-file) + + (with-test-prefix "mmap-api" + + (pass-if "mmap-api 1" + (let ((bv (mmap 0 #x100))) + (bytevector-u8-set! bv 0 34) + (= (bytevector-u8-ref bv 0) 34))) + + )) + +;; --- last line --- --------------405D555CCFABA4AC323713D8-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 09 08:45:45 2020 Received: (at 27782) by debbugs.gnu.org; 9 Jul 2020 12:45:45 +0000 Received: from localhost ([127.0.0.1]:40197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jtVve-0006dz-IC for submit@debbugs.gnu.org; Thu, 09 Jul 2020 08:45:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:54742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jtVvb-0006dk-N8 for 27782@debbugs.gnu.org; Thu, 09 Jul 2020 08:45:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55521) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jtVvW-0005Jz-DS; Thu, 09 Jul 2020 08:45:22 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=33678 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jtVvW-0004on-0m; Thu, 09 Jul 2020 08:45:22 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Matt Wette Subject: Re: new patch for mma References: X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 22 Messidor an 228 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Thu, 09 Jul 2020 14:45:19 +0200 In-Reply-To: (Matt Wette's message of "Sat, 4 Jul 2020 12:40:19 -0700") Message-ID: <87v9iwc0ww.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Matt, Matt Wette skribis: > Attached is a patch against guile master (at 3.0.4), > commit 5e1748f75128107e3a0707b66df5adb95d98437e Thanks for working on it. I=E2=80=99m currently head-down on Guix things, = but I=E2=80=99ll look into it in the coming days/weeks if nobody beats me at it! Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 20 20:21:38 2022 Received: (at 27782) by debbugs.gnu.org; 21 Dec 2022 01:21:39 +0000 Received: from localhost ([127.0.0.1]:48377 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p7nnd-0007IR-RW for submit@debbugs.gnu.org; Tue, 20 Dec 2022 20:21:38 -0500 Received: from mail-pf1-f169.google.com ([209.85.210.169]:42643) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p7nnb-0007IL-E4 for 27782@debbugs.gnu.org; Tue, 20 Dec 2022 20:21:36 -0500 Received: by mail-pf1-f169.google.com with SMTP id 65so9674174pfx.9 for <27782@debbugs.gnu.org>; Tue, 20 Dec 2022 17:21:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=iY+oxvNibAS6Jpb/PjXlIpr4xVhP1KwWzUWkxp+rfUE=; b=jOxXPHZTvTXGK4vhiyQlLO0xtKbMgsZFGuIOocVwwnSS1OQIIW3oxxc8rTR2eKLyqh Fn3hiEc7Ci+soU+u176mBTK5ke5ngUTg7dQIathaeipb/t7qlyauy4BLN6o7Zdekdj09 vJWeBeoinpVUp3KsKUzFHj4yn0cQmGeIkpbykLcy8UI3KDQ+zdu5a8iimbRp5+nxumE7 eQtcwddgCxere7PQmOaLWqR4ELtYQ5R41uu+GCVXlhh3hBcEXSjHdSw+MYvrEumMk5Xy Cb/0fANm9dXNFL62nChTLthRzcN7h66eQza93kYZx0ZJNuozn0rg/XmZ/2GtoD1Fezm6 bEvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iY+oxvNibAS6Jpb/PjXlIpr4xVhP1KwWzUWkxp+rfUE=; b=rvJlTaEbWEkC1Hc1w28tu/5FuU2JMuSfw56bRhJC2AykfqpCh8pCKFJyjTv1Ims/Sa z9iX8MonLK3YzqjrrKFcG57zoraqvDfzIuGbDy1ULgC/04kPwA4r4iP3WKK4riHLHVbJ T5lJGZWb1yVENceFRUin6Ewl7k5RQiC9tXQOqKdij+Tp+U3bA96rq9xujROzLmAjK06d weSVmJMxoKgGbAogDepJwAOO1bZvvaUPHRQH3+SnyVSCV2gqfNJhxfZhQBepd8JfTLUe fpYO53Y27X+NT9bBUVZ/bLVsRm5Jiy/IzZ/cKm1sYVn3IEGIGCaNLSfNrgrRvIqpcxFM 3Xyg== X-Gm-Message-State: AFqh2kpiqI6ZhYjRpb9jkOvxSwmKFA6Hb1HM0kAzfFyDOwYyjgkPJxud IZsieJw51TNHvTPE4zAalsM= X-Google-Smtp-Source: AMrXdXtPhesrl95TpUeXO4ENrzb5mgR5jV/+hLbY3EgjNvhG7swHZb9LBr9u1ogChaBFY9FMtP0M2A== X-Received: by 2002:aa7:843c:0:b0:578:128b:3a3f with SMTP id q28-20020aa7843c000000b00578128b3a3fmr376132pfn.15.1671585689460; Tue, 20 Dec 2022 17:21:29 -0800 (PST) Received: from [192.168.2.158] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id a24-20020aa79718000000b0056b6d31ac8asm9510688pfg.178.2022.12.20.17.21.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Dec 2022 17:21:28 -0800 (PST) Content-Type: multipart/mixed; boundary="------------cuKjuw6DWfWEp5TZbKtqxq07" Message-ID: <8eb170fd-0ec9-4c20-901b-687df98eb749@gmail.com> Date: Tue, 20 Dec 2022 17:21:26 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: guile-devel@gnu.org From: Matt Wette Subject: patch to add support for mmap and friends X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------cuKjuw6DWfWEp5TZbKtqxq07 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Guile Maintainers: Please consider the atttached patch for mmap and friends. Includes mmap, mmap/shared, munmap, msync. Matt --------------cuKjuw6DWfWEp5TZbKtqxq07 Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-support-for-mmap-munmap-and-msync.patch" Content-Disposition: attachment; filename="0001-Add-support-for-mmap-munmap-and-msync.patch" Content-Transfer-Encoding: base64 RnJvbSAzMDY1NzBiZWIzZDE4OTVhYmQwMzcwMDU5M2NjMzQyMjgyZTRjY2QxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0IFdldHRlIDxtd2V0dGVAYWx1bW5pLmNhbHRl Y2guZWR1PgpEYXRlOiBUdWUsIDIwIERlYyAyMDIyIDE3OjE1OjI3IC0wODAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIG1tYXAsIG11bm1hcCBhbmQgbXN5bmMKCiogbGli Z3VpbGUvZmlsZXN5cy5jKG1tYXAsbXVubWFwLG1zeW5jKTogYWRkZWQgaW1wbGVtZW50YXRp b24gZm9yIG1tYXAKICBhbmQgZnJpZW5kcwoqIGRvYy9yZWYvcG9zaXgudGV4aTogYWRkIGRv Y3VtZW50YXRpb24gZm9yIG1tYXAgYW5kIGZyaWVuZHMKLS0tCiBjb25maWd1cmUuYWMgICAg ICAgICAgICAgICAgICAgfCAgMTIgKysKIGRvYy9yZWYvcG9zaXgudGV4aSAgICAgICAgICAg ICB8ICA0NSArKysrKysKIGxpYmd1aWxlL2ZpbGVzeXMuYyAgICAgICAgICAgICB8IDI2OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmd1aWxlL2ZpbGVzeXMuaCAg ICAgICAgICAgICB8ICAgNCArCiB0ZXN0LXN1aXRlL01ha2VmaWxlLmFtICAgICAgICAgfCAg IDEgKwogdGVzdC1zdWl0ZS90ZXN0cy9tbWFwLWFwaS50ZXN0IHwgIDQ3ICsrKysrKwogNiBm aWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3Qtc3VpdGUvdGVzdHMvbW1hcC1hcGkudGVzdAoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5h YyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiMzg3OWRmMWYuLmRhNDlkNDc3YSAxMDA2NDQKLS0t IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTk5LDYgKzE5OSwxMCBA QCBBQ19BUkdfRU5BQkxFKHJlZ2V4LAogICBbICAtLWRpc2FibGUtcmVnZXggICAgICAgICBv bWl0IHJlZ3VsYXIgZXhwcmVzc2lvbiBpbnRlcmZhY2VzXSwsCiAgIGVuYWJsZV9yZWdleD15 ZXMpCiAKK0FDX0FSR19FTkFCTEUobW1hcF9hcGksCisgIEFTX0hFTFBfU1RSSU5HKFstLWRp c2FibGUtbW1hcF9hcGldLFtvbWl0IG1tYXAgQVBJXSksLAorICBlbmFibGVfbW1hcF9hcGk9 eWVzKQorCiBBQ19BUkdfRU5BQkxFKHRtcG5hbSwKICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlz YWJsZS10bXBuYW1dLFtvbWl0IFBPU0lYIHRtcG5hbV0pLCwKICAgZW5hYmxlX3RtcG5hbT15 ZXMpCkBAIC05NTAsNiArOTU0LDEwIEBAIGlmIHRlc3QgIiRlbmFibGVfcmVnZXgiID0geWVz OyB0aGVuCiAgICBBQ19ERUZJTkUoW0VOQUJMRV9SRUdFWF0sIDEsIFtEZWZpbmUgd2hlbiBy ZWdleCBzdXBwb3J0IGlzIGVuYWJsZWQuXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfbW1h cF9hcGkiID0geWVzOyB0aGVuCisgICBBQ19ERUZJTkUoW0VOQUJMRV9NTUFQX0FQSV0sIDEs IFtEZWZpbmUgd2hlbiBtbWFwIEFQSSBzdXBwb3J0IGlzIGVuYWJsZWQuXSkKK2ZpCisKIGlm IHRlc3QgIiRlbmFibGVfdG1wbmFtIiA9IHllczsgdGhlbgogICAgQUNfREVGSU5FKFtFTkFC TEVfVE1QTkFNXSwgMSwgW0RlZmluZSB3aGVuIHRtcG5hbSBzdXBwb3J0IGlzIGVuYWJsZWQu XSkKIGZpCkBAIC0xMDE4LDYgKzEwMjYsMTAgQEAgQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0 IHRtLnRtX2dtdG9mZl0sLCwKIF0pCiBHVUlMRV9TVFJVQ1RfVVRJTUJVRgogCitpZiB0ZXN0 ICIkZW5hYmxlX21tYXBfYXBpIiA9ICJ5ZXMiOyB0aGVuCisgIEFDX0NIRUNLX0ZVTkNTKFtt c3luY10pCitmaQorCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIwpkaWZmIC0tZ2l0IGEvZG9jL3Jl Zi9wb3NpeC50ZXhpIGIvZG9jL3JlZi9wb3NpeC50ZXhpCmluZGV4IGJkZTBmMTUwYy4uODEx NDEzNWZlIDEwMDY0NAotLS0gYS9kb2MvcmVmL3Bvc2l4LnRleGkKKysrIGIvZG9jL3JlZi9w b3NpeC50ZXhpCkBAIC0xMjE2LDYgKzEyMTYsNTEgQEAgdmFsaWQgc2VwYXJhdG9ycy4gIFRo dXMsIHByb2dyYW1zIHNob3VsZCBub3QgYXNzdW1lIHRoYXQKIHNlcGFyYXRvci0tLWUuZy4s IHdoZW4gZXh0cmFjdGluZyB0aGUgY29tcG9uZW50cyBvZiBhIGZpbGUgbmFtZS4KIEBlbmQg ZGVmdnIKIAorQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtbWFwIGFkZHIgbGVuIFtwcm90 IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0BkZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9IG1t YXAvc2VhcmNoIGFkZHIgbGVuIFtwcm90IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0NyZWF0 ZSBhIG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVjdG9yLiAgQHZhcnthZGRy fSwgaWYKK25vbi16ZXJvLCBpcyB0aGUgc3RhcmluZyBhZGRyZXNzOyBvciwgaWYgemVybywg aXMgYXNzaWduZWQgYnkgdGhlCitzeXN0ZW0uICBAdmFye3Byb3R9LCBpZiBwcm92aWRlZCwg YXNzaWducyBwcm90ZWN0aW9uLiAgQHZhcntmZH0sCitpZiBwcm92aWRlZCBhc3NvY2lhdGVz IHRoZSBtZW1vcnkgcmVnaW9uIHdpdGggYSBmaWxlLCBzdGFydGluZyAKK2F0IEB2YXJ7b2Zm c2V0fSwgaWYgcHJvdmlkZWQuCitUaGUgcmVnaW9uIHJldHVybmVkIGJ5IG1tYXAgd2lsbCBO T1QgYmUgc2VhcmNoZWQgYnkgdGhlIGdhcmJhZ2UKKyBjb2xsZWN0b3IgZm9yIHBvaW50ZXJz LCB3aGlsZSB0aGF0IHJldHVybmVkIGJ5IG1tYXAvc2VhcmNoIHdpbGwuCitOb3RlIHRoYXQg dGhlIGZpbmFsaXplciBmb3IgdGhlIHJldHVybmVkIGJ5dGV2ZWN0b3Igd2lsbCBjYWxsIG11 bm1hcC4KK0RlZmF1bHRzIGZvciBvcHRpb25hbCBhcmd1bWVudHMgYXJlCitAdGFibGUgQGFz aXMKK0BpdGVtIHByb3QKKyhsb2dpb3IgUFJPVF9SRUFEIFBST1RfV1JJVEUpCitAaXRlbSBm bGFncworKGxvZ2lvciBNQVBfQU5PTllNT1VTIE1BUF9QUklWQVRFKQorQGl0ZW0gZmQKKy0x CitAaXRlbSBvZmZzZXQKKzAKK0BlbmQgdGFibGUKK0BlbmQgZGVmZm4KKworQGRlZmZuIHtT Y2hlbWUgUHJvY2VkdXJlfSBtdW5tYXAgYnZlYworR2l2ZW4gYnl0ZXZlY3RvciBnZW5lcmF0 ZWQgYnkgbW1hcCBvciBtbWFwL3NlYXJjaCwgdW5tYXAgdGhlCit0aGUgYXNzb2NpYXRlZCBt ZW1vcnkuICBUaGUgYXJndW1lbnQgd2lsbCBiZSBtb2RpZmllZCB0byAKK3JlZmxlY3QgYSB6 ZXJvIGxlbmd0aCBidi4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdW5zcGVjaWZpZWQuCitOb3Rl IHRoYXQgbXVubWFwIGlzIGNhbGxlZCBieSBmaW5hbGl6ZXIgYXNzb2NpYXRlZCB3aXRoCiti eXRldmVjdG9ycyByZXR1cm5lZCBmcm9tIG1tYXAgYW5kIG1tYXAvc2VhcmNoLgorQGVuZCBk ZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IG1zeW5jIGFkZHIgbGVuZ3RoIGZs YWcKK0ZsdXNoIGNoYW5nZXMgbWFkZSB0byB0aGUgaW4tY29yZSBjb3B5IG9mIGEgZmlsZSBt YXBwZWQgdXNpbmcKK21tYXAgb3IgbW1hcC9zZWFyY2guICBUaGlzIHNob3VsZCBiZSBleGVj dXRlZCBvbiBtb2RpZmllZCBtZW1vcnkKK2JlZm9yZSBjYWxsaW5nIG11bm1hcC4gIFRoZSBA dmFye2ZsYWdzfSBhcmd1bWVudCBtdXN0IGJlIGV4YWN0bHkgb25lCitvZiB0aGUgZm9sbG93 aW5nOgorQHRhYmxlIEBjb2RlCitAaXRlbSBNU19BU1lOQworSW5pdGlhdGUgdXBkYXRlLCBy ZXR1cm4gaW1tZWRpYXRlbHkuCitAaXRlbSBNU19TWU5DCitJbml0aWF0ZSB1cGRhdGUsIGJs b2NrIHVudGlsIGNvbXBsZXRlLgorQGl0ZW0gTVNfSU5WQUxJREFURQorSW52YWxpZGF0ZSBv dGhlciBtYXBwaW5ncyBvZiB0aGUgc2FtZSBmaWxlLgorQGVuZCB0YWJsZQorQGVuZCBkZWZm bgogCiBAbm9kZSBVc2VyIEluZm9ybWF0aW9uCiBAc3Vic2VjdGlvbiBVc2VyIEluZm9ybWF0 aW9uCmRpZmYgLS1naXQgYS9saWJndWlsZS9maWxlc3lzLmMgYi9saWJndWlsZS9maWxlc3lz LmMKaW5kZXggMWYwYmJhNTU2Li5hZDNkYWI0NzEgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL2Zp bGVzeXMuYworKysgYi9saWJndWlsZS9maWxlc3lzLmMKQEAgLTY3LDExICs2NywxNyBAQAog IyBpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFC TEVfTU1BUF9BUEkpICYmIGRlZmluZWQoSEFWRV9TWVNfTU1BTl9IKQorIyBpbmNsdWRlIDxz eXMvbW1hbi5oPgorI2VuZGlmCisKICNpbmNsdWRlICJhc3luYy5oIgogI2luY2x1ZGUgImJv b2xlYW4uaCIKICNpbmNsdWRlICJkeW53aW5kLmgiCiAjaW5jbHVkZSAiZmRlcy1maW5hbGl6 ZXJzLmgiCiAjaW5jbHVkZSAiZmVhdHVyZS5oIgorI2luY2x1ZGUgImZpbmFsaXplcnMuaCIK KyNpbmNsdWRlICJmb3JlaWduLmgiCiAjaW5jbHVkZSAiZnBvcnRzLmgiCiAjaW5jbHVkZSAi Z3N1YnIuaCIKICNpbmNsdWRlICJpc2VsZWN0LmgiCkBAIC0yMjYzLDYgKzIyNjksMjY0IEBA IHNjbV9kaXJfZnJlZSAoU0NNIHApCiAKIAwKIAorI2lmZGVmIEVOQUJMRV9NTUFQX0FQSQor I2lmIGRlZmluZWQoSEFWRV9TWVNfTU1BTl9IKSAmJiBkZWZpbmVkKEhBVkVfTUFQX0FOT05Z TU9VUykKKworLyogc2VlIGh0dHBzOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMv OTY5OTkxOTc5OS9mdW5jdGlvbnMvbW1hcC5odG1sICovCisKK3N0YXRpYyB2b2lkCittbWFw X2ZpbmFsaXplciAodm9pZCAqcHRyLCB2b2lkICpkYXRhKQoreworICBTQ00gYnZlYzsKKyAg dm9pZCAqY19hZGRyOworICBzaXplX3QgY19sZW47CisgIGludCBydjsKKworICBidmVjID0g U0NNX1BBQ0tfUE9JTlRFUiAocHRyKTsKKyAgaWYgKCFTQ01fQllURVZFQ1RPUl9QIChidmVj KSkKKyAgICBzY21fbWlzY19lcnJvciAoIm1tYXAiLCAiZXhwZWN0aW5nIGJ5dGV2ZWN0b3Ii LCBTQ01fRU9MKTsKKyAgCisgIGNfYWRkciA9IFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTIChi dmVjKTsKKyAgY19sZW4gPSBTQ01fQllURVZFQ1RPUl9MRU5HVEggKGJ2ZWMpOworICBTQ01f U1lTQ0FMTCAocnYgPSBtdW5tYXAoY19hZGRyLCBjX2xlbikpOworICBpZiAocnYgIT0gMCkK KyAgICBzY21fbWlzY19lcnJvciAoIm1tYXAiLCAiZmFpbGVkIHRvIG11bm1hcCBtZW1vcnki LCBTQ01fRU9MKTsKK30KKworU0NNX0RFRklORSAoc2NtX21tYXBfc2VhcmNoLCAibW1hcC9z ZWFyY2giLCAyLCA0LCAwLCAKKyAgICAgICAgICAgIChTQ00gYWRkciwgU0NNIGxlbiwgU0NN IHByb3QsIFNDTSBmbGFncywgU0NNIGZkLCBTQ00gb2Zmc2V0KSwKKwkgICAgIkNyZWF0ZSBh IG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVjdG9yLi4gIEB2YXJ7YWRkcn0s IGlmXG4iCisJICAgICJub24temVybywgaXMgdGhlIHN0YXJpbmcgYWRkcmVzczsgb3IsIGlm IHplcm8sIGlzIGFzc2lnbmVkIGJ5IHRoZVxuIgorCSAgICAic3lzdGVtLiAgQHZhcntwcm90 fSwgaWYgcHJvdmlkZWQsIGFzc2lnbnMgcHJvdGVjdGlvbi4gIEB2YXJ7ZmR9LFxuIgorCSAg ICAiaWYgcHJvdmlkZWQgYXNzb2NpYXRlcyB0aGUgbWVtb3J5IHJlZ2lvbiB3aXRoIGEgZmls ZSwgc3RhcnRpbmcgXG4iCisJICAgICJhdCBAdmFye29mZnNldH0sIGlmIHByb3ZpZGVkLlxu IgorCSAgICAiVGhlIHJlZ2lvbiByZXR1cm5lZCBieSBtbWFwIFdJTEwgYmUgc2VhcmNoZWQg YnkgdGhlIGdhcmJhZ2VcbiIKKwkgICAgImNvbGxlY3RvciBmb3IgcG9pbnRlcnMuICBTZWUg YWxzbyBtbWFwLiAgTm90ZSB0aGF0IHRoZVxuIgorICAgICAgICAgICAgImZpbmFsaXplciBm b3IgdGhlIHJldHVybmVkIGJ5dGV2ZWN0b3Igd2lsbCBjYWxsIG11bm1hcC5cbiIKKwkgICAg IkRlZmF1bHRzIGZvciBvcHRpb25hbCBhcmd1bWVudHMgYXJlXG4iCisJICAgICJAdGFibGUg QGFzaXNcbiIKKwkgICAgIkBpdGVtIHByb3Rcbihsb2dpb3IgUFJPVF9SRUFEIFBST1RfV1JJ VEUpXG4iCisJICAgICJAaXRlbSBmbGFnc1xuKGxvZ2lvciBNQVBfQU5PTllNT1VTIE1BUF9Q UklWQVRFKVxuIgorCSAgICAiQGl0ZW0gZmRcbi0xXG4iCisJICAgICJAaXRlbSBvZmZzZXRc bjBcbiIKKwkgICAgIkBlbmQgdGFibGUiKQorI2RlZmluZSBGVU5DX05BTUUgc19zY21fbW1h cF9zZWFyY2gKK3sKKyAgdm9pZCAqY19tZW0sICpjX2FkZHI7CisgIHNpemVfdCBjX2xlbjsK KyAgaW50IGNfcHJvdCwgY19mbGFncywgY19mZDsKKyAgc2NtX3Rfb2ZmIGNfb2Zmc2V0Owor ICBTQ00gcG9pbnRlciwgYnZlYzsKKworICBpZiAoU0NNX1BPSU5URVJfUCAoYWRkcikpCisg ICAgY19hZGRyID0gU0NNX1BPSU5URVJfVkFMVUUgKGFkZHIpOworICBlbHNlIGlmIChzY21f aXNfaW50ZWdlciAoYWRkcikpCisgICAgY19hZGRyID0gKHZvaWQqKSBzY21fdG9fdWludHB0 cl90IChhZGRyKTsKKyAgZWxzZQorICAgIFNDTV9NSVNDX0VSUk9SICgiYmFkIGFkZHIiLCBh ZGRyKTsKKworICBjX2xlbiA9IHNjbV90b19zaXplX3QgKGxlbik7CisgIAorICBpZiAoU0NN X1VOQk5EUCAocHJvdCkpCisgICAgY19wcm90ID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURTsK KyAgZWxzZSAKKyAgICBjX3Byb3QgPSBzY21fdG9faW50IChwcm90KTsKKworICBpZiAoU0NN X1VOQk5EUCAoZmxhZ3MpKQorICAgIGNfZmxhZ3MgPSBNQVBfQU5PTllNT1VTIHwgTUFQX1BS SVZBVEU7CisgIGVsc2UKKyAgICBjX2ZsYWdzID0gc2NtX3RvX2ludCAoZmxhZ3MpOworCisg IGlmIChTQ01fVU5CTkRQIChmZCkpCisgICAgY19mZCA9IC0xOworICBlbHNlCisgICAgY19m ZCA9IHNjbV90b19pbnQgKGZkKTsKKworICBpZiAoU0NNX1VOQk5EUCAoZmQpKQorICAgIGNf b2Zmc2V0ID0gMDsKKyAgZWxzZQorICAgIGNfb2Zmc2V0ID0gc2NtX3RvX29mZl90IChvZmZz ZXQpOworCisgIGlmICgoY19hZGRyID09IE5VTEwpICYmIChjX2ZsYWdzICYgTUFQX0ZJWEVE KSkKKyAgICBTQ01fTUlTQ19FUlJPUiAoIm1tYXAgY2FsbGVkIHdpdGggTlVMTCBhZGRyIGFu ZCBNQVBfRklYRUQiLCBTQ01fRU9MKTsKKworICBTQ01fU1lTQ0FMTCAoY19tZW0gPSBtbWFw KGNfYWRkciwgY19sZW4sIGNfcHJvdCwgY19mbGFncywgY19mZCwgY19vZmZzZXQpKTsKKyAg aWYgKGNfbWVtID09IE1BUF9GQUlMRUQpCisgICAgU0NNX1NZU0VSUk9SOwkJCS8qIGVycm5v IHNldCAqLworCisgIHBvaW50ZXIgPSBzY21fY2VsbCAoc2NtX3RjN19wb2ludGVyLCAoc2Nt X3RfYml0cykgY19tZW0pOworICBidmVjID0gc2NtX2NfdGFrZV90eXBlZF9ieXRldmVjdG9y KChzaWduZWQgY2hhciAqKSBjX21lbSArIGNfb2Zmc2V0LCBjX2xlbiwKKwkJCQkgICAgIFND TV9BUlJBWV9FTEVNRU5UX1RZUEVfVlU4LCBwb2ludGVyKTsKKyAgYXNzZXJ0KHNpemVvZih2 b2lkKikgPD0gc2l6ZW9mKHNpemVfdCkpOworICBzY21faV9zZXRfZmluYWxpemVyIChTQ00y UFRSIChidmVjKSwgbW1hcF9maW5hbGl6ZXIsICh2b2lkKikgY19sZW4pOworICByZXR1cm4g YnZlYzsKK30KKyN1bmRlZiBGVU5DX05BTUUKKworU0NNX0RFRklORSAoc2NtX21tYXAsICJt bWFwIiwgMiwgNCwgMCwgCisgICAgICAgICAgICAoU0NNIGFkZHIsIFNDTSBsZW4sIFNDTSBw cm90LCBTQ00gZmxhZ3MsIFNDTSBmZCwgU0NNIG9mZnNldCksCisJICAgICJDcmVhdGUgYSBt ZW1vcnkgbWFwcGluZywgcmV0dXJuaW5nIGEgYnl0ZXZlY3Rvci4gIEB2YXJ7YWRkcn0sIGlm XG4iCisJICAgICJub24temVybywgaXMgdGhlIHN0YXJpbmcgYWRkcmVzczsgb3IsIGlmIHpl cm8sIGlzIGFzc2lnbmVkIGJ5IHRoZVxuIgorCSAgICAic3lzdGVtLiAgQHZhcntwcm90fSwg aWYgcHJvdmlkZWQsIGFzc2lnbnMgcHJvdGVjdGlvbi4gIEB2YXJ7ZmR9LFxuIgorCSAgICAi aWYgcHJvdmlkZWQgYXNzb2NpYXRlcyB0aGUgbWVtb3J5IHJlZ2lvbiB3aXRoIGEgZmlsZSwg c3RhcnRpbmcgXG4iCisJICAgICJhdCBAdmFye29mZnNldH0sIGlmIHByb3ZpZGVkLlxuIgor CSAgICAiVGhlIHJlZ2lvbiByZXR1cm5lZCBieSBtbWFwIHdpbGwgTk9UIGJlIHNlYXJjaGVk IGJ5IHRoZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3IgZm9yIHBvaW50ZXJzLiBTZWUg YWxzbyBtbWFwL3NlYXJjaC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAgICAgICAgICJmaW5h bGl6ZXIgZm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2FsbCBtdW5tYXAuXG4i CisJICAgICJEZWZhdWx0cyBmb3IgYXJndW1lbnRzIGFyZTpcbiIKKwkgICAgIkB0YWJsZSBA YXNpc1xuIgorCSAgICAiQGl0ZW0gcHJvdFxuKGxvZ2lvciBQUk9UX1JFQUQgUFJPVF9XUklU RSlcbiIKKwkgICAgIkBpdGVtIGZsYWdzXG4obG9naW9yIE1BUF9BTk9OWU1PVVMgTUFQX1BS SVZBVEUpXG4iCisJICAgICJAaXRlbSBmZFxuLTFcbiIKKwkgICAgIkBpdGVtIG9mZnNldFxu MFxuIgorCSAgICAiQGVuZCB0YWJsZSIpCisjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9tbWFw Cit7CisgIHZvaWQgKmNfbWVtOworICBzaXplX3QgY19sZW47CisgIFNDTSBidmVjOworCisg IGJ2ZWMgPSBzY21fbW1hcF9zZWFyY2goYWRkciwgbGVuLCBwcm90LCBmbGFncywgZmQsIG9m ZnNldCk7CisgIGNfbWVtID0gU0NNX0JZVEVWRUNUT1JfQ09OVEVOVFMoYnZlYyk7CisgIGNf bGVuID0gU0NNX0JZVEVWRUNUT1JfTEVOR1RIKGJ2ZWMpOworCisgIC8qIFRlbGwgR0Mgbm90 IHRvIHNjYW4gZm9yIHBvaW50ZXJzLiAqLworICBHQ19leGNsdWRlX3N0YXRpY19yb290cyhj X21lbSwgKGNoYXIqKSBjX21lbSArIGNfbGVuKTsKKworICByZXR1cm4gYnZlYzsKK30KKyN1 bmRlZiBGVU5DX05BTUUKKworLyogVGhlIGZvbGxvd2luZyBjb3BpZWQgZnJvbSBieXRldmVj dG9ycy5jLiBLbHVkZ2U/ICovCisjZGVmaW5lIFNDTV9CWVRFVkVDVE9SX1NFVF9MRU5HVEgo X2J2LCBfbGVuKSAgICAgICAgICAgIFwKKyAgU0NNX1NFVF9DRUxMX1dPUkRfMSAoKF9idiks IChzY21fdF9iaXRzKSAoX2xlbikpCisjZGVmaW5lIFNDTV9CWVRFVkVDVE9SX1NFVF9DT05U RU5UUyhfYnYsIF9jb250ZW50cykJXAorICBTQ01fU0VUX0NFTExfV09SRF8yICgoX2J2KSwg KHNjbV90X2JpdHMpIChfY29udGVudHMpKQorCitTQ01fREVGSU5FIChzY21fbXVubWFwLCAi bXVubWFwIiwgMSwgMCwgMCwgCisgICAgICAgICAgICAoU0NNIGJ2ZWMpLAorCSAgICAiR2l2 ZW4gYnl0ZXZlY3RvciBnZW5lcmF0ZWQgYnkgbW1hcCBvciBtbWFwL3NlYXJjaCwgdW5tYXAg dGhlXG4iCisgICAgICAgICAgICAidGhlIGFzc29jaWF0ZWQgbWVtb3J5LiAgVGhlIGFyZ3Vt ZW50IHdpbGwgYmUgbW9kaWZpZWQgdG8gXG4iCisgICAgICAgICAgICAicmVmbGVjdCBhIHpl cm8gbGVuZ3RoIGJ2LiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVuc3BlY2lmaWVkLlxuIgorICAg ICAgICAgICAgIk5vdGUgdGhhdCBtdW5tYXAgaXMgY2FsbGVkIGJ5IGZpbmFsaXplciBhc3Nv Y2lhdGVkIHdpdGhcbiIKKyAgICAgICAgICAgICJieXRldmVjdG9ycyByZXR1cm5lZCBmcm9t IG1tYXAgYW5kIG1tYXAvc2VhcmNoLlxuIikKKyNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX211 bm1hcAoreworICB2b2lkICphZGRyOworICBzaXplX3QgbGVuOworICBpbnQgcnY7CisKKyAg U0NNX1ZBTElEQVRFX0JZVEVWRUNUT1IgKDEsIGJ2ZWMpOworICAKKyAgYWRkciA9ICh2b2lk ICopIFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTIChidmVjKTsKKyAgbGVuID0gU0NNX0JZVEVW RUNUT1JfTEVOR1RIIChidmVjKTsKKworICAvKiBJbnZhbGlkYXRlIGZ1cnRoZXIgd29yayBv biB0aGlzIGJ5dGV2ZWN0b3IuICovCisgIFNDTV9CWVRFVkVDVE9SX1NFVF9MRU5HVEggKGJ2 ZWMsIDApOworICBTQ01fQllURVZFQ1RPUl9TRVRfQ09OVEVOVFMgKGJ2ZWMsIE5VTEwpOwor CisgIFNDTV9TWVNDQUxMIChydiA9IG11bm1hcChhZGRyLCBsZW4pKTsKKyAgaWYgKHJ2ID09 IC0xKQorICAgIFNDTV9TWVNFUlJPUjsJCQkvKiBlcnJubyBzZXQgKi8KKworICByZXR1cm4g U0NNX1VOU1BFQ0lGSUVEOworfQorI3VuZGVmIEZVTkNfTkFNRQorCisjaWZkZWYgSEFWRV9N U1lOQworU0NNX0RFRklORSAoc2NtX21zeW5jLCAibXN5bmMiLCAyLCAwLCAwLCAKKyAgICAg ICAgICAgIChTQ00gYnZlYywgU0NNIGZsYWdzKSwKKwkgICAgIkZsdXNoIGNoYW5nZXMgbWFk ZSB0byB0aGUgaW4tY29yZSBjb3B5IG9mIGEgZmlsZSBtYXBwZWQgdXNpbmdcbiIKKyAgICAg ICAgICAgICJtbWFwIG9yIG1tYXAvc2VhcmNoLiAgVGhpcyBzaG91bGQgYmUgZXhlY3V0ZWQg b24gbW9kaWZpZWQgbWVtb3J5XG4iIAorICAgICAgICAgICAgImJlZm9yZSBjYWxsaW5nIG11 bm1hcC4gIFRoZSBAdmFye2ZsYWdzfSBhcmd1bWVudCBtdXN0IGJlIGV4YWN0bHlcbiIKKyAg ICAgICAgICAgICJvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiIKKyAgICAgICAgICAgICJAdGFi bGUgQGNvZGVcbiIKKyAgICAgICAgICAgICJAaXRlbSBNU19BU1lOQ1xuIgorICAgICAgICAg ICAgIkluaXRpYXRlIHVwZGF0ZSwgcmV0dXJuIGltbWVkaWF0ZWx5LlxuIgorICAgICAgICAg ICAgIkBpdGVtIE1TX1NZTkNcbiIKKyAgICAgICAgICAgICJJbml0aWF0ZSB1cGRhdGUsIGJs b2NrIHVudGlsIGNvbXBsZXRlLlxuIgorICAgICAgICAgICAgIkBpdGVtIE1TX0lOVkFMSURB VEVcbiIKKyAgICAgICAgICAgICJJbnZhbGlkYXRlIG90aGVyIG1hcHBpbmdzIG9mIHRoZSBz YW1lIGZpbGUuXG4iCisgICAgICAgICAgICAiQGVuZCB0YWJsZVxuIgorICAgICAgICAgICAg IlRoZSByZXR1cm4gdmFsdWUgaXMgdW5zcGVjaWZpZWQuIikKKyNkZWZpbmUgRlVOQ19OQU1F IHNfc2NtX21zeW5jCit7CisgIHZvaWQgKmFkZHI7CisgIHNpemVfdCBsZW47CisgIGludCBj X2ZsYWdzLCBydjsKKworICBTQ01fVkFMSURBVEVfQllURVZFQ1RPUiAoMSwgYnZlYyk7Cisg IGFkZHIgPSAodm9pZCAqKSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGxl biA9IFNDTV9CWVRFVkVDVE9SX0xFTkdUSCAoYnZlYyk7CisKKyAgY19mbGFncyA9IHNjbV90 b19pbnQgKGZsYWdzKTsKKworICBTQ01fU1lTQ0FMTCAocnYgPSBtc3luYyhhZGRyLCBsZW4s IGNfZmxhZ3MpKTsKKyAgaWYgKHJ2ID09IC0xKQorICAgIFNDTV9TWVNFUlJPUjsJCQkvKiBl cnJubyBzZXQgKi8KKworICByZXR1cm4gU0NNX1VOU1BFQ0lGSUVEOworfQorI3VuZGVmIEZV TkNfTkFNRQorI2VuZGlmIC8qIEhBVkVfTVNZTkMgKi8KKworc3RhdGljIHZvaWQgaW5pdF9t bWFwX2FwaSh2b2lkKSB7CisgIHNjbV9hZGRfZmVhdHVyZSgibW1hcC1hcGkiKTsKKworI2lm ZGVmIFBST1RfTk9ORQorICBzY21fY19kZWZpbmUgKCJQUk9UX05PTkUiLCBzY21fZnJvbV9p bnQgKFBST1RfTk9ORSkpOworI2VuZGlmCisjaWZkZWYgUFJPVF9SRUFECisgIHNjbV9jX2Rl ZmluZSAoIlBST1RfUkVBRCIsIHNjbV9mcm9tX2ludCAoUFJPVF9SRUFEKSk7CisjZW5kaWYK KyNpZmRlZiBQUk9UX1dSSVRFCisgIHNjbV9jX2RlZmluZSAoIlBST1RfV1JJVEUiLCBzY21f ZnJvbV9pbnQgKFBST1RfV1JJVEUpKTsKKyNlbmRpZgorI2lmZGVmIFBST1RfRVhFQworICBz Y21fY19kZWZpbmUgKCJQUk9UX0VYRUMiLCBzY21fZnJvbV9pbnQgKFBST1RfRVhFQykpOwor I2VuZGlmCisKKyNpZmRlZiBNQVBfQU5PTllNT1VTCisgIHNjbV9jX2RlZmluZSAoIk1BUF9B Tk9OWU1PVVMiLCBzY21fZnJvbV9pbnQgKE1BUF9BTk9OWU1PVVMpKTsKKyNlbmRpZgorI2lm ZGVmIE1BUF9BTk9OCisgIHNjbV9jX2RlZmluZSAoIk1BUF9BTk9OIiwgc2NtX2Zyb21faW50 IChNQVBfQU5PTikpOworI2VuZGlmCisjaWZkZWYgTUFQX0ZJTEUKKyAgc2NtX2NfZGVmaW5l ICgiTUFQX0ZJTEUiLCBzY21fZnJvbV9pbnQgKE1BUF9GSUxFKSk7CisjZW5kaWYKKyNpZmRl ZiBNQVBfRklYRUQKKyAgc2NtX2NfZGVmaW5lICgiTUFQX0ZJWEVEIiwgc2NtX2Zyb21faW50 IChNQVBfRklYRUQpKTsKKyNlbmRpZgorI2lmZGVmIE1BUF9IQVNTRU1BUEhPUkUKKyAgc2Nt X2NfZGVmaW5lICgiTUFQX0hBU1NFTUFQSE9SRSIsIHNjbV9mcm9tX2ludCAoTUFQX0hBU1NF TUFQSE9SRSkpOworI2VuZGlmCisjaWZkZWYgTUFQX1BSSVZBVEUKKyAgc2NtX2NfZGVmaW5l ICgiTUFQX1BSSVZBVEUiLCBzY21fZnJvbV9pbnQgKE1BUF9QUklWQVRFKSk7CisjZW5kaWYK KyNpZmRlZiBNQVBfU0hBUkVECisgIHNjbV9jX2RlZmluZSAoIk1BUF9TSEFSRUQiLCBzY21f ZnJvbV9pbnQgKE1BUF9TSEFSRUQpKTsKKyNlbmRpZgorI2lmZGVmIE1BUF9OT0NBQ0hFCisg IHNjbV9jX2RlZmluZSAoIk1BUF9OT0NBQ0hFIiwgc2NtX2Zyb21faW50IChNQVBfTk9DQUNI RSkpOworI2VuZGlmCisgIHNjbV9jX2RlZmluZSAoIlBBR0VfU0laRSIsIHNjbV9mcm9tX2lu dCAoZ2V0cGFnZXNpemUoKSkpOworI2lmZGVmIE1TX0FTWU5DCisgIHNjbV9jX2RlZmluZSAo Ik1TX0FTWU5DIiwgc2NtX2Zyb21faW50IChNU19BU1lOQykpOworI2VuZGlmCisjaWZkZWYg TVNfU1lOQworICBzY21fY19kZWZpbmUgKCJNU19TWU5DIiwgc2NtX2Zyb21faW50IChNU19T WU5DKSk7CisjZW5kaWYKKyNpZmRlZiBNU19JTlZBTElEQVRFCisgIHNjbV9jX2RlZmluZSAo Ik1TX0lOVkFMSURBVEUiLCBzY21fZnJvbV9pbnQgKE1TX0lOVkFMSURBVEUpKTsKKyNlbmRp ZgorfQorCisjZW5kaWYgLyogSEFWRV9TWVNfTU1BTl9IICYmIEhBVkVfTU1BUF9BTk9OWU1P VVMgKi8KKyNlbmRpZiAvKiBFTkFCTEVfTU1BUF9BUEkgKi8KKworDAorCiB2b2lkCiBzY21f aW5pdF9maWxlc3lzICgpCiB7CkBAIC0yMzg3LDYgKzI2NTEsMTAgQEAgc2NtX2luaXRfZmls ZXN5cyAoKQogI2lmZGVmIEhBVkVfUkVBRExJTktBVAogICBzY21fYWRkX2ZlYXR1cmUoInJl YWRsaW5rLXBvcnQiKTsKICNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX01NQVBfQVBJKSAm JiBkZWZpbmVkKEhBVkVfU1lTX01NQU5fSCkgXAorICAmJiBkZWZpbmVkKEhBVkVfTUFQX0FO T05ZTU9VUykKKyAgaW5pdF9tbWFwX2FwaSgpOworI2VuZGlmCiAKICNpbmNsdWRlICJmaWxl c3lzLngiCiB9CmRpZmYgLS1naXQgYS9saWJndWlsZS9maWxlc3lzLmggYi9saWJndWlsZS9m aWxlc3lzLmgKaW5kZXggMWNlNTBkMzBlLi5mYTQwYjQ4NGYgMTAwNjQ0Ci0tLSBhL2xpYmd1 aWxlL2ZpbGVzeXMuaAorKysgYi9saWJndWlsZS9maWxlc3lzLmgKQEAgLTgwLDYgKzgwLDEw IEBAIFNDTV9BUEkgU0NNIHNjbV9kaXJuYW1lIChTQ00gZmlsZW5hbWUpOwogU0NNX0FQSSBT Q00gc2NtX2Jhc2VuYW1lIChTQ00gZmlsZW5hbWUsIFNDTSBzdWZmaXgpOwogU0NNX0FQSSBT Q00gc2NtX2Nhbm9uaWNhbGl6ZV9wYXRoIChTQ00gcGF0aCk7CiBTQ01fQVBJIFNDTSBzY21f c2VuZGZpbGUgKFNDTSBvdXQsIFNDTSBpbiwgU0NNIGNvdW50LCBTQ00gb2Zmc2V0KTsKK1ND TV9BUEkgU0NNIHNjbV9tbWFwX3NlYXJjaChTQ00gYWRkciwgU0NNIGxlbiwgU0NNIHByb3Qs IFNDTSBmbGFncywgU0NNIGZkLCBTQ00gb2Zmc2V0KTsKK1NDTV9BUEkgU0NNIHNjbV9tbWFw KFNDTSBhZGRyLCBTQ00gbGVuLCBTQ00gcHJvdCwgU0NNIGZsYWdzLCBTQ00gZmQsIFNDTSBv ZmZzZXQpOworU0NNX0FQSSBTQ00gc2NtX21zeW5jKFNDTSBidmVjLCBTQ00gZmxhZ3MpOwor U0NNX0FQSSBTQ00gc2NtX211bm1hcChTQ00gYnZlYyk7CiBTQ01fSU5URVJOQUwgU0NNIHNj bV9pX3JlbGF0aXZpemVfcGF0aCAoU0NNIHBhdGgsIFNDTSBpbl9wYXRoKTsKIAogU0NNX0lO VEVSTkFMIHZvaWQgc2NtX2luaXRfZmlsZXN5cyAodm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0 LXN1aXRlL01ha2VmaWxlLmFtIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQppbmRleCAxNmZh MmU5NTIuLjgzOTMwOTIzMSAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQor KysgYi90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCkBAIC03Nyw2ICs3Nyw3IEBAIFNDTV9URVNU UyA9IHRlc3RzLzAwLWluaXRpYWwtZW52LnRlc3QJCVwKIAkgICAgdGVzdHMvbG9hZC50ZXN0 CQkJXAogCSAgICB0ZXN0cy9tYXRjaC50ZXN0CQkJXAogCSAgICB0ZXN0cy9tYXRjaC50ZXN0 LnVwc3RyZWFtCQlcCisJICAgIHRlc3RzL21tYXAtYXBpLnRlc3QJCQlcCiAJICAgIHRlc3Rz L21vZHVsZXMudGVzdAkJCVwKIAkgICAgdGVzdHMvbXVsdGlsaW5ndWFsLm5vdHRlc3QJCVwK IAkgICAgdGVzdHMvbmV0LWRiLnRlc3QJCQlcCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rl c3RzL21tYXAtYXBpLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL21tYXAtYXBpLnRlc3QKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43NGVmODc3N2MKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL21tYXAtYXBpLnRlc3QKQEAgLTAsMCArMSw0 NyBAQAorOzs7OyBtbWFwLWFwaS50ZXN0IC0tLSBUZXN0cyBmb3IgbW1hcCBBUEkuICAgIC0q LSBzY2hlbWUgLSotCis7Ozs7Cis7Ozs7IENvcHlyaWdodCAyMDIyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7Ozsg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsgCis7Ozs7IFRoaXMgbGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzs7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorOzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7OyAKKzs7OzsgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzs7 OyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCis7Ozs7IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworKGRlZmlu ZS1tb2R1bGUgKHRlc3QtbW1hcC1hcGkpCisgICM6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBs aWIpCisgICM6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBndWlsZS10ZXN0KQorICAjOnVzZS1t b2R1bGUgKHJucnMgYnl0ZXZlY3RvcnMpCisgICkKKworKGRlZmluZSAobW1hcC10ZXN0LWZp bGUpCisgIChkYXRhLWZpbGUtbmFtZSAiZm9vLnR4dCIpKQorCisoZGVmaW5lIG1tYXAtdGVz dC1zdHJpbmcgImhlbGxvLCB3b3JsZCIpCisKKyhkZWZpbmUgKGdlbi1tbWFwLXRlc3QtZmls ZSkKKyAgKHdpdGgtb3V0cHV0LXRvLWZpbGUgKG1tYXAtdGVzdC1maWxlKQorICAgIChsYW1i ZGEgKCkgKGRpc3BsYXkgbW1hcC10ZXN0LXN0cmluZykpKSkKKworKHdoZW4gKHByb3ZpZGVk PyAnbW1hcC1hcGkpCisKKyAgKGdlbi1tbWFwLXRlc3QtZmlsZSkKKworICAod2l0aC10ZXN0 LXByZWZpeCAibW1hcC1hcGkiCisgICAgICAKKyAgICAocGFzcy1pZiAibW1hcC1hcGkgMSIK KyAgICAgIChsZXQgKChidiAobW1hcCAwICN4MTAwKSkpCisgICAgICAgIChieXRldmVjdG9y LXU4LXNldCEgYnYgMCAzNCkKKyAgICAgICAgKD0gKGJ5dGV2ZWN0b3ItdTgtcmVmIGJ2IDAp IDM0KSkpCisKKyAgICApKQorCis7OyAtLS0gbGFzdCBsaW5lIC0tLQotLSAKMi4zNC4xCgo= --------------cuKjuw6DWfWEp5TZbKtqxq07-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 22 13:50:04 2022 Received: (at 27782) by debbugs.gnu.org; 22 Dec 2022 18:50:04 +0000 Received: from localhost ([127.0.0.1]:36193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p8Qdn-00024y-PN for submit@debbugs.gnu.org; Thu, 22 Dec 2022 13:50:04 -0500 Received: from mail-pj1-f48.google.com ([209.85.216.48]:37774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p8Qdl-00024O-Us for 27782@debbugs.gnu.org; Thu, 22 Dec 2022 13:50:02 -0500 Received: by mail-pj1-f48.google.com with SMTP id o1-20020a17090a678100b00219cf69e5f0so6618065pjj.2 for <27782@debbugs.gnu.org>; Thu, 22 Dec 2022 10:50:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=dYAYqdemx4GUuJhJNYPi4eANvrZ5L6DHyOxuq5SmIqE=; b=Uh8leQGOEFQ/7Ez01LFPr8ghUmNX3VFe5EQm7kvVxbiYytaF0trwa6QK34cl/1IA77 hBRIfRakyASrawDeDkYeLpaRb0ciSxECnMAWDlhhlBCVkRuODGPIfBibKaB0ptkzeGji 0v7icuR8bXJgI809CkGs7MFInet3xMsC6LCrqAa3hFZs3EOFK2b+qb/S/RMqj4is3Ldr Xx98F7RErJrdfOpw0CpafVQmWfdk0WUWD2lTvPrLAVJMNnV/FEUCKx+CguvQ40qNy1ja V6+0nxj+GL0r9hxwnLwSfr36WJ47hEbNvfgf3NZqSzaWvliu4WupdZiJl8NME/aqM6D5 P6RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dYAYqdemx4GUuJhJNYPi4eANvrZ5L6DHyOxuq5SmIqE=; b=qTWA5aS8QugV2asehNrfA6U7j+Kj0P6Tq9wjBlu+ccyTHyrUtjITJ+j6kBw1kQmNoI dIYpvTUw6A8CvAKrIkNcs41CMZ8epLGpRUWxfd6dXVWtUxsC8y3epCk/TeAkihYCxtKk +RB9rDUS1RiXjweccpWqD2uk3tEa9Rrungp3Q9Vv9MWn2FUA837Ann7riiu5dRvRgFDR g+h4PdMYR+S7zgO//MbqDWNkv76IEK0w0kEHw58mjvjYTmwrwrj+02B/EWP3Wqhx9llF txUu3komsqLgWP1zOVXJ47VbRYUHb8xdwqX9nyaIdBV4pU/6xlv2DLzm6rWcjUpomnjr thfw== X-Gm-Message-State: AFqh2koJOnRdRTqtOpKvkJ/rvrRxGnYj+33roXm+4kdZjVj8HR8xWAme +5qYr3SOtHRuKyTa8TdZlYyUWffr80w= X-Google-Smtp-Source: AMrXdXuIHIjsUQLUn+aTJ6I1HV6x4nI4kreH+VZkR91jEMTGVxkvzVthp/BDLl7TkNujeG7mIGbbeQ== X-Received: by 2002:a17:902:a403:b0:188:ec14:bf17 with SMTP id p3-20020a170902a40300b00188ec14bf17mr6680116plq.11.1671734995658; Thu, 22 Dec 2022 10:49:55 -0800 (PST) Received: from [192.168.2.158] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id x10-20020a17090300ca00b00189e1522982sm850718plc.168.2022.12.22.10.49.54 for <27782@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Dec 2022 10:49:55 -0800 (PST) Message-ID: <6a074f00-dd00-ffb5-9e96-e8170129123a@gmail.com> Date: Thu, 22 Dec 2022 10:49:53 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: patch to add support for mmap and friends From: Matt Wette To: 27782@debbugs.gnu.org References: <8eb170fd-0ec9-4c20-901b-687df98eb749@gmail.com> Content-Language: en-US In-Reply-To: <8eb170fd-0ec9-4c20-901b-687df98eb749@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Please disregard previous patch.  I have more to do. I'll try to catch the next release cycle. From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 13 19:50:03 2023 Received: (at 27782) by debbugs.gnu.org; 14 Jan 2023 00:50:03 +0000 Received: from localhost ([127.0.0.1]:52794 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGUkD-0004dz-PS for submit@debbugs.gnu.org; Fri, 13 Jan 2023 19:50:03 -0500 Received: from mail-pg1-f172.google.com ([209.85.215.172]:33358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGUkB-0004dI-3T for 27782@debbugs.gnu.org; Fri, 13 Jan 2023 19:50:00 -0500 Received: by mail-pg1-f172.google.com with SMTP id 141so16093149pgc.0 for <27782@debbugs.gnu.org>; Fri, 13 Jan 2023 16:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=G/p2rQnnr8u5gB7FY7qTeqWcr8370PrvCnhH7qd9ne8=; b=mfEPht/Bz9yHEeRrqIs8cmeqSztpwgSgbg4+AaDvosTcAdn7a55fHtlAgDM4LOe/jq hRW1lFsBKVmOuB86hWa54pYvlQRiXwZGek1/mEAAvO2u2Vj+hRmxlza6NrJfX0zhuCLl U2UhJT6142Qek/vRzUQFOl68RHe6pRc/xzg470udQ57S+sWYp+E0Xl7afNTmN5nKvefJ Jqvc42Tz2cdvIflS/9rHLVVvln0ummzZrIMLkpDL8SomwcvoPmnBp6d2cz7sONlREWv3 81w2RROlTkqAUWn6wvvtxm1UY6HAvI/ZBW556U0lB2PhJLtpHl0bf1mbRqo7UTn50raP qxCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=G/p2rQnnr8u5gB7FY7qTeqWcr8370PrvCnhH7qd9ne8=; b=KDjlPIKCP5g6gNqqZBO/1kPgRDQHqceYxUwkyectz+mDiX3tSZZikTpiB8bEtLzKa4 yzZk77SQJ0OmGUUx+IoMkfBfJL/H7qWoe8phCxxJl4qo/518WyyEVBGWJ101OuvNyDil VxrJ1LWpl9uVYlYAhAI0cic3qznbRrPe3sS9VcBIcExDlJw/Evz9OAe8NFVlgfNBeZ8D cNfDZg/VRAEdrL7Hjhbxf7OQGwFmuAnQ5vgZEoj+bQFoNuS4IABcJxo8FTyAgcAycmJV cZqoj5X3PqyUEhjEVEFkobsDKQz3Z31zwYFYg3VFXi9pq/VsScq4Y64ckbQf+asN4No7 ZF2w== X-Gm-Message-State: AFqh2kpTN3zjK0gE476+bM5CgC9ANox3dDt4cFY3gsRNIe5ZcbqRXi49 k+Bz4NmTdWADpAWfLoNS3BvPdcnE+nY= X-Google-Smtp-Source: AMrXdXvQmNIHGW/vmQwUo8f3s7fnBdlprcV1qLqWMdP6iQt7Xl8PednU3RufjQ3sf1IL6D6+U7x4xg== X-Received: by 2002:a05:6a00:340d:b0:589:432c:11e2 with SMTP id cn13-20020a056a00340d00b00589432c11e2mr18023836pfb.25.1673657392432; Fri, 13 Jan 2023 16:49:52 -0800 (PST) Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id q16-20020aa78430000000b0058baf8694e1sm2741263pfn.71.2023.01.13.16.49.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Jan 2023 16:49:51 -0800 (PST) Content-Type: multipart/mixed; boundary="------------lKToELzklC7iX300Q0xWZZSr" Message-ID: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> Date: Fri, 13 Jan 2023 16:49:50 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: 27782@debbugs.gnu.org, guile-devel@gnu.org From: Matt Wette Subject: patch for mmap and friends X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------lKToELzklC7iX300Q0xWZZSr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Please consider this patch for adding mmap(), munmap() and msync()  to libguile/filesys.c.  Included is update for posix.texi and test file mman.test. Once included, feature 'mman should be #t. Matt --------------lKToELzklC7iX300Q0xWZZSr Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-mmap-and-friends-munmap-msync.patch" Content-Disposition: attachment; filename="0001-Add-mmap-and-friends-munmap-msync.patch" Content-Transfer-Encoding: base64 RnJvbSA2Yzk0NDE3NGQzNWQ0M2Y4NzM0MGM4MTk5ZDQ3ZjNmMDg4ZmE2Y2E3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0IFdldHRlIDxtd2V0dGVAYWx1bW5pLmNhbHRl Y2guZWR1PgpEYXRlOiBGcmksIDEzIEphbiAyMDIzIDE2OjQyOjA2IC0wODAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIG1tYXAgYW5kIGZyaWVuZHMgKG11bm1hcCwgbXN5bmMpLgoKKiBsaWJn dWlsZS9maWxlc3lzLltjaF06IGFkZGVkIHNjbV9tbWFwX3NlYXJjaCwgc2NtX21tYXAsIHNj bV9tc3luYywgYW5kCiAgaW5pdF9tbWFuLCBidWlsdCBvbiBhdmFpbGFiaWxpdHkgb2YgSEFW RV9NTUFOX0g7IGFsc28gcHJvdmlkZXMgZmVhdHVyZQogICdtbWFuCiogZG9jL3JlZi9wb3Np eC50ZXhpOiBhZGRlZCBkb2N1bWVudGF0aW9uIGZvciBtbWFwIGFuZCBmcmllbmRzCiogdGVz dC1zdWl0ZS9NYWtlZmlsZS5hbTogdXBkYXRlZCBmb3IgbW1hbi50ZXN0CiogdGVzdC1zdWl0 ZS90ZXN0cy9tbWFuLnRlc3Q6IG1tYXAgdGVzdHMKLS0tCiBjb25maWd1cmUuYWMgICAgICAg ICAgIHwgICAyICsKIGRvYy9yZWYvcG9zaXgudGV4aSAgICAgfCAgNDUgKysrKysrKwogbGli Z3VpbGUvZmlsZXN5cy5jICAgICB8IDI2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogbGliZ3VpbGUvZmlsZXN5cy5oICAgICB8ICAgNCArCiB0ZXN0LXN1 aXRlL01ha2VmaWxlLmFtIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXgg ZjhjMTJmMGQ3Li5jMzQ4ZDE0YTIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9j b25maWd1cmUuYWMKQEAgLTEwMTgsNiArMTAxOCw4IEBAIEFDX0NIRUNLX01FTUJFUlMoW3N0 cnVjdCB0bS50bV9nbXRvZmZdLCwsCiBdKQogR1VJTEVfU1RSVUNUX1VUSU1CVUYKIAorQUNf Q0hFQ0tfRlVOQ1MoW21zeW5jXSkKKwogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMKZGlmZiAtLWdp dCBhL2RvYy9yZWYvcG9zaXgudGV4aSBiL2RvYy9yZWYvcG9zaXgudGV4aQppbmRleCA1NjUz ZDM3NTguLjE2ZjNiYmM0OSAxMDA2NDQKLS0tIGEvZG9jL3JlZi9wb3NpeC50ZXhpCisrKyBi L2RvYy9yZWYvcG9zaXgudGV4aQpAQCAtMTIxNiw2ICsxMjE2LDUxIEBAIHZhbGlkIHNlcGFy YXRvcnMuICBUaHVzLCBwcm9ncmFtcyBzaG91bGQgbm90IGFzc3VtZSB0aGF0CiBzZXBhcmF0 b3ItLS1lLmcuLCB3aGVuIGV4dHJhY3RpbmcgdGhlIGNvbXBvbmVudHMgb2YgYSBmaWxlIG5h bWUuCiBAZW5kIGRlZnZyCiAKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbW1hcCBhZGRy IGxlbiBbcHJvdCBbZmxhZ3MgW2ZkIFtvZmZzZXRdXV1dCitAZGVmZm54IHtTY2hlbWUgUHJv Y2VkdXJlfSBtbWFwL3NlYXJjaCBhZGRyIGxlbiBbcHJvdCBbZmxhZ3MgW2ZkIFtvZmZzZXRd XV1dCitDcmVhdGUgYSBtZW1vcnkgbWFwcGluZywgcmV0dXJuaW5nIGEgYnl0ZXZlY3Rvci4g IEB2YXJ7YWRkcn0sIGlmCitub24temVybywgaXMgdGhlIHN0YXJpbmcgYWRkcmVzczsgb3Is IGlmIHplcm8sIGlzIGFzc2lnbmVkIGJ5IHRoZQorc3lzdGVtLiAgQHZhcntwcm90fSwgaWYg cHJvdmlkZWQsIGFzc2lnbnMgcHJvdGVjdGlvbi4gIEB2YXJ7ZmR9LAoraWYgcHJvdmlkZWQg YXNzb2NpYXRlcyB0aGUgbWVtb3J5IHJlZ2lvbiB3aXRoIGEgZmlsZSwgc3RhcnRpbmcKK2F0 IEB2YXJ7b2Zmc2V0fSwgaWYgcHJvdmlkZWQuCitUaGUgcmVnaW9uIHJldHVybmVkIGJ5IG1t YXAgd2lsbCBOT1QgYmUgc2VhcmNoZWQgYnkgdGhlIGdhcmJhZ2UKKyBjb2xsZWN0b3IgZm9y IHBvaW50ZXJzLCB3aGlsZSB0aGF0IHJldHVybmVkIGJ5IG1tYXAvc2VhcmNoIHdpbGwuCitO b3RlIHRoYXQgdGhlIGZpbmFsaXplciBmb3IgdGhlIHJldHVybmVkIGJ5dGV2ZWN0b3Igd2ls bCBjYWxsIG11bm1hcC4KK0RlZmF1bHRzIGZvciBvcHRpb25hbCBhcmd1bWVudHMgYXJlCitA dGFibGUgQGFzaXMKK0BpdGVtIHByb3QKKyhsb2dpb3IgUFJPVF9SRUFEIFBST1RfV1JJVEUp CitAaXRlbSBmbGFncworKGxvZ2lvciBNQVBfQU5PTllNT1VTIE1BUF9QUklWQVRFKQorQGl0 ZW0gZmQKKy0xCitAaXRlbSBvZmZzZXQKKzAKK0BlbmQgdGFibGUKK0BlbmQgZGVmZm4KKwor QGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtdW5tYXAgYnZlYworR2l2ZW4gYnl0ZXZlY3Rv ciBnZW5lcmF0ZWQgYnkgbW1hcCBvciBtbWFwL3NlYXJjaCwgdW5tYXAgdGhlCit0aGUgYXNz b2NpYXRlZCBtZW1vcnkuICBUaGUgYXJndW1lbnQgd2lsbCBiZSBtb2RpZmllZCB0bworcmVm bGVjdCBhIHplcm8gbGVuZ3RoIGJ2LiAgVGhlIHJldHVybiB2YWx1ZSBpcyB1bnNwZWNpZmll ZC4KK05vdGUgdGhhdCBtdW5tYXAgaXMgY2FsbGVkIGJ5IGZpbmFsaXplciBhc3NvY2lhdGVk IHdpdGgKK2J5dGV2ZWN0b3JzIHJldHVybmVkIGZyb20gbW1hcCBhbmQgbW1hcC9zZWFyY2gu CitAZW5kIGRlZmZuCisKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbXN5bmMgYWRkciBs ZW5ndGggZmxhZworRmx1c2ggY2hhbmdlcyBtYWRlIHRvIHRoZSBpbi1jb3JlIGNvcHkgb2Yg YSBmaWxlIG1hcHBlZCB1c2luZworbW1hcCBvciBtbWFwL3NlYXJjaC4gIFRoaXMgc2hvdWxk IGJlIGV4ZWN1dGVkIG9uIG1vZGlmaWVkIG1lbW9yeQorYmVmb3JlIGNhbGxpbmcgbXVubWFw LiAgVGhlIEB2YXJ7ZmxhZ3N9IGFyZ3VtZW50IG11c3QgYmUgZXhhY3RseSBvbmUKK29mIHRo ZSBmb2xsb3dpbmc6CitAdGFibGUgQGNvZGUKK0BpdGVtIE1TX0FTWU5DCitJbml0aWF0ZSB1 cGRhdGUsIHJldHVybiBpbW1lZGlhdGVseS4KK0BpdGVtIE1TX1NZTkMKK0luaXRpYXRlIHVw ZGF0ZSwgYmxvY2sgdW50aWwgY29tcGxldGUuCitAaXRlbSBNU19JTlZBTElEQVRFCitJbnZh bGlkYXRlIG90aGVyIG1hcHBpbmdzIG9mIHRoZSBzYW1lIGZpbGUuCitAZW5kIHRhYmxlCitA ZW5kIGRlZmZuCiAKIEBub2RlIFVzZXIgSW5mb3JtYXRpb24KIEBzdWJzZWN0aW9uIFVzZXIg SW5mb3JtYXRpb24KZGlmZiAtLWdpdCBhL2xpYmd1aWxlL2ZpbGVzeXMuYyBiL2xpYmd1aWxl L2ZpbGVzeXMuYwppbmRleCAxZjBiYmE1NTYuLjBkZGI0Y2ZlZSAxMDA2NDQKLS0tIGEvbGli Z3VpbGUvZmlsZXN5cy5jCisrKyBiL2xpYmd1aWxlL2ZpbGVzeXMuYwpAQCAtNjcsMTEgKzY3 LDE3IEBACiAjIGluY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgogI2VuZGlmCiAKKyNpZmRlZiBI QVZFX1NZU19NTUFOX0gKKyMgaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNlbmRpZgorCiAjaW5j bHVkZSAiYXN5bmMuaCIKICNpbmNsdWRlICJib29sZWFuLmgiCiAjaW5jbHVkZSAiZHlud2lu ZC5oIgogI2luY2x1ZGUgImZkZXMtZmluYWxpemVycy5oIgogI2luY2x1ZGUgImZlYXR1cmUu aCIKKyNpbmNsdWRlICJmaW5hbGl6ZXJzLmgiCisjaW5jbHVkZSAiZm9yZWlnbi5oIgogI2lu Y2x1ZGUgImZwb3J0cy5oIgogI2luY2x1ZGUgImdzdWJyLmgiCiAjaW5jbHVkZSAiaXNlbGVj dC5oIgpAQCAtMjI2Myw2ICsyMjY5LDI2MSBAQCBzY21fZGlyX2ZyZWUgKFNDTSBwKQogCiAM CiAKKyNpZmRlZiBIQVZFX1NZU19NTUFOX0gKKy8qIHNlZSBodHRwczovL3B1YnMub3Blbmdy b3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL21tYXAuaHRtbCAqLwor CitzdGF0aWMgdm9pZAorbW1hcF9maW5hbGl6ZXIgKHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkK K3sKKyAgU0NNIGJ2ZWM7CisgIHZvaWQgKmNfYWRkcjsKKyAgc2l6ZV90IGNfbGVuOworICBp bnQgcnY7CisKKyAgYnZlYyA9IFNDTV9QQUNLX1BPSU5URVIgKHB0cik7CisgIGlmICghU0NN X0JZVEVWRUNUT1JfUCAoYnZlYykpCisgICAgc2NtX21pc2NfZXJyb3IgKCJtbWFwIiwgImV4 cGVjdGluZyBieXRldmVjdG9yIiwgU0NNX0VPTCk7CisKKyAgY19hZGRyID0gU0NNX0JZVEVW RUNUT1JfQ09OVEVOVFMgKGJ2ZWMpOworICBjX2xlbiA9IFNDTV9CWVRFVkVDVE9SX0xFTkdU SCAoYnZlYyk7CisgIFNDTV9TWVNDQUxMIChydiA9IG11bm1hcChjX2FkZHIsIGNfbGVuKSk7 CisgIGlmIChydiAhPSAwKQorICAgIHNjbV9taXNjX2Vycm9yICgibW1hcCIsICJmYWlsZWQg dG8gbXVubWFwIG1lbW9yeSIsIFNDTV9FT0wpOworfQorCitTQ01fREVGSU5FIChzY21fbW1h cF9zZWFyY2gsICJtbWFwL3NlYXJjaCIsIDIsIDQsIDAsCisgICAgICAgICAgICAoU0NNIGFk ZHIsIFNDTSBsZW4sIFNDTSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmZCwgU0NNIG9mZnNldCks CisJICAgICJDcmVhdGUgYSBtZW1vcnkgbWFwcGluZywgcmV0dXJuaW5nIGEgYnl0ZXZlY3Rv ci4uICBAdmFye2FkZHJ9LFxuIgorCSAgICAiaWYgbm9uLXplcm8sIGlzIHRoZSBzdGFyaW5n IGFkZHJlc3M7IG9yLCBpZiB6ZXJvLCBpcyBhc3NpZ25lZCBieVxuIgorCSAgICAidGhlIHN5 c3RlbS4gIEB2YXJ7cHJvdH0sIGlmIHByb3ZpZGVkLCBhc3NpZ25zIHByb3RlY3Rpb24uXG4i CisJICAgICJAdmFye2ZkfSwgaWYgcHJvdmlkZWQgYXNzb2NpYXRlcyB0aGUgbWVtb3J5IHJl Z2lvbiB3aXRoIGEgZmlsZVxuIgorCSAgICAic3RhcnRpbmcgYXQgQHZhcntvZmZzZXR9LCBp ZiBwcm92aWRlZC5cbiIKKwkgICAgIlRoZSByZWdpb24gcmV0dXJuZWQgYnkgbW1hcCBXSUxM IGJlIHNlYXJjaGVkIGJ5IHRoZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3IgZm9yIHBv aW50ZXJzLiAgU2VlIGFsc28gbW1hcC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAgICAgICAg ICJmaW5hbGl6ZXIgZm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2FsbCBtdW5t YXAuXG4iCisJICAgICJEZWZhdWx0cyBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGFyZVxuIgor CSAgICAiQHRhYmxlIEBhc2lzXG4iCisJICAgICJAaXRlbSBwcm90XG4obG9naW9yIFBST1Rf UkVBRCBQUk9UX1dSSVRFKVxuIgorCSAgICAiQGl0ZW0gZmxhZ3Ncbihsb2dpb3IgTUFQX0FO T05ZTU9VUyBNQVBfUFJJVkFURSlcbiIKKwkgICAgIkBpdGVtIGZkXG4tMVxuIgorCSAgICAi QGl0ZW0gb2Zmc2V0XG4wXG4iCisJICAgICJAZW5kIHRhYmxlIikKKyNkZWZpbmUgRlVOQ19O QU1FIHNfc2NtX21tYXBfc2VhcmNoCit7CisgIHZvaWQgKmNfbWVtLCAqY19hZGRyOworICBz aXplX3QgY19sZW47CisgIGludCBjX3Byb3QsIGNfZmxhZ3MsIGNfZmQ7CisgIHNjbV90X29m ZiBjX29mZnNldDsKKyAgU0NNIHBvaW50ZXIsIGJ2ZWM7CisKKyAgaWYgKFNDTV9QT0lOVEVS X1AgKGFkZHIpKQorICAgIGNfYWRkciA9IFNDTV9QT0lOVEVSX1ZBTFVFIChhZGRyKTsKKyAg ZWxzZSBpZiAoc2NtX2lzX2ludGVnZXIgKGFkZHIpKQorICAgIGNfYWRkciA9ICh2b2lkKikg c2NtX3RvX3VpbnRwdHJfdCAoYWRkcik7CisgIGVsc2UKKyAgICBzY21fbWlzY19lcnJvciAo Im1tYXAiLCAiYmFkIGFkZHIiLCBhZGRyKTsKKworICBjX2xlbiA9IHNjbV90b19zaXplX3Qg KGxlbik7CisKKyAgaWYgKFNDTV9VTkJORFAgKHByb3QpKQorICAgIGNfcHJvdCA9IFBST1Rf UkVBRCB8IFBST1RfV1JJVEU7CisgIGVsc2UKKyAgICBjX3Byb3QgPSBzY21fdG9faW50IChw cm90KTsKKworICBpZiAoU0NNX1VOQk5EUCAoZmxhZ3MpKQorICAgIGNfZmxhZ3MgPSBNQVBf QU5PTllNT1VTIHwgTUFQX1BSSVZBVEU7CisgIGVsc2UKKyAgICBjX2ZsYWdzID0gc2NtX3Rv X2ludCAoZmxhZ3MpOworCisgIGlmIChTQ01fVU5CTkRQIChmZCkpCisgICAgY19mZCA9IC0x OworICBlbHNlCisgICAgY19mZCA9IHNjbV90b19pbnQgKGZkKTsKKworICBpZiAoU0NNX1VO Qk5EUCAob2Zmc2V0KSkKKyAgICBjX29mZnNldCA9IDA7CisgIGVsc2UKKyAgICBjX29mZnNl dCA9IHNjbV90b19vZmZfdCAob2Zmc2V0KTsKKworICBpZiAoKGNfYWRkciA9PSBOVUxMKSAm JiAoY19mbGFncyAmIE1BUF9GSVhFRCkpCisgICAgc2NtX21pc2NfZXJyb3IgKCJtbWFwIiwg ImNhbm5vdCBoYXZlIE5VTEwgYWRkciB3LyBNQVBfRklYRUQiLCBTQ01fRU9MKTsKKworICBT Q01fU1lTQ0FMTCAoY19tZW0gPSBtbWFwKGNfYWRkciwgY19sZW4sIGNfcHJvdCwgY19mbGFn cywgY19mZCwgY19vZmZzZXQpKTsKKyAgaWYgKGNfbWVtID09IE1BUF9GQUlMRUQpCisgICAg c2NtX3N5c2Vycm9yICgibW1hcCIpOyAgICAgICAgICAgICAgLyogZXJybm8gc2V0ICovCisK KyAgcG9pbnRlciA9IHNjbV9jZWxsIChzY21fdGM3X3BvaW50ZXIsIChzY21fdF9iaXRzKSBj X21lbSk7CisgIGJ2ZWMgPSBzY21fY190YWtlX3R5cGVkX2J5dGV2ZWN0b3IoKHNpZ25lZCBj aGFyICopIGNfbWVtICsgY19vZmZzZXQsIGNfbGVuLAorCQkJCSAgICAgU0NNX0FSUkFZX0VM RU1FTlRfVFlQRV9WVTgsIHBvaW50ZXIpOworICBhc3NlcnQoc2l6ZW9mKHZvaWQqKSA8PSBz aXplb2Yoc2l6ZV90KSk7CisgIHNjbV9pX3NldF9maW5hbGl6ZXIgKFNDTTJQVFIgKGJ2ZWMp LCBtbWFwX2ZpbmFsaXplciwgKHZvaWQqKSBjX2xlbik7CisgIHJldHVybiBidmVjOworfQor I3VuZGVmIEZVTkNfTkFNRQorCitTQ01fREVGSU5FIChzY21fbW1hcCwgIm1tYXAiLCAyLCA0 LCAwLAorICAgICAgICAgICAgKFNDTSBhZGRyLCBTQ00gbGVuLCBTQ00gcHJvdCwgU0NNIGZs YWdzLCBTQ00gZmQsIFNDTSBvZmZzZXQpLAorCSAgICAiQ3JlYXRlIGEgbWVtb3J5IG1hcHBp bmcsIHJldHVybmluZyBhIGJ5dGV2ZWN0b3IuICBAdmFye2FkZHJ9LCBpZlxuIgorCSAgICAi bm9uLXplcm8sIGlzIHRoZSBzdGFyaW5nIGFkZHJlc3M7IG9yLCBpZiB6ZXJvLCBpcyBhc3Np Z25lZCBieSB0aGVcbiIKKwkgICAgInN5c3RlbS4gIEB2YXJ7cHJvdH0sIGlmIHByb3ZpZGVk LCBhc3NpZ25zIHByb3RlY3Rpb24uICBAdmFye2ZkfSxcbiIKKwkgICAgImlmIHByb3ZpZGVk IGFzc29jaWF0ZXMgdGhlIG1lbW9yeSByZWdpb24gd2l0aCBhIGZpbGUsIHN0YXJ0aW5nIFxu IgorCSAgICAiYXQgQHZhcntvZmZzZXR9LCBpZiBwcm92aWRlZC5cbiIKKwkgICAgIlRoZSBy ZWdpb24gcmV0dXJuZWQgYnkgbW1hcCB3aWxsIE5PVCBiZSBzZWFyY2hlZCBieSB0aGUgZ2Fy YmFnZVxuIgorCSAgICAiY29sbGVjdG9yIGZvciBwb2ludGVycy4gU2VlIGFsc28gbW1hcC9z ZWFyY2guICBOb3RlIHRoYXQgdGhlXG4iCisgICAgICAgICAgICAiZmluYWxpemVyIGZvciB0 aGUgcmV0dXJuZWQgYnl0ZXZlY3RvciB3aWxsIGNhbGwgbXVubWFwLlxuIgorCSAgICAiRGVm YXVsdHMgZm9yIGFyZ3VtZW50cyBhcmU6XG4iCisJICAgICJAdGFibGUgQGFzaXNcbiIKKwkg ICAgIkBpdGVtIHByb3Rcbihsb2dpb3IgUFJPVF9SRUFEIFBST1RfV1JJVEUpXG4iCisJICAg ICJAaXRlbSBmbGFnc1xuKGxvZ2lvciBNQVBfQU5PTllNT1VTIE1BUF9QUklWQVRFKVxuIgor CSAgICAiQGl0ZW0gZmRcbi0xXG4iCisJICAgICJAaXRlbSBvZmZzZXRcbjBcbiIKKwkgICAg IkBlbmQgdGFibGUiKQorI2RlZmluZSBGVU5DX05BTUUgc19zY21fbW1hcAoreworICB2b2lk ICpjX21lbTsKKyAgc2l6ZV90IGNfbGVuOworICBTQ00gYnZlYzsKKworICBidmVjID0gc2Nt X21tYXBfc2VhcmNoKGFkZHIsIGxlbiwgcHJvdCwgZmxhZ3MsIGZkLCBvZmZzZXQpOworICBj X21lbSA9IFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTKGJ2ZWMpOworICBjX2xlbiA9IFNDTV9C WVRFVkVDVE9SX0xFTkdUSChidmVjKTsKKworICAvKiBUZWxsIEdDIG5vdCB0byBzY2FuIGZv ciBwb2ludGVycy4gKi8KKyAgR0NfZXhjbHVkZV9zdGF0aWNfcm9vdHMoY19tZW0sIChjaGFy KikgY19tZW0gKyBjX2xlbik7CisKKyAgcmV0dXJuIGJ2ZWM7Cit9CisjdW5kZWYgRlVOQ19O QU1FCisKKy8qIFRoZSBmb2xsb3dpbmcgY29waWVkIGZyb20gYnl0ZXZlY3RvcnMuYy4gS2x1 ZGdlPyAqLworI2RlZmluZSBTQ01fQllURVZFQ1RPUl9TRVRfTEVOR1RIKF9idiwgX2xlbikg ICAgICAgICAgICBcCisgIFNDTV9TRVRfQ0VMTF9XT1JEXzEgKChfYnYpLCAoc2NtX3RfYml0 cykgKF9sZW4pKQorI2RlZmluZSBTQ01fQllURVZFQ1RPUl9TRVRfQ09OVEVOVFMoX2J2LCBf Y29udGVudHMpCVwKKyAgU0NNX1NFVF9DRUxMX1dPUkRfMiAoKF9idiksIChzY21fdF9iaXRz KSAoX2NvbnRlbnRzKSkKKworU0NNX0RFRklORSAoc2NtX211bm1hcCwgIm11bm1hcCIsIDEs IDAsIDAsCisgICAgICAgICAgICAoU0NNIGJ2ZWMpLAorCSAgICAiR2l2ZW4gYnl0ZXZlY3Rv ciBnZW5lcmF0ZWQgYnkgbW1hcCBvciBtbWFwL3NlYXJjaCwgdW5tYXAgdGhlXG4iCisgICAg ICAgICAgICAidGhlIGFzc29jaWF0ZWQgbWVtb3J5LiAgVGhlIGFyZ3VtZW50IHdpbGwgYmUg bW9kaWZpZWQgdG8gXG4iCisgICAgICAgICAgICAicmVmbGVjdCBhIHplcm8gbGVuZ3RoIGJ2 LiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVuc3BlY2lmaWVkLlxuIgorICAgICAgICAgICAgIk5v dGUgdGhhdCBtdW5tYXAgaXMgY2FsbGVkIGJ5IGZpbmFsaXplciBhc3NvY2lhdGVkIHdpdGhc biIKKyAgICAgICAgICAgICJieXRldmVjdG9ycyByZXR1cm5lZCBmcm9tIG1tYXAgYW5kIG1t YXAvc2VhcmNoLlxuIikKKyNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX211bm1hcAoreworICB2 b2lkICphZGRyOworICBzaXplX3QgbGVuOworICBpbnQgcnY7CisKKyAgU0NNX1ZBTElEQVRF X0JZVEVWRUNUT1IgKDEsIGJ2ZWMpOworCisgIGFkZHIgPSAodm9pZCAqKSBTQ01fQllURVZF Q1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGxlbiA9IFNDTV9CWVRFVkVDVE9SX0xFTkdUSCAo YnZlYyk7CisKKyAgLyogSW52YWxpZGF0ZSBmdXJ0aGVyIHdvcmsgb24gdGhpcyBieXRldmVj dG9yLiAqLworICBTQ01fQllURVZFQ1RPUl9TRVRfTEVOR1RIIChidmVjLCAwKTsKKyAgU0NN X0JZVEVWRUNUT1JfU0VUX0NPTlRFTlRTIChidmVjLCBOVUxMKTsKKworICBTQ01fU1lTQ0FM TCAocnYgPSBtdW5tYXAoYWRkciwgbGVuKSk7CisgIGlmIChydiA9PSAtMSkKKyAgICBTQ01f U1lTRVJST1I7CQkJLyogZXJybm8gc2V0ICovCisKKyAgcmV0dXJuIFNDTV9VTlNQRUNJRklF RDsKK30KKyN1bmRlZiBGVU5DX05BTUUKKworI2lmZGVmIEhBVkVfTVNZTkMKK1NDTV9ERUZJ TkUgKHNjbV9tc3luYywgIm1zeW5jIiwgMiwgMCwgMCwKKyAgICAgICAgICAgIChTQ00gYnZl YywgU0NNIGZsYWdzKSwKKwkgICAgIkZsdXNoIGNoYW5nZXMgbWFkZSB0byB0aGUgaW4tY29y ZSBjb3B5IG9mIGEgZmlsZSBtYXBwZWQgdXNpbmdcbiIKKyAgICAgICAgICAgICJtbWFwIG9y IG1tYXAvc2VhcmNoLiAgVGhpcyBzaG91bGQgYmUgZXhlY3V0ZWQgb24gbW9kaWZpZWQgbWVt b3J5XG4iCisgICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcgbXVubWFwLiAgVGhlIEB2YXJ7 ZmxhZ3N9IGFyZ3VtZW50IG11c3QgYmUgZXhhY3RseVxuIgorICAgICAgICAgICAgIm9uZSBv ZiB0aGUgZm9sbG93aW5nOlxuIgorICAgICAgICAgICAgIkB0YWJsZSBAY29kZVxuIgorICAg ICAgICAgICAgIkBpdGVtIE1TX0FTWU5DXG4iCisgICAgICAgICAgICAiSW5pdGlhdGUgdXBk YXRlLCByZXR1cm4gaW1tZWRpYXRlbHkuXG4iCisgICAgICAgICAgICAiQGl0ZW0gTVNfU1lO Q1xuIgorICAgICAgICAgICAgIkluaXRpYXRlIHVwZGF0ZSwgYmxvY2sgdW50aWwgY29tcGxl dGUuXG4iCisgICAgICAgICAgICAiQGl0ZW0gTVNfSU5WQUxJREFURVxuIgorICAgICAgICAg ICAgIkludmFsaWRhdGUgb3RoZXIgbWFwcGluZ3Mgb2YgdGhlIHNhbWUgZmlsZS5cbiIKKyAg ICAgICAgICAgICJAZW5kIHRhYmxlXG4iCisgICAgICAgICAgICAiVGhlIHJldHVybiB2YWx1 ZSBpcyB1bnNwZWNpZmllZC4iKQorI2RlZmluZSBGVU5DX05BTUUgc19zY21fbXN5bmMKK3sK KyAgdm9pZCAqYWRkcjsKKyAgc2l6ZV90IGxlbjsKKyAgaW50IGNfZmxhZ3MsIHJ2OworCisg IFNDTV9WQUxJREFURV9CWVRFVkVDVE9SICgxLCBidmVjKTsKKyAgYWRkciA9ICh2b2lkICop IFNDTV9CWVRFVkVDVE9SX0NPTlRFTlRTIChidmVjKTsKKyAgbGVuID0gU0NNX0JZVEVWRUNU T1JfTEVOR1RIIChidmVjKTsKKworICBjX2ZsYWdzID0gc2NtX3RvX2ludCAoZmxhZ3MpOwor CisgIFNDTV9TWVNDQUxMIChydiA9IG1zeW5jKGFkZHIsIGxlbiwgY19mbGFncykpOworICBp ZiAocnYgPT0gLTEpCisgICAgU0NNX1NZU0VSUk9SOwkJCS8qIGVycm5vIHNldCAqLworCisg IHJldHVybiBTQ01fVU5TUEVDSUZJRUQ7Cit9CisjdW5kZWYgRlVOQ19OQU1FCisjZW5kaWYg LyogSEFWRV9NU1lOQyAqLworCitzdGF0aWMgdm9pZCBpbml0X21tYW4odm9pZCkgeworICBz Y21fYWRkX2ZlYXR1cmUoIm1tYW4iKTsKKworI2lmZGVmIFBST1RfTk9ORQorICBzY21fY19k ZWZpbmUgKCJQUk9UX05PTkUiLCBzY21fZnJvbV9pbnQgKFBST1RfTk9ORSkpOworI2VuZGlm CisjaWZkZWYgUFJPVF9SRUFECisgIHNjbV9jX2RlZmluZSAoIlBST1RfUkVBRCIsIHNjbV9m cm9tX2ludCAoUFJPVF9SRUFEKSk7CisjZW5kaWYKKyNpZmRlZiBQUk9UX1dSSVRFCisgIHNj bV9jX2RlZmluZSAoIlBST1RfV1JJVEUiLCBzY21fZnJvbV9pbnQgKFBST1RfV1JJVEUpKTsK KyNlbmRpZgorI2lmZGVmIFBST1RfRVhFQworICBzY21fY19kZWZpbmUgKCJQUk9UX0VYRUMi LCBzY21fZnJvbV9pbnQgKFBST1RfRVhFQykpOworI2VuZGlmCisKKyNpZmRlZiBNQVBfQU5P TllNT1VTCisgIHNjbV9jX2RlZmluZSAoIk1BUF9BTk9OWU1PVVMiLCBzY21fZnJvbV9pbnQg KE1BUF9BTk9OWU1PVVMpKTsKKyNlbmRpZgorI2lmZGVmIE1BUF9BTk9OCisgIHNjbV9jX2Rl ZmluZSAoIk1BUF9BTk9OIiwgc2NtX2Zyb21faW50IChNQVBfQU5PTikpOworI2VuZGlmCisj aWZkZWYgTUFQX0ZJTEUKKyAgc2NtX2NfZGVmaW5lICgiTUFQX0ZJTEUiLCBzY21fZnJvbV9p bnQgKE1BUF9GSUxFKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfRklYRUQKKyAgc2NtX2NfZGVm aW5lICgiTUFQX0ZJWEVEIiwgc2NtX2Zyb21faW50IChNQVBfRklYRUQpKTsKKyNlbmRpZgor I2lmZGVmIE1BUF9IQVNTRU1BUEhPUkUKKyAgc2NtX2NfZGVmaW5lICgiTUFQX0hBU1NFTUFQ SE9SRSIsIHNjbV9mcm9tX2ludCAoTUFQX0hBU1NFTUFQSE9SRSkpOworI2VuZGlmCisjaWZk ZWYgTUFQX1BSSVZBVEUKKyAgc2NtX2NfZGVmaW5lICgiTUFQX1BSSVZBVEUiLCBzY21fZnJv bV9pbnQgKE1BUF9QUklWQVRFKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfU0hBUkVECisgIHNj bV9jX2RlZmluZSAoIk1BUF9TSEFSRUQiLCBzY21fZnJvbV9pbnQgKE1BUF9TSEFSRUQpKTsK KyNlbmRpZgorI2lmZGVmIE1BUF9OT0NBQ0hFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9OT0NB Q0hFIiwgc2NtX2Zyb21faW50IChNQVBfTk9DQUNIRSkpOworI2VuZGlmCisgIHNjbV9jX2Rl ZmluZSAoIlBBR0VfU0laRSIsIHNjbV9mcm9tX2ludCAoZ2V0cGFnZXNpemUoKSkpOworI2lm ZGVmIE1TX0FTWU5DCisgIHNjbV9jX2RlZmluZSAoIk1TX0FTWU5DIiwgc2NtX2Zyb21faW50 IChNU19BU1lOQykpOworI2VuZGlmCisjaWZkZWYgTVNfU1lOQworICBzY21fY19kZWZpbmUg KCJNU19TWU5DIiwgc2NtX2Zyb21faW50IChNU19TWU5DKSk7CisjZW5kaWYKKyNpZmRlZiBN U19JTlZBTElEQVRFCisgIHNjbV9jX2RlZmluZSAoIk1TX0lOVkFMSURBVEUiLCBzY21fZnJv bV9pbnQgKE1TX0lOVkFMSURBVEUpKTsKKyNlbmRpZgorfQorCisjZW5kaWYgLyogSEFWRV9T WVNfTU1BTl9IICovCisKKwwKKwogdm9pZAogc2NtX2luaXRfZmlsZXN5cyAoKQogewpAQCAt MjM4Nyw2ICsyNjQ4LDkgQEAgc2NtX2luaXRfZmlsZXN5cyAoKQogI2lmZGVmIEhBVkVfUkVB RExJTktBVAogICBzY21fYWRkX2ZlYXR1cmUoInJlYWRsaW5rLXBvcnQiKTsKICNlbmRpZgor I2lmIGRlZmluZWQoSEFWRV9TWVNfTU1BTl9IKQorICBpbml0X21tYW4oKTsKKyNlbmRpZgog CiAjaW5jbHVkZSAiZmlsZXN5cy54IgogfQpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvZmlsZXN5 cy5oIGIvbGliZ3VpbGUvZmlsZXN5cy5oCmluZGV4IDFjZTUwZDMwZS4uZmE0MGI0ODRmIDEw MDY0NAotLS0gYS9saWJndWlsZS9maWxlc3lzLmgKKysrIGIvbGliZ3VpbGUvZmlsZXN5cy5o CkBAIC04MCw2ICs4MCwxMCBAQCBTQ01fQVBJIFNDTSBzY21fZGlybmFtZSAoU0NNIGZpbGVu YW1lKTsKIFNDTV9BUEkgU0NNIHNjbV9iYXNlbmFtZSAoU0NNIGZpbGVuYW1lLCBTQ00gc3Vm Zml4KTsKIFNDTV9BUEkgU0NNIHNjbV9jYW5vbmljYWxpemVfcGF0aCAoU0NNIHBhdGgpOwog U0NNX0FQSSBTQ00gc2NtX3NlbmRmaWxlIChTQ00gb3V0LCBTQ00gaW4sIFNDTSBjb3VudCwg U0NNIG9mZnNldCk7CitTQ01fQVBJIFNDTSBzY21fbW1hcF9zZWFyY2goU0NNIGFkZHIsIFND TSBsZW4sIFNDTSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmZCwgU0NNIG9mZnNldCk7CitTQ01f QVBJIFNDTSBzY21fbW1hcChTQ00gYWRkciwgU0NNIGxlbiwgU0NNIHByb3QsIFNDTSBmbGFn cywgU0NNIGZkLCBTQ00gb2Zmc2V0KTsKK1NDTV9BUEkgU0NNIHNjbV9tc3luYyhTQ00gYnZl YywgU0NNIGZsYWdzKTsKK1NDTV9BUEkgU0NNIHNjbV9tdW5tYXAoU0NNIGJ2ZWMpOwogU0NN X0lOVEVSTkFMIFNDTSBzY21faV9yZWxhdGl2aXplX3BhdGggKFNDTSBwYXRoLCBTQ00gaW5f cGF0aCk7CiAKIFNDTV9JTlRFUk5BTCB2b2lkIHNjbV9pbml0X2ZpbGVzeXMgKHZvaWQpOwpk aWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KaW5kZXggMTZmYTJlOTUyLi4zNzg1ZTJmODUgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3Vp dGUvTWFrZWZpbGUuYW0KKysrIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQpAQCAtNzcsNiAr NzcsNyBAQCBTQ01fVEVTVFMgPSB0ZXN0cy8wMC1pbml0aWFsLWVudi50ZXN0CQlcCiAJICAg IHRlc3RzL2xvYWQudGVzdAkJCVwKIAkgICAgdGVzdHMvbWF0Y2gudGVzdAkJCVwKIAkgICAg dGVzdHMvbWF0Y2gudGVzdC51cHN0cmVhbQkJXAorCSAgICB0ZXN0cy9tbWFuLnRlc3QJCQlc CiAJICAgIHRlc3RzL21vZHVsZXMudGVzdAkJCVwKIAkgICAgdGVzdHMvbXVsdGlsaW5ndWFs Lm5vdHRlc3QJCVwKIAkgICAgdGVzdHMvbmV0LWRiLnRlc3QJCQlcCi0tIAoyLjM0LjEKCg== --------------lKToELzklC7iX300Q0xWZZSr-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 13 20:01:05 2023 Received: (at 27782) by debbugs.gnu.org; 14 Jan 2023 01:01:05 +0000 Received: from localhost ([127.0.0.1]:52798 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGUuv-0004zr-IE for submit@debbugs.gnu.org; Fri, 13 Jan 2023 20:01:05 -0500 Received: from mail-pl1-f170.google.com ([209.85.214.170]:39578) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGUut-0004zD-T4 for 27782@debbugs.gnu.org; Fri, 13 Jan 2023 20:01:04 -0500 Received: by mail-pl1-f170.google.com with SMTP id d15so25082092pls.6 for <27782@debbugs.gnu.org>; Fri, 13 Jan 2023 17:01:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=Zt9JzlIBBwHIfbBGsI2nqNzm/kr0ZWK3TJ5AFOIZHGc=; b=NEGdEnD9tAZePj7S4p9DSWaaZZNuHPey0YKWPyUui/U1cHY5dpClsqvu2jOj4WrRhn STzlZGYSqIdZEhupC1RFHhA/VEjdyrP9arDPAdQJpkcLIxFCKZ821yXN84H/mWVWLG4F EfBRrHbaK3cE+aLksbNNxXspRfQRhgLObephFvMa+zAnaVD/97KwzCdJSbTSdaMCknlM bUn3OP3U9bVuf7ZFsxJyKA++5cxBuWDZDlR9lHEnoZL/G5FTtliZqs8skyMVG3lbneCR SB8ITll8DiPRXzn4ns2fxNEeJaRGJg0doIHnoqBqX0cFfr089CezskQVsUQhKaXN/K/4 ifKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Zt9JzlIBBwHIfbBGsI2nqNzm/kr0ZWK3TJ5AFOIZHGc=; b=n5IIpMQgw9asZiDFEzjX6+MR0f02OK9csnEqx2hei20aETvpS4E8DVMGo992WtfpS+ PLgyTwQkZI9N3em+/WT+at4CqP7Ef8x1vHoZhawo1Pyxc02IzBix2mXLE3U+Icfx0Vz+ KCQKPzf5MM1YS8Xb8Lcc5K7wlq5qrdhpkeoQ2mZtyqvz5PE1CLmI0wmCDZRF6QdoFoln OTzDtyp2CAq78A70Q6H8d7kzxR5dC0f2ehGRzRfyXjqfjBcRUXw9UujjKWZ+LaT0AFWx 8l+3ZcpgIPe8CuYllBXDgvKFlY0Xj1vJG35J8+KHeMBGPw3JZMugUdBtCObrZd9AUb83 tcfQ== X-Gm-Message-State: AFqh2kqlaQPDyYQtb/EIBoXVo/SE9AnP/7dRub+mazGmeWjEBON0WXck N8XIUlqR5zOTMRlDD3jbe68TKTbr/wE= X-Google-Smtp-Source: AMrXdXsQoaHrUXgs8S1rEWa8JRm4pMs+elx6CyNdNhYmJSrACeT+m/V8oXuKis6MtXxy6RXiI4etUQ== X-Received: by 2002:a17:902:b684:b0:192:f7b3:5074 with SMTP id c4-20020a170902b68400b00192f7b35074mr32830218pls.61.1673658056209; Fri, 13 Jan 2023 17:00:56 -0800 (PST) Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id p8-20020a170902780800b0019117164732sm14693118pll.213.2023.01.13.17.00.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Jan 2023 17:00:55 -0800 (PST) Content-Type: multipart/mixed; boundary="------------t8d06AVsub6x0oWuKOrqTKps" Message-ID: <7a83fb6e-7f9c-b5fd-5b9f-aac81fade548@gmail.com> Date: Fri, 13 Jan 2023 17:00:54 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: patch for mmap and friends Content-Language: en-US From: Matt Wette To: 27782@debbugs.gnu.org, guile-devel@gnu.org References: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> In-Reply-To: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) This is a multi-part message in MIME format. --------------t8d06AVsub6x0oWuKOrqTKps Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 1/13/23 4:49 PM, Matt Wette wrote: > Please consider this patch for adding mmap(), munmap() and msync() >  to libguile/filesys.c.  Included is update for posix.texi and test > file mman.test. > Once included, feature 'mman should be #t. > > Matt Please add the attached file: test-suite/tests/mman.test. I thought it was included in the patch.  It's the thought that counts, right? Matt --------------t8d06AVsub6x0oWuKOrqTKps Content-Type: text/plain; charset=UTF-8; name="mman.test" Content-Disposition: attachment; filename="mman.test" Content-Transfer-Encoding: base64 Ozs7OyBtbWFuLnRlc3QgLS0tIFRlc3RzIGZvciBtbWFwIEFQSS4gICAgLSotIHNjaGVtZSAt Ki0KOzs7Owo7Ozs7IENvcHlyaWdodCAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgo7Ozs7Cjs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgo7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKOzs7OyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKOzs7OyB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCjs7OzsKOzs7OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzs7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7Ozs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCjs7OzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KOzs7Owo7Ozs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKOzs7OyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCjs7OzsgRm91bmRh dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQoKKGRlZmluZS1tb2R1bGUgKHRlc3QtbW1hbikKICAjOnVzZS1t b2R1bGUgKHRlc3Qtc3VpdGUgbGliKQogICM6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBndWls ZS10ZXN0KQogICM6dXNlLW1vZHVsZSAocm5ycyBieXRldmVjdG9ycykKICAjOmRlY2xhcmF0 aXZlPyAjZgogICkKCihkZWZpbmUgKG1tYXAtdGVzdC1maWxlKQogIChkYXRhLWZpbGUtbmFt ZSAiZm9vLnR4dCIpKQoKKGRlZmluZSBtbWFwLXRlc3Qtc3RyaW5nICJoZWxsbywgd29ybGQi KQoKKGRlZmluZSAoZ2VuLW1tYXAtdGVzdC1maWxlKQogICh3aXRoLW91dHB1dC10by1maWxl IChtbWFwLXRlc3QtZmlsZSkKICAgIChsYW1iZGEgKCkgKGRpc3BsYXkgbW1hcC10ZXN0LXN0 cmluZykpKSkKCih3aGVuIChwcm92aWRlZD8gJ21tYW4pCgogIChnZW4tbW1hcC10ZXN0LWZp bGUpCgogICh3aXRoLXRlc3QtcHJlZml4ICJtbWFuIgoKICAgIChwYXNzLWlmICJtbWFuIDEi CiAgICAgIChsZXQgKChidiAobW1hcCAwICN4MTAwKSkpCiAgICAgICAgKGJ5dGV2ZWN0b3It dTgtc2V0ISBidiAwIDM0KQogICAgICAgICg9IChieXRldmVjdG9yLXU4LXJlZiBidiAwKSAz NCkpKQoKICAgICkpCgo7OyAtLS0gbGFzdCBsaW5lIC0tLQo= --------------t8d06AVsub6x0oWuKOrqTKps-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 14 10:19:04 2023 Received: (at 27782) by debbugs.gnu.org; 14 Jan 2023 15:19:04 +0000 Received: from localhost ([127.0.0.1]:55352 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGiJE-0000gH-EH for submit@debbugs.gnu.org; Sat, 14 Jan 2023 10:19:04 -0500 Received: from michel.telenet-ops.be ([195.130.137.88]:45118) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGiJA-0000fp-Vq for 27782@debbugs.gnu.org; Sat, 14 Jan 2023 10:19:03 -0500 Received: from [IPV6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16] ([IPv6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16]) by michel.telenet-ops.be with bizsmtp id 8fJz2900620ykKC06fJzAH; Sat, 14 Jan 2023 16:18:59 +0100 Message-ID: <445d3567-9bbf-487b-f338-8a16903e9e62@telenet.be> Date: Sat, 14 Jan 2023 16:18:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US To: Matt Wette , 27782@debbugs.gnu.org, guile-devel@gnu.org References: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> From: Maxime Devos Subject: Re: patch for mmap and friends In-Reply-To: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------txcfBpX3D8wbSy0yAe0BvX14" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r23; t=1673709539; bh=WmnQ5LociF8p3du1B2Gnf/+XO6ffr7cNv/SrO7xEXq8=; h=Date:To:References:From:Subject:In-Reply-To; b=ghhFKKmrypcgJVDIsx2eFrhXqeSJLfRaxXW8hQgvjRJQGJMcRKA38w+n6vwGFcgS8 3Mydyh3wICsBdpOtHo91vrqYDUMBwrugixS8AglFY9Un5sXQrTOoFE9OZms+CC0abk CR6fcxfWtheLRSO2DJWNRy1QlXoAk5l7KtPdOmI0qLPqZDgimFZmfe2y85PF53q4Nf XMR9v5/YpSxHPuWjgYarhah53aZv9NcjueUVRSFm+H1K7s7KDKw9qXWkUvGSE0FQqf t3tBfFAL4MF/+OHBvoqG6VGL+siMqUxO4XpVpHtVk7+x3bBOqvuT1Gd7+1dF9klo+j tlaD0bkxxh3Aw== X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------txcfBpX3D8wbSy0yAe0BvX14 Content-Type: multipart/mixed; boundary="------------kKhyPlCGQk1RAcrchnI7HiWA"; protected-headers="v1" From: Maxime Devos To: Matt Wette , 27782@debbugs.gnu.org, guile-devel@gnu.org Message-ID: <445d3567-9bbf-487b-f338-8a16903e9e62@telenet.be> Subject: Re: patch for mmap and friends References: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> In-Reply-To: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> --------------kKhyPlCGQk1RAcrchnI7HiWA Content-Type: multipart/mixed; boundary="------------0mPQhqtRR4C7ekOooJwIcG4d" --------------0mPQhqtRR4C7ekOooJwIcG4d Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQoNCk9uIDE0LTAxLTIwMjMgMDE6NDksIE1hdHQgV2V0dGUgd3JvdGU6DQo+IFBsZWFzZSBj b25zaWRlciB0aGlzIHBhdGNoIGZvciBhZGRpbmcgbW1hcCgpLCBtdW5tYXAoKSBhbmQgbXN5 bmMoKQ0KPiAgwqB0byBsaWJndWlsZS9maWxlc3lzLmMuwqAgSW5jbHVkZWQgaXMgdXBkYXRl IGZvciBwb3NpeC50ZXhpIGFuZCB0ZXN0IA0KPiBmaWxlIG1tYW4udGVzdC4NCj4gT25jZSBp bmNsdWRlZCwgZmVhdHVyZSAnbW1hbiBzaG91bGQgYmUgI3QuDQo+IA0KPiBNYXR0DQoNCg0K DQoNCj4gKyAgaWYgKFNDTV9VTkJORFAgKGZkKSkNCj4gKyAgICBjX2ZkID0gLTE7DQo+ICsg IGVsc2UNCj4gKyAgICBjX2ZkID0gc2NtX3RvX2ludCAoZmQpOw0KDQpQb3J0IG9iamVjdHMg c2hvdWxkIGJlIGFjY2VwdGVkIHRvbywgYXMgcHJldmlvdXNseSBhc2tlZCBvbiANCjxodHRw czovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2d1aWxlLXVzZXIvMjAyMi0wNi9tc2cw MDA2MC5odG1sPi4NCkFzIGltcGxpZWQgYnkgbGF0ZXIgY29tbWVudHMsIHVzaW5nIGEgcmF3 IGZkIGNhdXNlcyBwcm9ibGVtcyB3aXRoIA0KJ21vdmUtPmZkZXMnLiAgRm9yIHRoZSByZW1h aW5pbmcgcmVzcG9uc2UsIEknbGwgYXNzdW1lIHRoYXQgdGhlIGZ1bmN0aW9uIA0KYWNjZXB0 cyBwb3J0cyBhcyB3ZWxsLg0KDQogICgtLS0pDQoNCkFmdGVyIHRoaXMgY29kZSwgdGhlIHBv cnQgJ2ZkJyBiZWNvbWVzIHVucmVmZXJlbmNlZCBieSB0aGlzIGZ1bmN0aW9uLg0KDQo+ICsg IGlmIChTQ01fVU5CTkRQIChvZmZzZXQpKQ0KPiArICAgIGNfb2Zmc2V0ID0gMDsNCj4gKyAg ZWxzZQ0KPiArICAgIGNfb2Zmc2V0ID0gc2NtX3RvX29mZl90IChvZmZzZXQpOw0KPiArDQo+ ICsgIGlmICgoY19hZGRyID09IE5VTEwpICYmIChjX2ZsYWdzICYgTUFQX0ZJWEVEKSkNCj4g KyAgICBzY21fbWlzY19lcnJvciAoIm1tYXAiLCAiY2Fubm90IGhhdmUgTlVMTCBhZGRyIHcv IE1BUF9GSVhFRCIsIFNDTV9FT0wpOw0KDQpIZW5jZSwgaWYgdGhlIEdDIGlzIHJ1biBoZXJl LCBpdHMgcG9zc2libGUgZm9yIGZkIHRvIGJlIGF1dG9tYXRpY2FsbHkgDQpjbG9zZWQgaGVy ZS4NCg0KPiArICBTQ01fU1lTQ0FMTCAoY19tZW0gPSBtbWFwKGNfYWRkciwgY19sZW4sIGNf cHJvdCwgY19mbGFncywgY19mZCwgY19vZmZzZXQpKTsNCg0KQXMgc3VjaCwgQyAnbW1hcCcg Y291bGQgYmUgY2FsbGVkIG9uIGEgY2xvc2VkIGZpbGUgZGVzY3JpcHRvciBldmVuIGV2ZW4g DQppZiB0aGUgYXJndW1lbnQgdG8gU2NoZW1lICdtbWFwJyB3YXMgYW4gb3BlbiBwb3J0LCB3 aGljaCBpc24ndCBnb2luZyB0byANCndvcmsuDQoNCihXaGlsZSBpdCBpcyByZWNvbW1lbmRl ZCBmb3IgU2NoZW1lIGNvZGUgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcG9ydCANCnRv IG1hbnVhbGx5IGNsb3NlIGFmdGVyd2FyZHMsIHRvIGZyZWUgcmVzb3VyY2VzIGZhc3RlciB0 aGFuIHdhaXRpbmcgZm9yIA0KR0MsIGl0IGlzIG5vdCBhY3R1YWxseSByZXF1aXJlZC4pDQoN CldvcnNlLCBpZiB0aGUgcG9ydCBpcyBjbG9zZWQgKGJ5IEdDKSwgaW4gdGhlIG1lYW4gdGlt ZSBhbm90aGVyIHRocmVhZCANCm1heSBoYXZlIG9wZW5lZCBhIG5ldyBwb3J0LCB3aG9zZSBm aWxlIGRlc2NyaXB0b3IgY29pbmNpZGVzIHdpdGggY19mZC4NCg0KVG8gYXZvaWQgdGhpcyBw cm9ibGVtLCB5b3UgY2FuIGFkZA0KDQogICBzY21fcmVtZW1iZXJfdXB0b19oZXJlXzEgKGZk KTsNCg0KYWZ0ZXIgdGhlIFNDTV9TWVNDQUxMLg0KDQpFdmVuIHRoZW4sIGEgcHJvYmxlbSBy ZW1haW5zIC0tIGEgY29uY3VycmVudCB0aHJlYWQgbWlnaHQgYmUgdXNpbmcgDQonbW92ZS0+ ZmRlcycgdG8gJ21vdmUnIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGhlbmNlIGludmFsaWRhdGlu ZyBjX2ZkLg0KRnVuY3Rpb25zIGxpa2UgJ3NjbV9zZWVrJyBoYW5kbGUgdGhpcyB3aXRoICdz Y21fZHlud2luZF9hY3F1aXJlX3BvcnQnIA0KKElJVUMsIGl0IHRha2VzIGEgbXV0ZXggdG8g ZGVsYXkgY29uY3VycmVudCAnbW92ZS0+ZmRlcycgdW50aWwgZmluaXNoZWQpLg0KDQpJSVVD LCB0aGUgc29sdXRpb24gdGhlbiBsb29rcyBsaWtlIChpZ25vcmluZyB3cmFwcGluZykgKHRo ZSBsYWNrIG9mIA0Kc2NtX3JlbWVtYmVyX3VwdG9faGVyZV8xIGlzIGludGVudGlvbmFsKToN Cg0Kc2NtX2R5bndpbmRfYmVnaW4gKDApOw0Kc2NtX2R5bndpbmRfYWNxdWlyZV9wb3J0IChm ZCk7IC8vIChhY2NlcHRzIGJvdGggcG9ydHMgYW5kIG51bWJlcnMsIElJVUMpDQovLyBuZWVk cyB0byBiZSBhZnRlciBzY21fZHlud2luZF9hY3F1aXJlX3BvcnQNCmlmIChTQ01fVU5CTkRQ IChmZCkpDQogICBjX2ZkID0gLTE7DQplbHNlDQogICBjX2ZkID0gc2NtX3RvX2ludCAoZmQp Ow0KDQpTQ01fU1lTQ0FMTCAoY19tZW0gPSBtbWFwKGNfYWRkciwgY19sZW4sIGNfcHJvdCwg Y19mbGFncywgY19mZCwgY19vZmZzZXQpKTsNCmlmIChjX21lbSA9PSBNQVBfRkFJTEVEKQ0K ICAgICBzY21fc3lzZXJyb3IgKCJtbWFwIik7DQpzY21fZHlud2luZF9lbmQgKCk7DQoNCihJ J20gbm90IHJlYWxseSBmYW1pbGlhciB3aXRoIHNjbV9keW53aW5kX2JlZ2luICYgZnJpZW5k cywgSSdtIG1vc3RseSANCmNvcHktcGFzdGluZyBmcm9tIGxpYmd1aWxlL3BvcnRzLmMgaGVy ZS4pDQoNCj4gKyAgaWYgKGNfbWVtID09IE1BUF9GQUlMRUQpDQo+ICsgICAgc2NtX3N5c2Vy cm9yICgibW1hcCIpOyAgICAgICAgICAgICAgLyogZXJybm8gc2V0ICovDQo+ICsNCj4gKyAg cG9pbnRlciA9IHNjbV9jZWxsIChzY21fdGM3X3BvaW50ZXIsIChzY21fdF9iaXRzKSBjX21l bSk7DQo+ICsgIGJ2ZWMgPSBzY21fY190YWtlX3R5cGVkX2J5dGV2ZWN0b3IoKHNpZ25lZCBj aGFyICopIGNfbWVtICsgY19vZmZzZXQsIGNfbGVuLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU0NNX0FSUkFZX0VMRU1FTlRfVFlQRV9WVTgsIHBvaW50ZXIp Ow0KDQo+ICsgIGFzc2VydChzaXplb2Yodm9pZCopIDw9IHNpemVvZihzaXplX3QpKTsNCg0K SUlSQyB0aGVyZSBpcyBhIEMgdHJpY2sgaW52b2x2aW5nIGZpZWxkcywgYXJyYXlzIGFuZCB0 eXBlcyB0byBjaGVjayB0aGlzIA0KYXQgY29tcGlsZS10aW1lIGluc3RlYWQuICBNYXliZToN Cg0Kc3RydWN0IHdoYXRldmVyIHsNCiAgICAvKiBpZiBhdmFpbGFiaWxpdHkgb2YgemVyby1s ZW5ndGggYXJyYXlzIGNhbiBiZSBhc3N1bWVkICovDQogICAgaW50IGZvb1tzaXplb2Yoc2l6 ZV90KSAtIHNpemVvZih2b2lkKildOw0KICAgIC8qIGFsdGVybmF0aXZlbHksIGEgd2Vha2Vy IGJ1dCBwb3J0YWJsZSBjaGVjayAqLw0KICAgIGludCBmb29bc2l6ZW9mKHNpemVfdCkgLSBz aXplb2Yodm9pZCopICsgMV07DQp9Ow0KDQpHcmVldGluZ3MsDQpNYXhpbWUuDQo= --------------0mPQhqtRR4C7ekOooJwIcG4d Content-Type: application/pgp-keys; name="OpenPGP_0x49E3EE22191725EE.asc" Content-Disposition: attachment; filename="OpenPGP_0x49E3EE22191725EE.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEX4ch6BYJKwYBBAHaRw8BAQdANPb/d6MrGnGi5HyvODCkBUJPRjiFQcRU5V+m xvMaAa/NL01heGltZSBEZXZvcyA8bWF4aW1lLmRldm9zQHN0dWRlbnQua3VsZXV2 ZW4uYmU+wpAEExYIADgWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCX4ch6AIbAwUL CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBJ4+4iGRcl7japAQC3opZ2KGWzWmRc /gIWSu0AAcfMwyinFEEPa/QhUt2CogD/e2RdF4CYAgaRHJJmZ9WU7piKbLZ7llB4 LzgezVDHggzNJU1heGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT7C kAQTFggAOBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJf56ycAhsDBQsJCAcDBRUK CQgLBRYCAwEAAh4BAheAAAoJEEnj7iIZFyXujpQBAKV1SwDDl4f24rXciDlB9L8W ycZt30CgbewMSRQk4mvbAP9dFMbVVixYBd6C8cfhR+NsOBGiOJnQABlUmgNuqGFJ Dc44BF+HIegSCisGAQQBl1UBBQEBB0BOlzIWiJzgobMF6/cqwLaLk7jIcFSZ++c0 k9cCNT6YXwMBCAfCeAQYFggAIBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJfhyHo AhsMAAoJEEnj7iIZFyXuMr0BAJc8cl5PGvVmVuSQVKjleNl4DK1/XAaPAYPe34AE fZJPAP9IqLCQhH/FeJanHqBP8gNdGNI2qn8RnnLVfRJgUjZ1BA=3D=3D =3DOVqp -----END PGP PUBLIC KEY BLOCK----- --------------0mPQhqtRR4C7ekOooJwIcG4d-- --------------kKhyPlCGQk1RAcrchnI7HiWA-- --------------txcfBpX3D8wbSy0yAe0BvX14 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCY8LH4wUDAAAAAAAKCRBJ4+4iGRcl7pcL AP9pBTBQorWiz3Z1IuABm1iioSXafy78KKBl35WxIMGqXQD/fvLEmvGHrVKgTo6tWHdsAxsMTQPH 95g4ZNraqsIyvw4= =1wPJ -----END PGP SIGNATURE----- --------------txcfBpX3D8wbSy0yAe0BvX14-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 14 18:46:32 2023 Received: (at 27782) by debbugs.gnu.org; 14 Jan 2023 23:46:32 +0000 Received: from localhost ([127.0.0.1]:55766 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGqEK-0005DZ-4t for submit@debbugs.gnu.org; Sat, 14 Jan 2023 18:46:32 -0500 Received: from mail-pf1-f180.google.com ([209.85.210.180]:46046) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGqEH-0005DK-Fg for 27782@debbugs.gnu.org; Sat, 14 Jan 2023 18:46:30 -0500 Received: by mail-pf1-f180.google.com with SMTP id s3so16068419pfd.12 for <27782@debbugs.gnu.org>; Sat, 14 Jan 2023 15:46:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:cc:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=To2C8Qwk/ya0c2h1H47hiM3LOlHrVq8y4exC+qiuGGk=; b=NcFisLanMzuSAkFgGvGfyNbvaerhTiOC7KyjNR8HReZtZFNl92G8oyFA2Plt+N1wms bG2ZXXYhqsUpOmbKsWDay62uQIEpAonUFim747PCaDl/TKwEom8he7952lw+GMnlOf6O AgO3Uex1iYvb4lkvsD1Eqb7WzUrvey5r2FRXAAi6MDrICD8sxFqcNGBglTicsr0CgHmQ bF3UZs9GDbzSvI81H0k7UxiSttdjx0enWvMhXNy0nZ0bWsywprfmN79va5M45Z+WTWNO uo+sFcZ3bii7pjzYCJrHHMMwXHFNEb2miC62BYENGLIY2biyWcob3Cwy4XlJiNFb7T+i AS9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:cc:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=To2C8Qwk/ya0c2h1H47hiM3LOlHrVq8y4exC+qiuGGk=; b=vndxE+jIJ10aRza2z65DafOkWHBDjALVTfO0zeHRRa8v+LhCZaITU6BkAffkwRPIYv cC9zvtiAcu7G0iJ1Nfnvri5y93Oj1hsjnc4UR5j6QdZa8V2I1XGGLw07unOipMb/zbzF gedxqL6/kiuST0OG9fhi5ukz/iazIqyccP1lYaEOEsXK+O8qbFsaShs5WROdsyPqboHO dCXb8Yhtn+DmTt1bX80CYz2KRlws1Mk/vc82+YdZiNIOxURWjwvSBFggWEf0dg74Sw3c GjctsLJeglRnhJjAuXHUUFhfXS+NyvylJ0Brz327C55kXrm7HNJRWYelXWcnkya7hW8f 1quA== X-Gm-Message-State: AFqh2koXaAW8BnY0shdeYwctc8+NyLsQgCyWmOlxX7jY5Z5v8K6VKCm7 v9iL0xyCAWTKjwAvUC8UAtk= X-Google-Smtp-Source: AMrXdXu4T5AlsI3u2h76hKqShDWZCR7DRxyMY0ui8LExzucf7dXs+Lsedgkliopb0kHhYgGlBaff6Q== X-Received: by 2002:a05:6a00:1885:b0:580:9a80:6e37 with SMTP id x5-20020a056a00188500b005809a806e37mr101341486pfh.25.1673739982630; Sat, 14 Jan 2023 15:46:22 -0800 (PST) Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id d63-20020a623642000000b0057691fb0d37sm15599772pfa.193.2023.01.14.15.46.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 14 Jan 2023 15:46:22 -0800 (PST) Message-ID: Date: Sat, 14 Jan 2023 15:46:20 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: patch for mmap and friends Content-Language: en-US To: Maxime Devos , guile-devel@gnu.org References: <1ee846ab-e9ce-d616-94dd-0056e4b840f9@gmail.com> <445d3567-9bbf-487b-f338-8a16903e9e62@telenet.be> <5fda49f2-6e23-9a53-85d2-c1cc38cf0cce@gmail.com> <23890f8a-8891-d888-b289-c0d06304fff1@telenet.be> From: Matt Wette In-Reply-To: <23890f8a-8891-d888-b289-c0d06304fff1@telenet.be> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 27782 Cc: 27782@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 1/14/23 2:42 PM, Maxime Devos wrote: >     { >       /* Use the fd of the port under clobber protection from >          concurrency. As scm_dynwind_acquire_port assumes that >          FILE is a port, check that first. */ >       SCM_VALIDATE_PORT (SCM_ARG5, file); >       scm_dynwind_acquire_port (file); >       c_fd = scm_fileno (file); >     } Thanks.  I'll try this, modulo update to  scm_to_int (scm_fileno (file)). Matt From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 14 09:50:50 2023 Received: (at 27782) by debbugs.gnu.org; 14 Feb 2023 14:50:50 +0000 Received: from localhost ([127.0.0.1]:53054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRwdt-00030K-KY for submit@debbugs.gnu.org; Tue, 14 Feb 2023 09:50:50 -0500 Received: from mail-pl1-f180.google.com ([209.85.214.180]:46658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRwdr-000304-Gi for 27782@debbugs.gnu.org; Tue, 14 Feb 2023 09:50:48 -0500 Received: by mail-pl1-f180.google.com with SMTP id ja21so9693348plb.13 for <27782@debbugs.gnu.org>; Tue, 14 Feb 2023 06:50:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=07rGQFxw3LsRb3lx6ZL0+2pov5pTL5czrgrBDBrvab4=; b=jUJvqA3O7OxceKuEDQcTc6Q5VY6Ja9bGEWMbM7Z5IlhYj++hrPoBOrNRw04nA44NYT o1QV5VU9lIyCx1oFx/V7ubHZ2A7GHRmwnoCAWdmx8SyCrWT9lCblCavRxGx1DXu83npg 687eONasKabItxaNwsNnDfo9sxmGqQSm73EiN/rspRFYRMmpuZCf0zDpFbN0XKJmsY/9 CV9L2tiBWbaOGjhtpqxAlWwVsY9p3BznycRb8aNrGHUMnrwho+2XvOW8g5Le5YmIA+mM kABcNS+e1Lq+A1V7DrYMGB9U+Co5f5eiyRFOfNJOZTdtetpcBayUoGQmGIf9AlwYJaS/ FuXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=07rGQFxw3LsRb3lx6ZL0+2pov5pTL5czrgrBDBrvab4=; b=VwhU2BbSsLhS+wFBQeH73zjHZxn6ltJc4vN5vbGkwz9s3xpfEvuKml/Qp5UA6gF/2Q oX48yRfF0bRSlMUODEskI/mdHkI6mj9wYGjB+D1wj2rOrzZRwUj+hgjkwwp4EkP8I0md Nw6E2iKCxG/rUjcUeHJmFnWH2BDMNXdyskxwZMYtIzHN/g5ciVvI22IjgFVr3FDpMhmd 5L3t+J9Ga+llFdZoJ7FxEHhl2efX540sMdh3S16z7fWGtUxabbeotSOR0GxoZiPrZ3yK 5QrewU77kKZCzjbw30/Siof+HVXb3QYiqz9PLN+Dmbu1tfjIwN9jBwMOZ6SxcapGedlH DS7A== X-Gm-Message-State: AO0yUKUB9al+O8BX6TOIHqEz+ndzjszzBkShrsIvyODid6aoL+BUimUG moHTKEy1g6yghKLSiGpMzLEXNUvuskE= X-Google-Smtp-Source: AK7set8mH4WSuHxYHsIlyjrt7IGS/GD5Xdce4795UZdrM5J2gAoQGfrmBI2o1dTwaFf4rHhdSeMI9A== X-Received: by 2002:a05:6a21:9718:b0:bc:c456:9621 with SMTP id ub24-20020a056a21971800b000bcc4569621mr1949627pzb.8.1676386241032; Tue, 14 Feb 2023 06:50:41 -0800 (PST) Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id g6-20020a62e306000000b005a8e9e2f1c5sm455319pfh.187.2023.02.14.06.50.40 for <27782@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Feb 2023 06:50:40 -0800 (PST) Content-Type: multipart/mixed; boundary="------------kCCVVbCEOfj8TolyIBF8uY0E" Message-ID: <31426cbf-dec2-9764-bbe4-99322d02de66@gmail.com> Date: Tue, 14 Feb 2023 06:50:39 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Content-Language: en-US To: 27782@debbugs.gnu.org From: Matt Wette Subject: mman patch for v3.0.9 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------kCCVVbCEOfj8TolyIBF8uY0E Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Note.  I have made more changes based on feedback from the mailing list. 1) removed use of scm_c_take_typed_bytevector 2) changed code to generate PAGE_SIZE I think the mmap finalizer still needs review from the Guile experts. I'm attaching a patch to the v3.0.9 release (commit 9b20ca). Sorry about not using format-patch, but diff. Matt --------------kCCVVbCEOfj8TolyIBF8uY0E Content-Type: text/x-patch; charset=UTF-8; name="v3.0.9-mman.patch" Content-Disposition: attachment; filename="v3.0.9-mman.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBkNWNlMWM0 YWMuLmMzYzMzZThiMyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3Vy ZS5hYwpAQCAtMTAxOCw2ICsxMDE4LDggQEAgQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRt LnRtX2dtdG9mZl0sLCwKIF0pCiBHVUlMRV9TVFJVQ1RfVVRJTUJVRgogCitBQ19DSEVDS19G VU5DUyhbbXN5bmNdKQorCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIwpkaWZmIC0tZ2l0IGEvZG9j L3JlZi9wb3NpeC50ZXhpIGIvZG9jL3JlZi9wb3NpeC50ZXhpCmluZGV4IDU2NTNkMzc1OC4u MTZmM2JiYzQ5IDEwMDY0NAotLS0gYS9kb2MvcmVmL3Bvc2l4LnRleGkKKysrIGIvZG9jL3Jl Zi9wb3NpeC50ZXhpCkBAIC0xMjE2LDYgKzEyMTYsNTEgQEAgdmFsaWQgc2VwYXJhdG9ycy4g IFRodXMsIHByb2dyYW1zIHNob3VsZCBub3QgYXNzdW1lIHRoYXQKIHNlcGFyYXRvci0tLWUu Zy4sIHdoZW4gZXh0cmFjdGluZyB0aGUgY29tcG9uZW50cyBvZiBhIGZpbGUgbmFtZS4KIEBl bmQgZGVmdnIKIAorQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtbWFwIGFkZHIgbGVuIFtw cm90IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0BkZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9 IG1tYXAvc2VhcmNoIGFkZHIgbGVuIFtwcm90IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0Ny ZWF0ZSBhIG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVjdG9yLiAgQHZhcnth ZGRyfSwgaWYKK25vbi16ZXJvLCBpcyB0aGUgc3RhcmluZyBhZGRyZXNzOyBvciwgaWYgemVy bywgaXMgYXNzaWduZWQgYnkgdGhlCitzeXN0ZW0uICBAdmFye3Byb3R9LCBpZiBwcm92aWRl ZCwgYXNzaWducyBwcm90ZWN0aW9uLiAgQHZhcntmZH0sCitpZiBwcm92aWRlZCBhc3NvY2lh dGVzIHRoZSBtZW1vcnkgcmVnaW9uIHdpdGggYSBmaWxlLCBzdGFydGluZworYXQgQHZhcntv ZmZzZXR9LCBpZiBwcm92aWRlZC4KK1RoZSByZWdpb24gcmV0dXJuZWQgYnkgbW1hcCB3aWxs IE5PVCBiZSBzZWFyY2hlZCBieSB0aGUgZ2FyYmFnZQorIGNvbGxlY3RvciBmb3IgcG9pbnRl cnMsIHdoaWxlIHRoYXQgcmV0dXJuZWQgYnkgbW1hcC9zZWFyY2ggd2lsbC4KK05vdGUgdGhh dCB0aGUgZmluYWxpemVyIGZvciB0aGUgcmV0dXJuZWQgYnl0ZXZlY3RvciB3aWxsIGNhbGwg bXVubWFwLgorRGVmYXVsdHMgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmUKK0B0YWJsZSBA YXNpcworQGl0ZW0gcHJvdAorKGxvZ2lvciBQUk9UX1JFQUQgUFJPVF9XUklURSkKK0BpdGVt IGZsYWdzCisobG9naW9yIE1BUF9BTk9OWU1PVVMgTUFQX1BSSVZBVEUpCitAaXRlbSBmZAor LTEKK0BpdGVtIG9mZnNldAorMAorQGVuZCB0YWJsZQorQGVuZCBkZWZmbgorCitAZGVmZm4g e1NjaGVtZSBQcm9jZWR1cmV9IG11bm1hcCBidmVjCitHaXZlbiBieXRldmVjdG9yIGdlbmVy YXRlZCBieSBtbWFwIG9yIG1tYXAvc2VhcmNoLCB1bm1hcCB0aGUKK3RoZSBhc3NvY2lhdGVk IG1lbW9yeS4gIFRoZSBhcmd1bWVudCB3aWxsIGJlIG1vZGlmaWVkIHRvCityZWZsZWN0IGEg emVybyBsZW5ndGggYnYuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHVuc3BlY2lmaWVkLgorTm90 ZSB0aGF0IG11bm1hcCBpcyBjYWxsZWQgYnkgZmluYWxpemVyIGFzc29jaWF0ZWQgd2l0aAor Ynl0ZXZlY3RvcnMgcmV0dXJuZWQgZnJvbSBtbWFwIGFuZCBtbWFwL3NlYXJjaC4KK0BlbmQg ZGVmZm4KKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtc3luYyBhZGRyIGxlbmd0aCBm bGFnCitGbHVzaCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGluLWNvcmUgY29weSBvZiBhIGZpbGUg bWFwcGVkIHVzaW5nCittbWFwIG9yIG1tYXAvc2VhcmNoLiAgVGhpcyBzaG91bGQgYmUgZXhl Y3V0ZWQgb24gbW9kaWZpZWQgbWVtb3J5CitiZWZvcmUgY2FsbGluZyBtdW5tYXAuICBUaGUg QHZhcntmbGFnc30gYXJndW1lbnQgbXVzdCBiZSBleGFjdGx5IG9uZQorb2YgdGhlIGZvbGxv d2luZzoKK0B0YWJsZSBAY29kZQorQGl0ZW0gTVNfQVNZTkMKK0luaXRpYXRlIHVwZGF0ZSwg cmV0dXJuIGltbWVkaWF0ZWx5LgorQGl0ZW0gTVNfU1lOQworSW5pdGlhdGUgdXBkYXRlLCBi bG9jayB1bnRpbCBjb21wbGV0ZS4KK0BpdGVtIE1TX0lOVkFMSURBVEUKK0ludmFsaWRhdGUg b3RoZXIgbWFwcGluZ3Mgb2YgdGhlIHNhbWUgZmlsZS4KK0BlbmQgdGFibGUKK0BlbmQgZGVm Zm4KIAogQG5vZGUgVXNlciBJbmZvcm1hdGlvbgogQHN1YnNlY3Rpb24gVXNlciBJbmZvcm1h dGlvbgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvZmlsZXN5cy5jIGIvbGliZ3VpbGUvZmlsZXN5 cy5jCmluZGV4IDFmMGJiYTU1Ni4uMWY0YzVjNzkzIDEwMDY0NAotLS0gYS9saWJndWlsZS9m aWxlc3lzLmMKKysrIGIvbGliZ3VpbGUvZmlsZXN5cy5jCkBAIC02NywxMyArNjcsMjEgQEAK ICMgaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lT X01NQU5fSAorIyBpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2VuZGlmCisKICNpbmNsdWRlICJh c3luYy5oIgorI2luY2x1ZGUgImF0b21pY3MtaW50ZXJuYWwuaCIgICAgICAgICAgIC8qIG1t YXAgKi8KICNpbmNsdWRlICJib29sZWFuLmgiCiAjaW5jbHVkZSAiZHlud2luZC5oIgogI2lu Y2x1ZGUgImZkZXMtZmluYWxpemVycy5oIgogI2luY2x1ZGUgImZlYXR1cmUuaCIKKyNpbmNs dWRlICJmaW5hbGl6ZXJzLmgiICAgICAgICAgICAgICAgICAvKiBtbWFwICovCisjaW5jbHVk ZSAiZm9yZWlnbi5oIiAgICAgICAgICAgICAgICAgICAgLyogbW1hcCAqLwogI2luY2x1ZGUg ImZwb3J0cy5oIgogI2luY2x1ZGUgImdzdWJyLmgiCisjaW5jbHVkZSAiaW9leHQuaCIgICAg ICAgICAgICAgICAgICAgICAgLyogbW1hcCAqLwogI2luY2x1ZGUgImlzZWxlY3QuaCIKICNp bmNsdWRlICJsaXN0LmgiCiAjaW5jbHVkZSAibG9hZC5oIgkvKiBmb3Igc2NtX2lfbWlycm9y X2JhY2tzbGFzaGVzICovCkBAIC0yMjYzLDYgKzIyNzEsMzExIEBAIHNjbV9kaXJfZnJlZSAo U0NNIHApCiAKIAwKIAorI2lmZGVmIEhBVkVfU1lTX01NQU5fSAorLyogc2VlIGh0dHBzOi8v cHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvbW1h cC5odG1sICovCisKK3N0YXRpYyB2b2lkCittbWFwX2ZpbmFsaXplciAodm9pZCAqcHRyLCB2 b2lkICpkYXRhKQoreworICBTQ00gYnZlYzsKKyAgdm9pZCAqY19hZGRyOworICBzaXplX3Qg Y19sZW47CisgIGludCBydjsKKworICBidmVjID0gU0NNX1BBQ0tfUE9JTlRFUiAocHRyKTsK KyAgaWYgKCFTQ01fQllURVZFQ1RPUl9QIChidmVjKSkKKyAgICBzY21fbWlzY19lcnJvciAo Im1tYXAiLCAiZXhwZWN0aW5nIGJ5dGV2ZWN0b3IiLCBTQ01fRU9MKTsKKworICBjX2FkZHIg PSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGNfbGVuID0gU0NNX0JZVEVW RUNUT1JfTEVOR1RIIChidmVjKTsKKyAgU0NNX1NZU0NBTEwgKHJ2ID0gbXVubWFwKGNfYWRk ciwgY19sZW4pKTsKKyAgaWYgKHJ2ICE9IDApCisgICAgc2NtX21pc2NfZXJyb3IgKCJtbWFw IiwgImZhaWxlZCB0byBtdW5tYXAgbWVtb3J5IiwgU0NNX0VPTCk7Cit9CisKKy8qIENvZGUg Zm9yIHNjbV9keW53aW5kX2FjcXVpcmVfcG9ydCBhbmQgcmVsZWFzZV9wb3J0IHNvdXJjZWQg ZnJvbSBwb3J0cy5jLiAqLworCitzdGF0aWMgdm9pZAorcmVsZWFzZV9wb3J0IChTQ00gcG9y dCkKK3sKKyAgc2NtX3RfcG9ydCAqcHQgPSBTQ01fUE9SVCAocG9ydCk7CisgIHVpbnQzMl90 IGN1ciA9IDEsIG5leHQgPSAwOworICB3aGlsZSAoIXNjbV9hdG9taWNfY29tcGFyZV9hbmRf c3dhcF91aW50MzIgKCZwdC0+cmVmY291bnQsICZjdXIsIG5leHQpKQorICAgIHsKKyAgICAg IGlmIChjdXIgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgICAgbmV4dCA9IGN1ciAtIDE7 CisgICAgfQorIGlmIChjdXIgPiAxKQorICAgIHJldHVybjsKKworICBpZiAoU0NNX1BPUlRf VFlQRSAocG9ydCktPmNsb3NlKQorICAgIFNDTV9QT1JUX1RZUEUgKHBvcnQpLT5jbG9zZSAo cG9ydCk7CisKKyAgLyogU2tpcCBlbmNvZGluZyBjb2RlIGZyb20gcG9ydHMuYyEgKi8KK30K Kworc3RhdGljIHZvaWQKK3NjbV9keW53aW5kX2FjcXVpcmVfcG9ydCAoU0NNIHBvcnQpCit7 CisgIHNjbV90X3BvcnQgKnB0ID0gU0NNX1BPUlQgKHBvcnQpOworICB1aW50MzJfdCBjdXIg PSAxLCBuZXh0ID0gMjsKKyAgd2hpbGUgKCFzY21fYXRvbWljX2NvbXBhcmVfYW5kX3N3YXBf dWludDMyICgmcHQtPnJlZmNvdW50LCAmY3VyLCBuZXh0KSkKKyAgICB7CisgICAgICBpZiAo Y3VyID09IDApCisgICAgICAgIHNjbV93cm9uZ190eXBlX2FyZ19tc2cgKE5VTEwsIDAsIHBv cnQsICJvcGVuIHBvcnQiKTsKKyAgICAgIG5leHQgPSBjdXIgKyAxOworICAgIH0KKyAgc2Nt X2R5bndpbmRfdW53aW5kX2hhbmRsZXJfd2l0aF9zY20gKHJlbGVhc2VfcG9ydCwgcG9ydCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDTV9GX1dJTkRfRVhQ TElDSVRMWSk7Cit9CisKK1NDTV9ERUZJTkUgKHNjbV9tbWFwX3NlYXJjaCwgIm1tYXAvc2Vh cmNoIiwgMiwgNCwgMCwKKyAgICAgICAgICAgIChTQ00gYWRkciwgU0NNIGxlbiwgU0NNIHBy b3QsIFNDTSBmbGFncywgU0NNIGZpbGUsIFNDTSBvZmZzZXQpLAorCSAgICAiQ3JlYXRlIGEg bWVtb3J5IG1hcHBpbmcsIHJldHVybmluZyBhIGJ5dGV2ZWN0b3IuLiAgQHZhcnthZGRyfSxc biIKKwkgICAgImlmIG5vbi16ZXJvLCBpcyB0aGUgc3RhcmluZyBhZGRyZXNzOyBvciwgaWYg emVybywgaXMgYXNzaWduZWQgYnlcbiIKKwkgICAgInRoZSBzeXN0ZW0uICBAdmFye3Byb3R9 LCBpZiBwcm92aWRlZCwgYXNzaWducyBwcm90ZWN0aW9uLlxuIgorCSAgICAiQHZhcntmaWxl fSwgYSBwb3J0IG9yIGZkLCBpZiBwcm92aWRlZCBhc3NvY2lhdGVzIHRoZSBtZW1vcnlcbiIK KyAgICAgICAgICAgICJyZWdpb24gd2l0aCBhIGZpbGUgc3RhcnRpbmcgYXQgQHZhcntvZmZz ZXR9LCBpZiBwcm92aWRlZC5cbiIKKwkgICAgIlRoZSByZWdpb24gcmV0dXJuZWQgYnkgbW1h cCBXSUxMIGJlIHNlYXJjaGVkIGJ5IHRoZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3Ig Zm9yIHBvaW50ZXJzLiAgU2VlIGFsc28gbW1hcC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAg ICAgICAgICJmaW5hbGl6ZXIgZm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2Fs bCBtdW5tYXAuXG4iCisJICAgICJEZWZhdWx0cyBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGFy ZVxuIgorCSAgICAiQHRhYmxlIEBhc2lzXG4iCisJICAgICJAaXRlbSBwcm90XG4obG9naW9y IFBST1RfUkVBRCBQUk9UX1dSSVRFKVxuIgorCSAgICAiQGl0ZW0gZmxhZ3Ncbihsb2dpb3Ig TUFQX0FOT05ZTU9VUyBNQVBfUFJJVkFURSlcbiIKKwkgICAgIkBpdGVtIGZkXG4tMVxuIgor CSAgICAiQGl0ZW0gb2Zmc2V0XG4wXG4iCisJICAgICJAZW5kIHRhYmxlIikKKyNkZWZpbmUg RlVOQ19OQU1FIHNfc2NtX21tYXBfc2VhcmNoCit7CisgIHZvaWQgKmNfbWVtLCAqY19hZGRy OworICBzaXplX3QgY19sZW47CisgIGludCBjX3Byb3QsIGNfZmxhZ3MsIGNfZmQ7CisgIHNj bV90X29mZiBjX29mZnNldDsKKyAgU0NNIHBvaW50ZXIsIGJ2ZWM7CisKKyAgaWYgKFNDTV9Q T0lOVEVSX1AgKGFkZHIpKQorICAgIGNfYWRkciA9IFNDTV9QT0lOVEVSX1ZBTFVFIChhZGRy KTsKKyAgZWxzZSBpZiAoc2NtX2lzX2ludGVnZXIgKGFkZHIpKQorICAgIGNfYWRkciA9ICh2 b2lkKikgc2NtX3RvX3VpbnRwdHJfdCAoYWRkcik7CisgIGVsc2UKKyAgICBzY21fbWlzY19l cnJvciAoIm1tYXAiLCAiYmFkIGFkZHIiLCBhZGRyKTsKKworICBjX2xlbiA9IHNjbV90b19z aXplX3QgKGxlbik7CisKKyAgaWYgKFNDTV9VTkJORFAgKHByb3QpKQorICAgIGNfcHJvdCA9 IFBST1RfUkVBRCB8IFBST1RfV1JJVEU7CisgIGVsc2UKKyAgICBjX3Byb3QgPSBzY21fdG9f aW50IChwcm90KTsKKworICBpZiAoU0NNX1VOQk5EUCAoZmxhZ3MpKQorICAgIGNfZmxhZ3Mg PSBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEU7CisgIGVsc2UKKyAgICBjX2ZsYWdzID0g c2NtX3RvX2ludCAoZmxhZ3MpOworCisgIHNjbV9keW53aW5kX2JlZ2luICgwKTsKKyAgCisg IGlmIChTQ01fVU5CTkRQIChmaWxlKSkKKyAgICBjX2ZkID0gLTE7CisgIGVsc2UgaWYgKHNj bV9pc19pbnRlZ2VyIChmaWxlKSkKKyAgICBjX2ZkID0gc2NtX3RvX2ludCAoZmlsZSk7Cisg IGVsc2UKKyAgICB7CisgICAgICAvKiBVc2UgdGhlIGZkIG9mIHRoZSBwb3J0IHVuZGVyIGNs b2JiZXIgcHJvdGVjdGlvbiBmcm9tIGNvbmN1cnJlbmN5LgorICAgICAgICAgQXMgc2NtX2R5 bndpbmRfYWNxdWlyZV9wb3J0IGFzc3VtZXMgdGhhdCBGSUxFIGlzIGEgcG9ydCwgY2hlY2sg CisgICAgICAgICB0aGF0IGZpcnN0LiAqLworICAgICAgU0NNX1ZBTElEQVRFX1BPUlQgKFND TV9BUkc1LCBmaWxlKTsKKyAgICAgIHNjbV9keW53aW5kX2FjcXVpcmVfcG9ydCAoZmlsZSk7 CisgICAgICBjX2ZkID0gc2NtX3RvX2ludCAoc2NtX2ZpbGVubyAoZmlsZSkpOworICAgIH0K KyAgCisgIGlmIChTQ01fVU5CTkRQIChvZmZzZXQpKQorICAgIGNfb2Zmc2V0ID0gMDsKKyAg ZWxzZQorICAgIGNfb2Zmc2V0ID0gc2NtX3RvX29mZl90IChvZmZzZXQpOworCisgIGlmICgo Y19hZGRyID09IE5VTEwpICYmIChjX2ZsYWdzICYgTUFQX0ZJWEVEKSkKKyAgICBzY21fbWlz Y19lcnJvciAoIm1tYXAiLCAiY2Fubm90IGhhdmUgTlVMTCBhZGRyIHcvIE1BUF9GSVhFRCIs IFNDTV9FT0wpOworCisgIFNDTV9TWVNDQUxMIChjX21lbSA9IG1tYXAoY19hZGRyLCBjX2xl biwgY19wcm90LCBjX2ZsYWdzLCBjX2ZkLCBjX29mZnNldCkpOworICBpZiAoY19tZW0gPT0g TUFQX0ZBSUxFRCkKKyAgICBzY21fc3lzZXJyb3IgKCJtbWFwIik7ICAgICAgICAgICAgICAv KiBlcnJubyBzZXQgKi8KKworICAvKiBUaGUgZmQgaXMgZnJlZSB0byBnbyBub3cuICovCisg IHNjbV9keW53aW5kX2VuZCAoKTsKKworICBwb2ludGVyID0gc2NtX2Zyb21fcG9pbnRlciAo KHNpZ25lZCBjaGFyICopIGNfbWVtLCBtbWFwX2ZpbmFsaXplcik7CisgIGJ2ZWMgPSBzY21f cG9pbnRlcl90b19ieXRldmVjdG9yIChwb2ludGVyLCBjX2xlbiwgY19vZmZzZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ01fQVJSQVlfRUxFTUVOVF9UWVBF X1ZVOCk7CisKKyAgcmV0dXJuIGJ2ZWM7Cit9CisjdW5kZWYgRlVOQ19OQU1FCisKK1NDTV9E RUZJTkUgKHNjbV9tbWFwLCAibW1hcCIsIDIsIDQsIDAsCisgICAgICAgICAgICAoU0NNIGFk ZHIsIFNDTSBsZW4sIFNDTSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmaWxlLCBTQ00gb2Zmc2V0 KSwKKwkgICAgIkNyZWF0ZSBhIG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVj dG9yLiAgQHZhcnthZGRyfSwgaWZcbiIKKwkgICAgIm5vbi16ZXJvLCBpcyB0aGUgc3Rhcmlu ZyBhZGRyZXNzOyBvciwgaWYgemVybywgaXMgYXNzaWduZWQgYnkgdGhlXG4iCisJICAgICJz eXN0ZW0uICBAdmFye3Byb3R9LCBpZiBwcm92aWRlZCwgYXNzaWducyBwcm90ZWN0aW9uLlxu IgorICAgICAgICAgICAgIkB2YXJ7ZmlsZX0sIGEgcG9ydCBvciBmZCwgaWYgcHJvdmlkZWQg YXNzb2NpYXRlcyB0aGUgbWVtb3J5XG4iCisgICAgICAgICAgICAicmVnaW9uIHdpdGggYSBm aWxlLCBzdGFydGluZyBhdCBAdmFye29mZnNldH0sIGlmIHByb3ZpZGVkLlxuIgorCSAgICAi VGhlIHJlZ2lvbiByZXR1cm5lZCBieSBtbWFwIHdpbGwgTk9UIGJlIHNlYXJjaGVkIGJ5IHRo ZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3IgZm9yIHBvaW50ZXJzLiBTZWUgYWxzbyBt bWFwL3NlYXJjaC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAgICAgICAgICJmaW5hbGl6ZXIg Zm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2FsbCBtdW5tYXAuXG4iCisJICAg ICJEZWZhdWx0cyBmb3IgYXJndW1lbnRzIGFyZTpcbiIKKwkgICAgIkB0YWJsZSBAYXNpc1xu IgorCSAgICAiQGl0ZW0gcHJvdFxuKGxvZ2lvciBQUk9UX1JFQUQgUFJPVF9XUklURSlcbiIK KwkgICAgIkBpdGVtIGZsYWdzXG4obG9naW9yIE1BUF9BTk9OWU1PVVMgTUFQX1BSSVZBVEUp XG4iCisJICAgICJAaXRlbSBmZFxuLTFcbiIKKwkgICAgIkBpdGVtIG9mZnNldFxuMFxuIgor CSAgICAiQGVuZCB0YWJsZSIpCisjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9tbWFwCit7Cisg IHZvaWQgKmNfbWVtOworICBzaXplX3QgY19sZW47CisgIFNDTSBidmVjOworCisgIGJ2ZWMg PSBzY21fbW1hcF9zZWFyY2goYWRkciwgbGVuLCBwcm90LCBmbGFncywgZmlsZSwgb2Zmc2V0 KTsKKyAgY19tZW0gPSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyhidmVjKTsKKyAgY19sZW4g PSBTQ01fQllURVZFQ1RPUl9MRU5HVEgoYnZlYyk7CisKKyAgLyogVGVsbCBHQyBub3QgdG8g c2NhbiBmb3IgcG9pbnRlcnMuICovCisgIEdDX2V4Y2x1ZGVfc3RhdGljX3Jvb3RzKGNfbWVt LCAoY2hhciopIGNfbWVtICsgY19sZW4pOworCisgIHJldHVybiBidmVjOworfQorI3VuZGVm IEZVTkNfTkFNRQorCisvKiBUaGUgZm9sbG93aW5nIGNvcGllZCBmcm9tIGJ5dGV2ZWN0b3Jz LmMuIEtsdWRnZT8gKi8KKyNkZWZpbmUgU0NNX0JZVEVWRUNUT1JfU0VUX0xFTkdUSChfYnYs IF9sZW4pICAgICAgICAgICAgXAorICBTQ01fU0VUX0NFTExfV09SRF8xICgoX2J2KSwgKHNj bV90X2JpdHMpIChfbGVuKSkKKyNkZWZpbmUgU0NNX0JZVEVWRUNUT1JfU0VUX0NPTlRFTlRT KF9idiwgX2NvbnRlbnRzKQlcCisgIFNDTV9TRVRfQ0VMTF9XT1JEXzIgKChfYnYpLCAoc2Nt X3RfYml0cykgKF9jb250ZW50cykpCisKK1NDTV9ERUZJTkUgKHNjbV9tdW5tYXAsICJtdW5t YXAiLCAxLCAwLCAwLAorICAgICAgICAgICAgKFNDTSBidmVjKSwKKwkgICAgIkdpdmVuIGJ5 dGV2ZWN0b3IgZ2VuZXJhdGVkIGJ5IG1tYXAgb3IgbW1hcC9zZWFyY2gsIHVubWFwIHRoZVxu IgorICAgICAgICAgICAgInRoZSBhc3NvY2lhdGVkIG1lbW9yeS4gIFRoZSBhcmd1bWVudCB3 aWxsIGJlIG1vZGlmaWVkIHRvIFxuIgorICAgICAgICAgICAgInJlZmxlY3QgYSB6ZXJvIGxl bmd0aCBidi4gVGhlIHJldHVybiB2YWx1ZSBpcyB1bnNwZWNpZmllZC5cbiIKKyAgICAgICAg ICAgICJOb3RlIHRoYXQgbXVubWFwIGlzIGNhbGxlZCBieSBmaW5hbGl6ZXIgYXNzb2NpYXRl ZCB3aXRoXG4iCisgICAgICAgICAgICAiYnl0ZXZlY3RvcnMgcmV0dXJuZWQgZnJvbSBtbWFw IGFuZCBtbWFwL3NlYXJjaC5cbiIpCisjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9tdW5tYXAK K3sKKyAgdm9pZCAqYWRkcjsKKyAgc2l6ZV90IGxlbjsKKyAgaW50IHJ2OworCisgIFNDTV9W QUxJREFURV9CWVRFVkVDVE9SICgxLCBidmVjKTsKKworICBhZGRyID0gKHZvaWQgKikgU0NN X0JZVEVWRUNUT1JfQ09OVEVOVFMgKGJ2ZWMpOworICBsZW4gPSBTQ01fQllURVZFQ1RPUl9M RU5HVEggKGJ2ZWMpOworCisgIC8qIEludmFsaWRhdGUgZnVydGhlciB3b3JrIG9uIHRoaXMg Ynl0ZXZlY3Rvci4gKi8KKyAgU0NNX0JZVEVWRUNUT1JfU0VUX0xFTkdUSCAoYnZlYywgMCk7 CisgIFNDTV9CWVRFVkVDVE9SX1NFVF9DT05URU5UUyAoYnZlYywgTlVMTCk7CisKKyAgU0NN X1NZU0NBTEwgKHJ2ID0gbXVubWFwKGFkZHIsIGxlbikpOworICBpZiAocnYgPT0gLTEpCisg ICAgU0NNX1NZU0VSUk9SOwkJCS8qIGVycm5vIHNldCAqLworCisgIHJldHVybiBTQ01fVU5T UEVDSUZJRUQ7Cit9CisjdW5kZWYgRlVOQ19OQU1FCisKKyNpZmRlZiBIQVZFX01TWU5DCitT Q01fREVGSU5FIChzY21fbXN5bmMsICJtc3luYyIsIDIsIDAsIDAsCisgICAgICAgICAgICAo U0NNIGJ2ZWMsIFNDTSBmbGFncyksCisJICAgICJGbHVzaCBjaGFuZ2VzIG1hZGUgdG8gdGhl IGluLWNvcmUgY29weSBvZiBhIGZpbGUgbWFwcGVkIHVzaW5nXG4iCisgICAgICAgICAgICAi bW1hcCBvciBtbWFwL3NlYXJjaC4gIFRoaXMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uIG1vZGlm aWVkIG1lbW9yeVxuIgorICAgICAgICAgICAgImJlZm9yZSBjYWxsaW5nIG11bm1hcC4gIFRo ZSBAdmFye2ZsYWdzfSBhcmd1bWVudCBtdXN0IGJlIGV4YWN0bHlcbiIKKyAgICAgICAgICAg ICJvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiIKKyAgICAgICAgICAgICJAdGFibGUgQGNvZGVc biIKKyAgICAgICAgICAgICJAaXRlbSBNU19BU1lOQ1xuIgorICAgICAgICAgICAgIkluaXRp YXRlIHVwZGF0ZSwgcmV0dXJuIGltbWVkaWF0ZWx5LlxuIgorICAgICAgICAgICAgIkBpdGVt IE1TX1NZTkNcbiIKKyAgICAgICAgICAgICJJbml0aWF0ZSB1cGRhdGUsIGJsb2NrIHVudGls IGNvbXBsZXRlLlxuIgorICAgICAgICAgICAgIkBpdGVtIE1TX0lOVkFMSURBVEVcbiIKKyAg ICAgICAgICAgICJJbnZhbGlkYXRlIG90aGVyIG1hcHBpbmdzIG9mIHRoZSBzYW1lIGZpbGUu XG4iCisgICAgICAgICAgICAiQGVuZCB0YWJsZVxuIgorICAgICAgICAgICAgIlRoZSByZXR1 cm4gdmFsdWUgaXMgdW5zcGVjaWZpZWQuIikKKyNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX21z eW5jCit7CisgIHZvaWQgKmFkZHI7CisgIHNpemVfdCBsZW47CisgIGludCBjX2ZsYWdzLCBy djsKKworICBTQ01fVkFMSURBVEVfQllURVZFQ1RPUiAoMSwgYnZlYyk7CisgIGFkZHIgPSAo dm9pZCAqKSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGxlbiA9IFNDTV9C WVRFVkVDVE9SX0xFTkdUSCAoYnZlYyk7CisKKyAgY19mbGFncyA9IHNjbV90b19pbnQgKGZs YWdzKTsKKworICBTQ01fU1lTQ0FMTCAocnYgPSBtc3luYyhhZGRyLCBsZW4sIGNfZmxhZ3Mp KTsKKyAgaWYgKHJ2ID09IC0xKQorICAgIFNDTV9TWVNFUlJPUjsJCQkvKiBlcnJubyBzZXQg Ki8KKworICByZXR1cm4gU0NNX1VOU1BFQ0lGSUVEOworfQorI3VuZGVmIEZVTkNfTkFNRQor I2VuZGlmIC8qIEhBVkVfTVNZTkMgKi8KKworc3RhdGljIHZvaWQgaW5pdF9tbWFuKHZvaWQp IHsKKyAgc2NtX2FkZF9mZWF0dXJlKCJtbWFuIik7CisKKyNpZmRlZiBQUk9UX05PTkUKKyAg c2NtX2NfZGVmaW5lICgiUFJPVF9OT05FIiwgc2NtX2Zyb21faW50IChQUk9UX05PTkUpKTsK KyNlbmRpZgorI2lmZGVmIFBST1RfUkVBRAorICBzY21fY19kZWZpbmUgKCJQUk9UX1JFQUQi LCBzY21fZnJvbV9pbnQgKFBST1RfUkVBRCkpOworI2VuZGlmCisjaWZkZWYgUFJPVF9XUklU RQorICBzY21fY19kZWZpbmUgKCJQUk9UX1dSSVRFIiwgc2NtX2Zyb21faW50IChQUk9UX1dS SVRFKSk7CisjZW5kaWYKKyNpZmRlZiBQUk9UX0VYRUMKKyAgc2NtX2NfZGVmaW5lICgiUFJP VF9FWEVDIiwgc2NtX2Zyb21faW50IChQUk9UX0VYRUMpKTsKKyNlbmRpZgorCisjaWZkZWYg TUFQX0FOT05ZTU9VUworICBzY21fY19kZWZpbmUgKCJNQVBfQU5PTllNT1VTIiwgc2NtX2Zy b21faW50IChNQVBfQU5PTllNT1VTKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfQU5PTgorICBz Y21fY19kZWZpbmUgKCJNQVBfQU5PTiIsIHNjbV9mcm9tX2ludCAoTUFQX0FOT04pKTsKKyNl bmRpZgorI2lmZGVmIE1BUF9GSUxFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9GSUxFIiwgc2Nt X2Zyb21faW50IChNQVBfRklMRSkpOworI2VuZGlmCisjaWZkZWYgTUFQX0ZJWEVECisgIHNj bV9jX2RlZmluZSAoIk1BUF9GSVhFRCIsIHNjbV9mcm9tX2ludCAoTUFQX0ZJWEVEKSk7Cisj ZW5kaWYKKyNpZmRlZiBNQVBfSEFTU0VNQVBIT1JFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9I QVNTRU1BUEhPUkUiLCBzY21fZnJvbV9pbnQgKE1BUF9IQVNTRU1BUEhPUkUpKTsKKyNlbmRp ZgorI2lmZGVmIE1BUF9QUklWQVRFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9QUklWQVRFIiwg c2NtX2Zyb21faW50IChNQVBfUFJJVkFURSkpOworI2VuZGlmCisjaWZkZWYgTUFQX1NIQVJF RAorICBzY21fY19kZWZpbmUgKCJNQVBfU0hBUkVEIiwgc2NtX2Zyb21faW50IChNQVBfU0hB UkVEKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfTk9DQUNIRQorICBzY21fY19kZWZpbmUgKCJN QVBfTk9DQUNIRSIsIHNjbV9mcm9tX2ludCAoTUFQX05PQ0FDSEUpKTsKKyNlbmRpZgorICBz Y21fY19kZWZpbmUgKCJQQUdFX1NJWkUiLCBzY21fZnJvbV9pbnQgKHN5c2NvbmYgKF9TQ19Q QUdFU0laRSkpKTsKKyNpZmRlZiBNU19BU1lOQworICBzY21fY19kZWZpbmUgKCJNU19BU1lO QyIsIHNjbV9mcm9tX2ludCAoTVNfQVNZTkMpKTsKKyNlbmRpZgorI2lmZGVmIE1TX1NZTkMK KyAgc2NtX2NfZGVmaW5lICgiTVNfU1lOQyIsIHNjbV9mcm9tX2ludCAoTVNfU1lOQykpOwor I2VuZGlmCisjaWZkZWYgTVNfSU5WQUxJREFURQorICBzY21fY19kZWZpbmUgKCJNU19JTlZB TElEQVRFIiwgc2NtX2Zyb21faW50IChNU19JTlZBTElEQVRFKSk7CisjZW5kaWYKK30KKwor I2VuZGlmIC8qIEhBVkVfU1lTX01NQU5fSCAqLworCisMCisKIHZvaWQKIHNjbV9pbml0X2Zp bGVzeXMgKCkKIHsKQEAgLTIzODcsNiArMjcwMCw5IEBAIHNjbV9pbml0X2ZpbGVzeXMgKCkK ICNpZmRlZiBIQVZFX1JFQURMSU5LQVQKICAgc2NtX2FkZF9mZWF0dXJlKCJyZWFkbGluay1w b3J0Iik7CiAjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX01NQU5fSCkKKyAgaW5pdF9t bWFuKCk7CisjZW5kaWYKIAogI2luY2x1ZGUgImZpbGVzeXMueCIKIH0KZGlmZiAtLWdpdCBh L2xpYmd1aWxlL2ZpbGVzeXMuaCBiL2xpYmd1aWxlL2ZpbGVzeXMuaAppbmRleCAxY2U1MGQz MGUuLmZhNDBiNDg0ZiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvZmlsZXN5cy5oCisrKyBiL2xp Ymd1aWxlL2ZpbGVzeXMuaApAQCAtODAsNiArODAsMTAgQEAgU0NNX0FQSSBTQ00gc2NtX2Rp cm5hbWUgKFNDTSBmaWxlbmFtZSk7CiBTQ01fQVBJIFNDTSBzY21fYmFzZW5hbWUgKFNDTSBm aWxlbmFtZSwgU0NNIHN1ZmZpeCk7CiBTQ01fQVBJIFNDTSBzY21fY2Fub25pY2FsaXplX3Bh dGggKFNDTSBwYXRoKTsKIFNDTV9BUEkgU0NNIHNjbV9zZW5kZmlsZSAoU0NNIG91dCwgU0NN IGluLCBTQ00gY291bnQsIFNDTSBvZmZzZXQpOworU0NNX0FQSSBTQ00gc2NtX21tYXBfc2Vh cmNoKFNDTSBhZGRyLCBTQ00gbGVuLCBTQ00gcHJvdCwgU0NNIGZsYWdzLCBTQ00gZmQsIFND TSBvZmZzZXQpOworU0NNX0FQSSBTQ00gc2NtX21tYXAoU0NNIGFkZHIsIFNDTSBsZW4sIFND TSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmZCwgU0NNIG9mZnNldCk7CitTQ01fQVBJIFNDTSBz Y21fbXN5bmMoU0NNIGJ2ZWMsIFNDTSBmbGFncyk7CitTQ01fQVBJIFNDTSBzY21fbXVubWFw KFNDTSBidmVjKTsKIFNDTV9JTlRFUk5BTCBTQ00gc2NtX2lfcmVsYXRpdml6ZV9wYXRoIChT Q00gcGF0aCwgU0NNIGluX3BhdGgpOwogCiBTQ01fSU5URVJOQUwgdm9pZCBzY21faW5pdF9m aWxlc3lzICh2b2lkKTsKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90 ZXN0LXN1aXRlL01ha2VmaWxlLmFtCmluZGV4IDE2ZmEyZTk1Mi4uMzc4NWUyZjg1IDEwMDY0 NAotLS0gYS90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KQEAgLTc3LDYgKzc3LDcgQEAgU0NNX1RFU1RTID0gdGVzdHMvMDAtaW5pdGlhbC1l bnYudGVzdAkJXAogCSAgICB0ZXN0cy9sb2FkLnRlc3QJCQlcCiAJICAgIHRlc3RzL21hdGNo LnRlc3QJCQlcCiAJICAgIHRlc3RzL21hdGNoLnRlc3QudXBzdHJlYW0JCVwKKwkgICAgdGVz dHMvbW1hbi50ZXN0CQkJXAogCSAgICB0ZXN0cy9tb2R1bGVzLnRlc3QJCQlcCiAJICAgIHRl c3RzL211bHRpbGluZ3VhbC5ub3R0ZXN0CQlcCiAJICAgIHRlc3RzL25ldC1kYi50ZXN0CQkJ XApkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS90ZXN0cy9tbWFuLnRlc3QgYi90ZXN0LXN1aXRl L3Rlc3RzL21tYW4udGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjU5MmE4MDBmOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvbW1hbi50 ZXN0CkBAIC0wLDAgKzEsNDggQEAKKzs7OzsgbW1hbi50ZXN0IC0tLSBUZXN0cyBmb3IgbW1h cCBBUEkuICAgIC0qLSBzY2hlbWUgLSotCis7Ozs7Cis7Ozs7IENvcHlyaWdodCAyMDIyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7 IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsKKzs7OzsgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKzs7OzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LW1tYW4pCisgICM6dXNlLW1vZHVsZSAodGVzdC1z dWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBndWlsZS10ZXN0KQorICAj OnVzZS1tb2R1bGUgKHJucnMgYnl0ZXZlY3RvcnMpCisgICM6ZGVjbGFyYXRpdmU/ICNmCisg ICkKKworKGRlZmluZSAobW1hcC10ZXN0LWZpbGUpCisgIChkYXRhLWZpbGUtbmFtZSAiZm9v LnR4dCIpKQorCisoZGVmaW5lIG1tYXAtdGVzdC1zdHJpbmcgImhlbGxvLCB3b3JsZCIpCisK KyhkZWZpbmUgKGdlbi1tbWFwLXRlc3QtZmlsZSkKKyAgKHdpdGgtb3V0cHV0LXRvLWZpbGUg KG1tYXAtdGVzdC1maWxlKQorICAgIChsYW1iZGEgKCkgKGRpc3BsYXkgbW1hcC10ZXN0LXN0 cmluZykpKSkKKworKHdoZW4gKHByb3ZpZGVkPyAnbW1hbikKKworICAoZ2VuLW1tYXAtdGVz dC1maWxlKQorCisgICh3aXRoLXRlc3QtcHJlZml4ICJtbWFuIgorCisgICAgKHBhc3MtaWYg Im1tYW4gMSIKKyAgICAgIChsZXQgKChidiAobW1hcCAwICN4MTAwKSkpCisgICAgICAgIChi eXRldmVjdG9yLXU4LXNldCEgYnYgMCAzNCkKKyAgICAgICAgKD0gKGJ5dGV2ZWN0b3ItdTgt cmVmIGJ2IDApIDM0KSkpCisKKyAgICApKQorCis7OyAtLS0gbGFzdCBsaW5lIC0tLQo= --------------kCCVVbCEOfj8TolyIBF8uY0E-- From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 01 08:31:25 2023 Received: (at 27782) by debbugs.gnu.org; 1 Mar 2023 13:31:26 +0000 Received: from localhost ([127.0.0.1]:53022 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXMYH-0001hp-Kr for submit@debbugs.gnu.org; Wed, 01 Mar 2023 08:31:25 -0500 Received: from mail-pj1-f53.google.com ([209.85.216.53]:44942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pXMYF-0001hb-5x for 27782@debbugs.gnu.org; Wed, 01 Mar 2023 08:31:23 -0500 Received: by mail-pj1-f53.google.com with SMTP id h11-20020a17090a2ecb00b00237c740335cso11960662pjs.3 for <27782@debbugs.gnu.org>; Wed, 01 Mar 2023 05:31:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677677476; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=HAljl05Tlu2TKVYk/TYwA4+AjENcjLoYGkJrPUYLB4o=; b=V2DEAYA+Zh3KtvzCiwJZHtLT637tH+NX+QDtEXM/usp7oFpfe/MfD7DMgeLTlhNBrq DWuA8pnINPonVZKrmgC2M68HO/LrWo7A2sERmZjOQNor1E/sLD0c0vq0a41kCuIa5J7X 7i/+kK9RdE6xRbCpwhjIwEjSwzfHIjLlPPVUUs6r4W7nVGSVkF73GVQEanN9FzdWcl1T H0BGL99+uf84sTXow8WPSWnAyBTQtP1tNZZUrP+qYSPHbEh0bDdirkXPIKKLrsLFpQZT BFQkNCxO/SBnHrzOBpN/ZkNncZyGUtbpVdMo9VfjgE7N/JJhuCjDpBAxJ0OMvTE0hCPI YqXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677677476; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HAljl05Tlu2TKVYk/TYwA4+AjENcjLoYGkJrPUYLB4o=; b=w/yJAEoc6JYHDEPp696qX+hDBmCUob8PT2poaDW07olFIMwKCXjswHFgaDew9CG0w4 B17Q8jlLUFbPCtqskW86VyLaImVtDgLhz3O91SYzEq0FqbWrCZrif5HltTt6tZT98I77 NHTZYCIA+iK9ydhJ4m74XqzRM4tMeoT79M4om71b9GxS3P9JnnlMOKHbtPmCgN/JrZPC nWC9tFG38aHMCXsMt6nPkOi2WCgnPOGhhcHBu/NLM4nV83+FxLCTwiWqgs1i7zlKpbEa 5B9wLL4K3VPbI0W1FiQmlO6rdu4QOvtL4GNpKUUvPjsP/EJgnK9NEB/7YGnQiYYE/tp5 1Y3g== X-Gm-Message-State: AO0yUKVusMMLUq8WgeF71C752EoT3SwDa7RTF9NcmiYitDaoU7tHm6bm XUQtvaujNA10ePU40UYTQQgdHHZYKDc= X-Google-Smtp-Source: AK7set8boy8uPf6EbiofA0KtI/NrYVqMNjYOigWMP7bRTOxwf1B5JI0jykuGj7c6lNUUYzwDKvLhCQ== X-Received: by 2002:a17:902:9a01:b0:19d:c9f:44f3 with SMTP id v1-20020a1709029a0100b0019d0c9f44f3mr5206669plp.21.1677677476497; Wed, 01 Mar 2023 05:31:16 -0800 (PST) Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id p6-20020a1709026b8600b00188c9c11559sm8407568plk.1.2023.03.01.05.31.15 for <27782@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 01 Mar 2023 05:31:15 -0800 (PST) Message-ID: <179cbd2f-a247-0f41-59eb-b73dbf3a617b@gmail.com> Date: Wed, 1 Mar 2023 05:31:14 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: mman patch for v3.0.9 From: Matt Wette To: 27782@debbugs.gnu.org References: <31426cbf-dec2-9764-bbe4-99322d02de66@gmail.com> Content-Language: en-US In-Reply-To: <31426cbf-dec2-9764-bbe4-99322d02de66@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 27782 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) I think this is still not there. I have found additional issues with some suggested updates. Maybe we should have a branch in the guile repo for this.