From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102206 invoked by alias); 3 Nov 2016 17:10:40 -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 102185 invoked by uid 89); 3 Nov 2016 17:10:39 -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=Hx-spam-relays-external:sk:NAM01-B, H*RU:sk:NAM01-B, HX-HELO:sk:NAM01-B, H*r:104.47.34 X-HELO: NAM01-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Thu, 03 Nov 2016 17:10:00 -0000 From: Yury Norov To: Adhemerval Zanella CC: Subject: Re: [PATCH v2 11/16] Add SYSV semaphore test Message-ID: <20161103171011.GC31761@yury-N73SV> References: <1478114813-3526-1-git-send-email-adhemerval.zanella@linaro.org> <1478114813-3526-12-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-12-git-send-email-adhemerval.zanella@linaro.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: VI1PR0901CA0065.eurprd09.prod.outlook.com (10.167.203.161) To DM3PR07MB2251.namprd07.prod.outlook.com (10.164.33.149) X-MS-Office365-Filtering-Correlation-Id: 75531625-ad6e-4ea4-bd27-08d4040c4e23 X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;2:bID6oS3lJEntHAAd5lsk8yGiitwhIfjonAgIXaIPDDarD+ZgMaAngR9dtakaVciiM+rks//2QAQ/fyLQRkU+OR/Ag59jLGGCvskdNMlhv3bLr0TFC8NHsnjTQ6ad6a5xTpe3RdX1tCgky1D9E7h2HFSN4SxYV6xKWS8aFbRgGusytiVm2ntiJZ/1b5zL4vgJt5wolRX3Vn9fQFn5v5dzxg==;3:v9jBEoKe8PRV7I+mknu8iQhLBVdWS82CQxQn2HVbfm3FTTFDYLLFaBSCAiT3Xs/YFu40Ww+NG5bTXmCHCTzqxHs5hqf9fsTuuZICtkZOsxaXg3NOJ3TZTNigC70j7OacktM2tJQ0AHIPPzVMiCum4g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2251; X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;25:jTmqbStwiwW1o/AfqPg192IoLlyXfueeXQ5FlEZYNsHZvnysEs2qouNuym71VVYXukLp25Y0dbLzdqnhA4vspzWyfjHK2w45fXz9qbETSXM5UbW+zcCejhv/Byo+vx7ilavc2yV9lu4loRPoMD1/9kkTQH5pOwL+ouCM78HKQm9vDw7VBso/YD9C3mDvipetXYHzaklJ+Fz+RI4px6gPv+N0dc8Zfy/iMBjMLsHIv0abJ0R54ExOFxuIXormV8Nwln8FGoUFj47KI7JHjftRWBotXZAiwiL5kUCoZq+qJWLvYzaaGX45YHn6k6Elt4jPMDX6WVTlGeu77mramQ3oUs3/XzCkJjKylExQF5JswEwQIO1yWuMYElVHxfJM2QNkcjlUlHuWEuJeKctJqQ1SXW6Lqa+vra2neia8l4jgNtk23O/1IhQHapgVUrVjkvB4qNK7OyJ3u0b2BVsSEfbAqerxruSWaSo7mpZs0CmrQ12OF2vGwrM03/0AUTCscqOnfMF+nJgaBpfGszjmpMR3cfluZ8mhZaOKGR7dNLk40gw5VBvdNuzdqKV6ZG/pM79pydJ/qtws8ATsQeaJlxep1pAHp0NTtFdWw9bdMsTq+YvktZlFsOVyLogtZjNHyUF+LpqboHnaX9AwZDklqwgi/74Ab61MIbiYh+LiliHLmP33O/9kZ+UdIwnPih4ZjqQMh7vgIP7IWyRrDMtMICanwrAXW/msxuuuS+bCde9mEpz8rmz3uJYGjB6zuxApECFn21OdMRqMMtmnrWm3o9TAaWhZrkXcUoRrTykt6t2PpUxG+cKEjy/uRAKr6nBeAJC9zPa0pH9QiMtTn7LBDtkXqSB3YnZEbpa+4F4psguROQ4= X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;31:NAr0quEtfMojcCJ1rxDSrKr/E2pNzvKoxVrAlPzm5+TS4N1wuneF9AA/gawkEmWLT9MwRw/m2uy5hrA0OUUMwuyiSssSgoG1nncwQCps38Pib0KdUvhvAgGOqPhhAFojcnvlTzCbmjk7LfeGAWYCKLRCoaC/B1iFrHv4qXJBry9ECnhjalVmZ5iP6rIJLczyofMrnZEM0r0Hn2JuslNj1WRgcubHezXX30pR6CWbW9oNGu5Zv3UPPZmvfJwcW6bW;20:OhUwzTWAUgT8Sf2g6kGaOfJ2T7U1WGWM3CRWLlX5LOs9UHiAOYhEty2QAjBw34Ald2lLtoZHok+3nin/igMK98BJLwolnA1u1W31nLdsWjl6MZs/W6JW0dEcs6HV8L1cgyEAGPltN9gZY3vLKDsfha6JJ4s5QG6KACtvTbbwK2knJ35ze6nLNdWJPmuVIUzqPzOVPNOuGYIOtsKpnbxuSYbSXYnmM9zlLvdSzXEJXpj1hY6aWSPSXLCkT7z/buauaQX1SoMDzamktrXe5rIyxmhYb8PKvH4GZZkQrMpG3WJO//5xLOuwcBkEdxVof2qY5MCkaNxvGTbnhP6dZqZMMbk6Gbd/0vmiY6Y2b7pvch0uHNnPaLeHtrvc9uTLv3XwtZrQAdbeCcXIjaBlpcsOnOL4AXoVkimDAp+Nj+R5SvfagvT6v7YLGzAmuHvs/nexqn1qDTNILjap5h4VTlFylbwWVlZiHca9VJSiSu6TmIHzcXVqItOpeFdrZLB1Nq1rLEDPT1Q3GdqN+t+FaKdY4z9RhLQvWzeXpBGNkRATyHMWmD3A4jRnA7pun52d21mMl/ZNMQf4lEtz84MX4frGzbqt/DPdmJWh7J+sJp6Quf8= 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)(10201501046)(3002001);SRVR:DM3PR07MB2251;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2251; X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;4:ayTDbm9o8cvhLdkJ9HoW9JCrXtSMnc6fGkUOZHgd46y6AJA6Wuslwl5yGfb7Cj5dIxFysbej+CPNnVDY2YbXgs4SeJTMli8N4ffDINWf0BI9Nfo/Clb8VTugYnsXxLrOl/kUvYcdM8pataVMuLooqRQqVQ4pBYF+R2vcmIEnb9Fel9BCXTgxatzBffwstKcjxHqQPOXjC2uSKpbvAUCkf/MTAaG2h9Z6HJdcxOLlDZUmt1PxbvrMdh8OanvTeyq6ngpUyGyegP58uLP0hNndDwKvEpfesXx+eEjpzQ3fOZpva3f5E/ncD0qwJEkMyKUXpZHbESD0UqIoETBpU8Ucfsxe7jPylYXScAJGvGkfQYfvnJjHbzBTLHutCwVPIyugqw3gz60QbCWVpMtePyyQ1iDsd1KT5k90DI3/4nwBzqPME4l7jmPmi5SIq+uIZ/KAvN4pOpflUfyk4Yl5HP9sIjUYVO5NRbQIuJQKJbK8lCY= X-Forefront-PRVS: 011579F31F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(54534003)(24454002)(66066001)(50466002)(77096005)(46406003)(68736007)(76506005)(8676002)(50986999)(76176999)(54356999)(81156014)(81166006)(15975445007)(42186005)(83506001)(189998001)(97756001)(47776003)(5660300001)(110136003)(6916009)(2950100002)(19580395003)(106356001)(4001350100001)(9686002)(586003)(2906002)(105586002)(97736004)(4326007)(305945005)(92566002)(33656002)(33716001)(5009440100003)(7736002)(23726003)(6666003)(1076002)(101416001)(7846002)(3846002)(6116002)(18370500001)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM3PR07MB2251;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX: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;DM3PR07MB2251;23:g7VM2sUnedKjXlpmClf3+c8F81XEoGcB+uZIGxPUw?= =?us-ascii?Q?yWOjQfwvnkc2Hl+kFsmYnVdc+0KH82JSRmcJ18dp2HTml8gbOTfvScO1B+MR?= =?us-ascii?Q?OxJGBhK84yAg89MCgtOXiKRDnk8I3ZNSTPOpQj+ERz2T5bDJg0EvqgOURJ9o?= =?us-ascii?Q?vZQQPHjEqCYqMSPKk2uSqP7cHZEmuu1fQHlIQ+HF2RugSQmqiooLKBYNhPuL?= =?us-ascii?Q?47RB7zcFNNBcFfIHdb6oNgcK4Gv+3XYltPlS++d0JV7KJ7k2tyx6kIEi4RG/?= =?us-ascii?Q?fKOoEKww4gPkzPoxeu5OjQh6HUHkaGtvXwHqS+7VK0m2U+TvZQHrXFsdAB6j?= =?us-ascii?Q?YVCK2nDaQ2uAQBPGFMzytnFPg42zr/a01yAcg9a+28Prz6DOhdg8Fs7qfqv0?= =?us-ascii?Q?7fVmgR6IzZFYGUwMPA9x4CAU1UUC9SHyExK7FCyov8qC306Pb19Q9I0bCXK9?= =?us-ascii?Q?KV72tC+66v1ULx+RYbyp9CiXqS3Gvyrt+03hMqt8Mp8Mu/hU4cHZOF+v1/ps?= =?us-ascii?Q?K/ZZskINlDarHd+1xe7QNrqnCfxxsp+Ez5mVKMeeeuR2bbznHYeEYZWtX2Vq?= =?us-ascii?Q?/xSHgsSUzxuNuMnWINWGY2A0ej1Fgb7oq7+cQUUr5Ya/chV1bmaf/lQWMUOs?= =?us-ascii?Q?aZotSYTKlrp5OX5iYqWrOSz9HSKOxSXjFZgfzpnAtC1FX70/jNs1VosFCkt1?= =?us-ascii?Q?ALv7ofRn+kG0TlPc6uTy8s0WR74qmrOySZP49JvnBCP+fk+carSjA0CTpW2R?= =?us-ascii?Q?EJpU4Hjs2x9XJVpX9VrNhzbM6fsDO5qctVHPUhVXY71RsVPIK27IQc4ukR37?= =?us-ascii?Q?JGcXZgpnS9ZkK1WrJTtsk8Ik0iZkjpjg7glJqQVXPrGyTEMry1kF0BPX6q9F?= =?us-ascii?Q?hfkccaEo9ROCIpVYvFhSEATnWNj7/ieUxPKpPjlz+4hCVmfQksEn+8sMoz7Z?= =?us-ascii?Q?wsXFTQw0F/hpfTx/R5xPMnrPoCHzuCtGL1ADBtZgepwkB/auBUCdtI3BLROX?= =?us-ascii?Q?LqKJxI0zEnpx8MefQG7zUFmqsed+STxqLtc65G3bNTrZ6C4tl8m5MSuDevNH?= =?us-ascii?Q?oXtjUIeD+T18nEb5RmNWGtdY08MuMK8BFWYYmJZkktzWs7TLUPV6EAsbEZAj?= =?us-ascii?Q?2PvzVZ3b7nCNyVNAvVLsLwl4McrVcYCepGdF4gOv63ajEGnqUyFw8X/NZKeP?= =?us-ascii?Q?zpw3N879FVSw3A8DEWRdfQAnhObaN8+TWve/yp2RqPUpD2Z9wD3voNfz88eV?= =?us-ascii?Q?lG++L0N+v1PxZ0S9aVaAxyNfm8MkekmIbVcEoitvyjU8ALLlTheW4L1a1n0z?= =?us-ascii?Q?R547TUa76NdvJEBzAPcpKawWlQoCsuF83bICVMG98Ux?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;6:d6mIXcOJkDLh/G06jxqs9RsdZTnqbMEoFr++h19u2OgMxinVt3lRPsAAHgTHSaXNDAMseigPhvUf3nsiTTTSEaWdUUJeLmfw5WUFU8XIfeQZ/wXVQkqbeAQKKHCrkuGQczpMn81fVBaFitf9mlGNpyaWceTZI4CmpATJelvPEB9dCyfAvhSEJU9F2l8oxRcrXUzBprtUNA4L6YWRi/7MGr/qsoedgvu82imhd2TSEbkOIfbH8jZ2lgQtuv5F7GjBhxfeTh5EGEfO3YJ2vzWyHdJ/2W0INFSoe+dKtElKZ3NL3hzqrsNr0jSuOrg4/Dz6;5:FalRBEafaqw9UxCdkKaaUpuphNxiaLqXQPND4rkOVUhaDE+qtJkk6vMMWFXhbNKHZoYPFsfAdFZ3kAucti2USnAXP/FfP24/ysBihEIyBJwtMwDQjYtZ3smThSeRVx3pHIYUnbRIRqPxQHXNetgYOobFUydAYA5T89QoJbLSQsQ=;24:+UVG8/30leUFO0CBnW/Yf9tfRz/eaIV2n7jOqikgVkcJpsYFPzEYb/SdlRH8RegThZ9aeq2x9ahW/hEhVKCA7oglNluRyv/HbYXOdQeeq6c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2251;7:Prnq6OOG3gmjO5iHnJ2Qo1XVlSgDBdE9j9fqS2S9nfgsQwkA16MfF+exMHyNd/s4QLsAjgBDCTUNm0VuRoKR/WpZe9509/gMJKWH8f83diUttlHFtSAoSOsdrWN02OGkcPO5lMsiQuHLPp26LSXVG8aQNL+uCdRo4ZgQ2ciCNG7SXTIkRkrLZryoJ26cEAM4lzQs+NCbhNTi5yjtZ8s532DPd7TWunpnpwAaMPGDAhuqDA/TYCm5b5y8BeK5D3hmmZAntNVrjiG4djCM5lh0VNy3zsCQ370WB8ELexrxWjssGuVt5ZFddPVNoUIX3rOKunEbNcmcCJVIgqptUCreeNQckIVMPNvhY3L8my4Qxo0= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2016 17:10:24.4411 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2251 X-SW-Source: 2016-11/txt/msg00106.txt.bz2 On Wed, Nov 02, 2016 at 05:26:48PM -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 semaphore 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-sysvsem. > * sysvipc/test-sysvsem.c: New file. > --- > ChangeLog | 3 ++ > sysvipc/Makefile | 2 +- > sysvipc/test-sysvsem.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 119 insertions(+), 1 deletion(-) > create mode 100644 sysvipc/test-sysvsem.c > > diff --git a/sysvipc/Makefile b/sysvipc/Makefile > index 73bb9cf..32d64dc 100644 > --- a/sysvipc/Makefile > +++ b/sysvipc/Makefile > @@ -30,7 +30,7 @@ routines := ftok \ > semop semget semctl semtimedop \ > shmat shmdt shmget shmctl > > -tests := test-sysvmsg > +tests := test-sysvmsg test-sysvsem > > include ../Rules > > diff --git a/sysvipc/test-sysvsem.c b/sysvipc/test-sysvsem.c > new file mode 100644 > index 0000000..178a424 > --- /dev/null > +++ b/sysvipc/test-sysvsem.c > @@ -0,0 +1,115 @@ > +/* Basic tests for SYSV semaphore 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 > + > +/* These are for the temporary file we generate. */ > +static char *name; > +static int semid; > + > +static void > +remove_sem (void) > +{ > + /* Enforce message queue removal in case o early test failure. Trailing whitespace > + Ignore error since the msgq maybe already being removed. */ > + semctl (semid, 0, IPC_RMID, 0); > +} > + > +static void > +do_prepare (void) > +{ > + int fd = create_temp_file ("tst-sysvsem.", &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 SEM_MODE 0644 > + > +static int > +do_test (void) > +{ > + atexit (remove_sem); > + > + key_t key = ftok (name, 'G'); > + if (key == -1) > + FAIL_EXIT1 ("ftok failed"); > + > + semid = semget(key, 1, IPC_CREAT | IPC_EXCL | SEM_MODE); > + if (semid == -1) > + { > + if (errno == ENOSYS) > + FAIL_UNSUPPORTED ("msgget not supported"); > + FAIL_EXIT1 ("msgget failed (errno=%d)", errno); > + } > + > + /* Get semaphore kernel information and do some sanitiy checks. */ > + struct semid_ds seminfo; > + if (semctl (semid, 0, IPC_STAT, &seminfo) == -1) > + FAIL_EXIT1 ("msgctl with IPC_STAT failed (errno=%d)", errno); > + > + if (seminfo.sem_perm.__key != key) > + FAIL_EXIT1 ("msgid_ds::sem_perm::key (%d) != %d", > + (int) seminfo.sem_perm.__key, (int) key); > + if (seminfo.sem_perm.mode != SEM_MODE) > + FAIL_EXIT1 ("msgid_ds::sem_perm::mode (%o) != %o", > + seminfo.sem_perm.mode, SEM_MODE); > + if (seminfo.sem_nsems != 1) > + FAIL_EXIT1 ("msgid_ds::sem_nsems (%lu) != 1", > + (long unsigned) seminfo.sem_nsems); > + > + /* Some lock/unlock basic tests. */ > + struct sembuf sb1 = { 0, 1, 0 }; > + if (semop (semid, &sb1, 1) == -1) > + FAIL_EXIT1 ("semop failed (errno=%i)", errno); > + > + struct sembuf sb2 = { 0, -1, 0 }; > + if (semop (semid, &sb2, 1) == -1) > + FAIL_EXIT1 ("semop failed (errno=%i)", errno); > + > +#ifdef _GNU_SOURCE > + /* Set a time for half a second. The semaphore operation should timeout > + with EAGAIN. */ > + struct timespec ts = { 0 /* sec */, 500000000 /* nsec */ }; > + if (semtimedop (semid, &sb2, 1, &ts) != -1 || errno != EAGAIN) > + FAIL_EXIT1 ("semtimedop succeed or returned errno != EAGAIN (errno=%i)", > + errno); > +#endif > + > + /* Finally free up the semnaphore resource. */ > + if (semctl (semid, 0, IPC_RMID, 0) == -1) > + FAIL_EXIT1 ("semctl failed (errno=%d)", errno); > + > + return 0; > +} > -- > 2.7.4