From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96562 invoked by alias); 3 Nov 2016 17:09:02 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 96414 invoked by uid 89); 3 Nov 2016 17:09:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=UD:text X-HELO: NAM02-CY1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Thu, 03 Nov 2016 17:09:00 -0000 From: Yury Norov To: Adhemerval Zanella CC: Subject: Re: [PATCH v2 06/16] Add SYSV message queue test Message-ID: <20161103170830.GB31761@yury-N73SV> References: <1478114813-3526-1-git-send-email-adhemerval.zanella@linaro.org> <1478114813-3526-7-git-send-email-adhemerval.zanella@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1478114813-3526-7-git-send-email-adhemerval.zanella@linaro.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: AMSPR04CA0037.eurprd04.prod.outlook.com (10.242.87.155) To SN1PR07MB2254.namprd07.prod.outlook.com (10.164.47.148) X-MS-Office365-Filtering-Correlation-Id: e360263c-283c-4633-9244-08d4040c1187 X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;2:j+8MAsYu1nzB9tSzqzJi4n79gR0mRTTm3Eab6ZJUqPZDT48w5KVMIc74DJmYmvM0+dbyxla1KcyxSMGKhQYYDk+jc0ZU3dLoU4P7Zr9+kPz0fCJTr7WXGoEG1/O3k0P4diALhz+/Qes32ca17TSDvtkdowdmZShZMGYAp9/F+jnoFfLyJF8V08uIQg9AQkrK/7hEuovEIjpjTQcWm0LZpQ==;3:18h8Vg6WFrc19XBKXQMYwASPwV8ciDdc1YsAkfflakcSiNGcHHeZYhHaiefD13OjpVTSB18ypfTilFbOuw8LKQisxGWS1BYkTRECDaycZ1+DsUWon4wl3XdMoemYQIveFUKO4bzFhV2ljkqCd6XZPQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2254; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;25:VMQCdzrMQdqS9yxx2on6KXcYJ0ubwSqetHny0I1WuQpQKng4xKg1LC4mdj/0mSym/EEbhz1Wtv6fZvg4zbN23GrD93EUAFu3Qgc5PNyYfORgrv5jyM6S2Zr00lhSI4tAkMpvpMm/lQTPfbuJd+/Ab9AK1WmOgZLxWfvyIaYy7xCLOfcdY85dOaQWPpHjfdzEzr74WDsGNxgEgcJPhFeBQHRLyqWUAX9biJ1PMIwulYfnAAswVtsK+mlns2+TY3ICYYinvrHg1K2dDe9dTWYCztzPhRXEH418vjFIFOpRAHIVxWRLET0SvEDH/QrisRwopy00heVNTRNIt8AmyxlH1fmDz1jbf3iFoCYUDul3Cltg2xLxs8SQ1A76FpGOkkFYjptQKoWzmVZIgx8y3U8wIe5EmG3XNrGyRvFQ4ZFWnt5IZZUU4L6OSBv/2W7sU8o7svOpY/gM9Dr7Cw79ocCHpgWZp8X2WxDNL+AJRupYoA898cIpaefiQgzg5iBQln2R+0pc/1lJJ0T+JZkV7ZurtzvZ+TF+hq+KBrTASubJKnROBpHVzdgZQ3dfhAjyYM/63Aj84zYrP/V0PIdscm/70/4KzD8Ksqm/npXI8SRuDfac9izht+3WVINVvRtyHHJ7MQ5qXJEE9ISwOp6+2hJLEJSXtWmsjBdYZQP6I/5q47FgITDdRvxOFJPWBRtUaXwNcL7QUvRLqF7Wj3qBUEoIl7B3tUj2c+RPTagpOkfyjvKCXzHU6SDVRPzEQx1ShN2s2ZixlOs65oAh7uh7wz5ELPSDP1gpcdQwO2iybQwimfUTM785mGQ/+20kGckM7ICrQ/rAYMEYQkhnm6b6P3chnDakrEdbELTvzzrwCIYSpCM= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;31:3mdpDWosOFpQ0WwRF3Js6pxe+mqznSE2RbnYJk+IpQMNkpLe9DV4iEgcs516nldiNOiEaPbYVKNYWY0XeUgpLDELzo5rv6ylPr+l3fpv0eHI2/FNxqX+heFKwDl0AepKx246vew5dMTXXmz8hCoS37/aD2fBMUeNDur90ysDFuilg3Rudn2IgjFh5ENmt97sfIYtZUMlPSGYMqCyv5y+Y231jeJUnlbNFVJNcVUlDoFqipv1cpN0UUoSIXM6LTuH;20:D1RUaHvC8gk6f4Qfng8/A7FM+ebZ6mktDAKYQNqq40vEF93+jv2U7PI0exq9VP2FyS7fRjpgCBsLN+iOCj5wm26063DNtJPuJTQQs2BxD0vwxOc4cl5t410Do6DdvQ2ru9sfmInYFJ7Xe3yp4vefe1afDemtG4JfORaoq6H8HO4odA5Hed7NBf0aFK+EcRWu3wgHaQbqjblGorA2QkKJwTxfELi6rHkVLqLYHc1W7H1lhggxvd3hJqb8OsQonnviymoQgmxbUDS2cKiX1dJpmSQIU88I6gqZMqLzDZT0QpYE5NNNkXtM1/1Tp4DJjcYWW8wdtI7hxRzva64VMi5cg8/bLmp2bGfKdPP63u3AT5Hnaf4TJBL1fzcUWKq4PTeRDuOul/uOvScuMVtmMDKlypZu//qN3O1gpLdx326KWalUSDpY4lGNo9Q3SBIlauWEbVS4hP8RiEeV3wsgY+k5/hzYc8Z9w935euHPSpdaYHoSMZ0V65Z9huFEIt66TFaWkKnDaFxfywoSRvGJFKe3zKFI0XAz9Wmeo/iRhokWZPG2B9Tp+TKOsvIn3QvNL7lVOPhBmP6im477FuEsDL6J13syZA1wROTJlZrWTA2TAjU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:SN1PR07MB2254;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2254; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;4:vUFj7tLMFLfUlmYdCoizNg64oN8KBSSZgxX83bXyMTuI2SKLS8cOB41d6FCU90Kb1XImNsSyZ/IKA3mo/ncMzh8b0Oua3CHSy2cOrh9w/oTNVZs1/Vfe4H2DNubGIdwNmoKMhtKgn/771kt54u3EGQ7MQ0h2O9vDFYA5U9cfqmWwHXpqd4t+BnwxESUvtATr0CsTrIdxrr3CgbL+vcTV69GMlg2lSq4v6ikwFSEEFbuI9NpJr8mOK3PfzZxuXrAZ5YpIbpdw5yetp/Mlf1nl+7ZmQnmU3KAKBFWa0IzyfA2lW3h6JA2WAryTpSHKXk0G9mBi+9TkKBUtK0INrfeB5JiNU6OZ4AviZTIB8wfPy/+KzwWIR1eBv+1u5yMd4CW1o3x86dfNsVZ2mGf4RJXXJ0o0/cQMHB70wDmlBuAp4kB/VxTBGuq7TVyIdNIju+l+T6q2w2OimKQz/e+nZNU1779dDyMjFl2bSwXLG+C9X10= X-Forefront-PRVS: 011579F31F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(24454002)(54534003)(199003)(105586002)(3846002)(50986999)(76506005)(6666003)(76176999)(4001350100001)(7846002)(8676002)(9686002)(97756001)(54356999)(97736004)(106356001)(5660300001)(23726003)(7736002)(92566002)(101416001)(42186005)(1076002)(68736007)(10710500007)(6116002)(81156014)(81166006)(15650500001)(2420400007)(305945005)(189998001)(7110500001)(33656002)(19580395003)(2906002)(110136003)(66066001)(77096005)(4326007)(47776003)(15975445007)(2950100002)(6916009)(33716001)(50466002)(83506001)(5009440100003)(586003)(46406003)(18370500001)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2254;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR07MB2254;23:wNMqFO/E7GWksgUhHKxXVn6YBe7ZgP7Mj9Marjpbc?= =?us-ascii?Q?ThhHtoVX4L8p8207XCCvZHNFjxNeaWAYe3GXSbsTYjoYKS820cPBmK1ma9w+?= =?us-ascii?Q?ME4mLRHJmJy1XJZqo32AcdC19WobUeJKJcTRUp5p+RTC1n+guS8mW0gTbvEb?= =?us-ascii?Q?t0p+RxhZMAeZQk3qBzLLDe/dr7YhLwTCULm/PtaK7MCsxpPQvsRZil7Evsfb?= =?us-ascii?Q?trkX6XlexFQeAr83jxq7p7DceZh/zhxWDicns+ULlt5mAa8mA0o06HXd35Ri?= =?us-ascii?Q?rfi+4a5fSAFenkbQ+xNkgA7SdxfzHepnPqa460gZBiZDkbFmMxzbHlbSILSR?= =?us-ascii?Q?skSDozKvZSI2J1P1GOIwORnz3qretZkjfMrJ1Ihp2PZfrebk5Ippq93FigD6?= =?us-ascii?Q?enZo4zkQ6GrORrhxniqWI0ZlyydB7spvyC3Mjkw5LY/VR91kBDi/kXFrtvzk?= =?us-ascii?Q?66WOBDPqDiA/gk5TKfxGpwAK1hc3A9xiwYHITAyByZfsLP2wkY8d0NAgl3Y6?= =?us-ascii?Q?smRMRLh0GqKSO8CQuxo3UEhBH5oVSGQlPIgEaUQGpscRXCaei+IDRKuvh/N9?= =?us-ascii?Q?2dZk0DoSNeaeq5uNHQVVqjhFWVXIr8SWULz+Z51+v0uHSTxomYeYZ14pDS/K?= =?us-ascii?Q?I0kbFmBOW8wl2SaVsskKNETtE3ZcphNb5LBLPTdHd9b/hUuU3cdSCIe04cpf?= =?us-ascii?Q?/4CT8l/aS/1ch9qqS/uQs71DW80SVV5ekYxpfbICAItBr2o0jjeoF0wHB5ox?= =?us-ascii?Q?iBiqShcMMOWimoB/KQCCD1KhswrgbynZF9rY5VjGCauwCClQPdlDQxtHZp7q?= =?us-ascii?Q?w/Fi2y6cBSvnfPR1beK+nCEwF6UzyjgoHvtFQLDYb1fl7PXfSyexwziWhujy?= =?us-ascii?Q?SdTZkNh3q9dHhii882/sXIDF+LD2lF3y8XvG8SHsWOOTVThh5m7wLy53+nuH?= =?us-ascii?Q?42jUuIbTguQfHPptIRG6GH0SviTCt4+bcQO03i4vrfVbKym+NsqUC70Yzm9U?= =?us-ascii?Q?27ooxiRMJ/nJJvhRO58TXSRB3UBK+y78pPon4W9csT+XYATYtV1iUMEaZH1P?= =?us-ascii?Q?TgOKsCL/MsEnQ6d9Q7IB0G21DOKfQn1ySmtDO4OFvIhsT0bL1Yq1qHdktEXE?= =?us-ascii?Q?8/3tb6rcCSHZm+1WVlv9816GkukvbStoSBCst/WtitFUZUms+dOS/7e6xxW6?= =?us-ascii?Q?ui/CNZvDPU4k5YCarY7iIjMkSUc3igBF66TxtY/CLsT1K0A1uc0cuG0OWnYW?= =?us-ascii?Q?6GxI4XiJbaob/V2YaaSa7rCC79xIFy1Op/Q+NhVx01kUeRn2TtqNpLH2jbyJ?= =?us-ascii?Q?CN67xiTX1jD+vQf1/5gduHUMaKbHsoykuTn73Jh9NUzElcdLjvurd2rV1GEh?= =?us-ascii?Q?obEoXsn+PMX2SpiVix58OUNgsJRkcUXVAPzOAQ1pMiXH1gIawnA9b3ZS1qzM?= =?us-ascii?Q?iMGrER+4UY2nBdJm3yUs4McVmHQobM=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;6:caIBRAXgSkm6RVr42oFzvQYtwSuKb9cD+LKAec5Dei6dW0saGsPQxR/mVUlgozKBuZzVADKQ2I4x1Vm5iLq0FHUuKlJMLo8zJ4kyLJq4b+vllUgruoqK64bxuJ0V651KnoJUbfmU68VK2O6ycY8z85CmAiu25n0kxR6rG3Bj+lXgsEGC53BlHloI4DvCBZt7W8ctM6HMYAf0HJn8DP9NlsvbM30NVAMiVl95pswlEHAIfKtW/xdGBUzWQ7V70gw3j4RhmWaZJq/pyyIH9j4B8LWSj5stachIlPTomOIjvrofdkTdwemzmsfn35LthG+d;5:yPEqtakG/sEBzYIqLNgse2jtNocsLNU8pw3doCGHsy0eWROTwG+F75uy4/zX/90K+qPditvyHpGkBVOWF8YHMMHazYmtvS05pOabdw1ZrP49ilaA3n6QRiKuV965GK4kuCP/EnRJd09jezBJ6m1kK3uDTCPYP78IE2QmnqkCkeY=;24:/jnygtvfgb5u6c660DJ+e5KyBN81VbEqxVbJqlk4ZUtpaQdXKQYEIm4EZ31KVFGk4s7UVKzenteHJgAKdZG+m3p7JIn3UBsLdEd6Izhsr7M= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2254;7:d+JGUJQHl6dhLml1Q1ONkkLQsYga6Gyf4doo+64GQuYzNwUHNAN/PcbKynuXKOoOqJmJnxlY1P9T3S9C1RUvmoG/THIhzo4BvAypsGjFTaNW38UfucBmC4dSEeWNUI6AGCjBYav7Hc28p7DGY4bcVAd3wBZ3eS5XpRiprfO0BcfuK7cSYEkU7gqk7S88Z4HPtzRiLp2JGS/njeJj8m1yXnJVFGDAMboO0wWwH6scO8a+xFE3z2d+E7FqnxKIU0wUXBImrhkIaXqpOT+jSHRXWvSiaCehsDwW4navIlVOPWbgcrTpHSJyDAgqzve5m0GD8fF6Y+YP9Us94j/T+xSksf7tBWx634RmnjMEOupoVyg= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2016 17:08:43.4068 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2254 X-SW-Source: 2016-11/txt/msg00105.txt.bz2 On Wed, Nov 02, 2016 at 05:26:43PM -0200, Adhemerval Zanella wrote: > Changes from previous version: > > - Use __ASSUME_SYSVIPC_SYSCALL instead of __NR_syscall to issue the > wired syscall or the ipc one. > > -- > > This patch adds a simple SYSV message queue test to check for correct > argument passing on kernel. The idea is neither to be an extensive > testing nor to check for any specific Linux test. > > * sysvipc/Makefile (tests): Add test-sysvmsg. > * sysvipc/test-sysvmsg.c: New file. > * test-skeleton.c (FAIL_UNSUPPORTED): New define. > --- > ChangeLog | 4 ++ > sysvipc/Makefile | 2 + > sysvipc/test-sysvmsg.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++ > test-skeleton.c | 2 + > 4 files changed, 131 insertions(+) > create mode 100644 sysvipc/test-sysvmsg.c > > diff --git a/sysvipc/Makefile b/sysvipc/Makefile > index 5f3479e..73bb9cf 100644 > --- a/sysvipc/Makefile > +++ b/sysvipc/Makefile > @@ -30,6 +30,8 @@ routines := ftok \ > semop semget semctl semtimedop \ > shmat shmdt shmget shmctl > > +tests := test-sysvmsg > + > include ../Rules > > CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables > diff --git a/sysvipc/test-sysvmsg.c b/sysvipc/test-sysvmsg.c > new file mode 100644 > index 0000000..9393c83 > --- /dev/null > +++ b/sysvipc/test-sysvmsg.c > @@ -0,0 +1,123 @@ > +/* Basic tests for SYSV message queue functions. > + Copyright (C) 2016 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C 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 2.1 of the License, or (at your option) any later version. > + > + The GNU C 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 the GNU C Library; if not, see > + . */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +static void do_prepare (void); > +#define PREPARE(argc, argv) do_prepare () > +static int do_test (void); > +#define TEST_FUNCTION do_test () > + > +/* This defines the `main' function and some more. */ > +#include > + > +#define TEXTSIZE 32 > +struct msgbuf_t > +{ > + long int type; > + char text[TEXTSIZE]; > +}; > + > +#define MSGTYPE 0x01020304 > +#define MSGDATA "0123456789" > + > +/* These are for the temporary file we generate. */ > +static char *name; > +static int msqid; > + > +static void > +remove_msq (void) > +{ > + /* Enforce message queue removal in case o early test failure. Trailing whitespace > + Ignore error since the msgq maybe already being removed. */ > + msgctl (msqid, IPC_RMID, NULL); > +} > + > +static void > +do_prepare (void) > +{ > + int fd = create_temp_file ("tst-sysvmsg.", &name); > + if (fd == -1) > + FAIL_EXIT1 ("cannot create temporary file (errno=%d)", errno); > +} > + > +/* It is not an extensive test, but rather a functional one aimed to check > + correct parameter passing on kernel. */ > + > +#define MSGQ_MODE 0644 > + > +static int > +do_test (void) > +{ > + atexit (remove_msq); > + > + key_t key = ftok (name, 'G'); > + if (key == -1) > + FAIL_EXIT1 ("ftok failed"); > + > + msqid = msgget (key, MSGQ_MODE | IPC_CREAT); > + if (msqid == -1) > + { > + if (errno == ENOSYS) > + FAIL_UNSUPPORTED ("msgget not supported"); > + FAIL_EXIT1 ("msgget failed (errno=%d)", errno); > + } > + > + /* Get message queue kernel information and do some sanitiy checks. */ > + struct msqid_ds msginfo; > + if (msgctl (msqid, IPC_STAT, &msginfo) == -1) > + FAIL_EXIT1 ("msgctl with IPC_STAT failed (errno=%d)", errno); > + > + if (msginfo.msg_perm.__key != key) > + FAIL_EXIT1 ("msgid_ds::msg_perm::key (%d) != %d", > + (int) msginfo.msg_perm.__key, (int) key); > + if (msginfo.msg_perm.mode != MSGQ_MODE) > + FAIL_EXIT1 ("msgid_ds::msg_perm::mode (%o) != %o", > + msginfo.msg_perm.mode, MSGQ_MODE); > + if (msginfo.msg_qnum != 0) > + FAIL_EXIT1 ("msgid_ds::msg_qnum (%lu) != 0", > + (long unsigned) msginfo.msg_qnum); > + > + /* Check if lastest argument (IPC_NOWAIT) is correct handled. */ > + struct msgbuf_t msg2rcv = { 0 }; > + if (msgrcv (msqid, &msg2rcv, TEXTSIZE, MSGTYPE, IPC_NOWAIT) == -1 > + && errno != ENOMSG) > + FAIL_EXIT1 ("msgrcv failed (errno=%d)", errno); > + > + struct msgbuf_t msg2snd = { MSGTYPE, MSGDATA }; > + if (msgsnd (msqid, &msg2snd, TEXTSIZE, 0) == -1) > + FAIL_EXIT1 ("msgsnd failed (errno=%d)", errno); > + > + if (msgrcv (msqid, &msg2rcv, TEXTSIZE, MSGTYPE, 0) == -1) > + FAIL_EXIT1 ("msgrcv failed (errno=%d)", errno); > + > + int ret = 0; > + if (strncmp (msg2snd.text, msg2rcv.text, TEXTSIZE) != 0) > + ret = 1; > + > + if (msgctl (msqid, IPC_RMID, NULL) == -1) > + FAIL_EXIT1 ("msgctl failed"); > + > + return ret; > +} > diff --git a/test-skeleton.c b/test-skeleton.c > index 55841fb..f27e3da 100644 > --- a/test-skeleton.c > +++ b/test-skeleton.c > @@ -87,6 +87,8 @@ static const char *test_dir; > exit (value); \ > }) > > +#define FAIL_UNSUPPORTED(...) FAIL_EXIT(77, __VA_ARGS__) > + > #define FAIL_EXIT1(...) FAIL_EXIT(1, __VA_ARGS__) > > static void > -- > 2.7.4