From nobody Tue Feb 10 09:27:48 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166439761019418.417927498072572; Wed, 28 Sep 2022 13:40:10 -0700 (PDT) Received: from localhost ([::1]:35408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddqf-0007O8-A2 for importer@patchew.org; Wed, 28 Sep 2022 16:40:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33356) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddew-00008D-99 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:58 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:53401) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeu-0006Tm-0B for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:57 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MWiUg-1okHUc0XrU-00X5bk; Wed, 28 Sep 2022 22:27:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 17/37] tests/tcg/linux-test: Add linux-madvise test Date: Wed, 28 Sep 2022 22:27:17 +0200 Message-Id: <20220928202737.793171-18-laurent@vivier.eu> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220928202737.793171-1-laurent@vivier.eu> References: <20220928202737.793171-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:sLhE1jHBWhwzx9HMMIERxBXqUJ8/+Kl+2YQ75OD34bil9poM/Yd XMrzvgj8m5fGIUjZeivOc34eMlPl7XTKWkX0SwYzDiwOe4JY98dfxOXcHhQvdpPWsUHA/0C XqM6YMU5Gr0EB6Yns7RQwGoE4eZAxd+ALsSGG+ve/5wt/40hv9p5lWDRxJP4XQofRQfCLZC pKqIa0wzWMRBke0ZpvV5g== X-UI-Out-Filterresults: notjunk:1;V03:K0:jsivJO/CqeA=:NlN91AY+Q7qgGmQUxLfrAo H/R3nVrBziw0w/r8FOb09e2CtNhPSTZiChgxMKGKEl4XXSz8mmd4mREJ+625XK16CPl6SMEOz ZetM2QH0V6QvtvuxFUJjYIiLIwJ4IryWSBhOPJy9xURlNolAh/SufQYC/SutR9IpuXCLXhrrr U1VNUk2QQ0WIaaDQkxL4u3f/gX6qdfiVvNk830Sc+MnbJRvpoR6x2uNpMXWfh1ZJ/08A2f8H2 aOBMosgWwn1WVFQ4Nplp1SCN1/WwFhj7AHc6Q0NdprJkTEAQHYGt5HEPLY82/lPnsbzEIPvkr P15wWD6rPoR0Qiv0KIxumsUaolv3QswVdsVNfhv0c842Lhn8zHrGc5ELWT7ZJ31GqsOcC4fLE mRj5PJd7uaUkiaZkKKgsc4AvssQLwvUua5S25Uy1Nre6E5Kn7A5e+T5ZZYONchJZUkqvttbGq /kuEdWwZTVx8cLfRn8lmUfKe6Z0NdlfImfEaPDpmnpDfXDk/MZu8iBQthZTvpBuIpejZF1V1e Ue4iRD8m98KTyfGs/6b4BGhK92zW2k3NdVztBs/HP35JpWekt+xl09nVdTsvBTTDZk9Nb2670 4iIVcVQjbwtXcPRecyXOiPiRCP/Ij6sbd/yMUWmndUiKGxO+RJRWeCHQpdtjZ6U6+eL7a8vHQ gi9FP/U8hdDjB6Jguft6rFaDeEDxbtW0JjI8zLOD3sC4S4DIJU9iIHOXbYIXKgeiBqaBpbHUj d2fQwCCgEv/dfnAKzfqS6b1vyvplwF/tElSwUoM11SYtkqQa3lBxUm7swJIPytyW1f3l1ri8h t2DUDKv Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1664397611940100001 Content-Type: text/plain; charset="utf-8" From: Ilya Leoshkevich Add a test that checks madvise(MADV_DONTNEED) behavior with anonymous and file mappings in order to prevent regressions. Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220906000839.1672934-6-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- tests/tcg/multiarch/linux/linux-madvise.c | 70 +++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tests/tcg/multiarch/linux/linux-madvise.c diff --git a/tests/tcg/multiarch/linux/linux-madvise.c b/tests/tcg/multiarc= h/linux/linux-madvise.c new file mode 100644 index 000000000000..29d0997e687c --- /dev/null +++ b/tests/tcg/multiarch/linux/linux-madvise.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include + +static void test_anonymous(void) +{ + int pagesize =3D getpagesize(); + char *page; + int ret; + + page =3D mmap(NULL, pagesize, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, = -1, 0); + assert(page !=3D MAP_FAILED); + + /* Check that mprotect() does not interfere with MADV_DONTNEED. */ + ret =3D mprotect(page, pagesize, PROT_READ | PROT_WRITE); + assert(ret =3D=3D 0); + + /* Check that MADV_DONTNEED clears the page. */ + *page =3D 42; + ret =3D madvise(page, pagesize, MADV_DONTNEED); + assert(ret =3D=3D 0); + assert(*page =3D=3D 0); + + ret =3D munmap(page, pagesize); + assert(ret =3D=3D 0); +} + +static void test_file(void) +{ + char tempname[] =3D "/tmp/.cmadviseXXXXXX"; + int pagesize =3D getpagesize(); + ssize_t written; + char c =3D 42; + char *page; + int ret; + int fd; + + fd =3D mkstemp(tempname); + assert(fd !=3D -1); + ret =3D unlink(tempname); + assert(ret =3D=3D 0); + written =3D write(fd, &c, sizeof(c)); + assert(written =3D=3D sizeof(c)); + page =3D mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE, fd, 0); + assert(page !=3D MAP_FAILED); + + /* Check that mprotect() does not interfere with MADV_DONTNEED. */ + ret =3D mprotect(page, pagesize, PROT_READ | PROT_WRITE); + assert(ret =3D=3D 0); + + /* Check that MADV_DONTNEED resets the page. */ + *page =3D 0; + ret =3D madvise(page, pagesize, MADV_DONTNEED); + assert(ret =3D=3D 0); + assert(*page =3D=3D c); + + ret =3D munmap(page, pagesize); + assert(ret =3D=3D 0); + ret =3D close(fd); + assert(ret =3D=3D 0); +} + +int main(void) +{ + test_anonymous(); + test_file(); + + return EXIT_SUCCESS; +} --=20 2.37.3