From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 113796 invoked by alias); 3 Nov 2016 17:14:09 -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 113736 invoked by uid 89); 3 Nov 2016 17:14:08 -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-HELO:sk:NAM03-D, Hx-spam-relays-external:sk:mail-dm, H*RU:sk:mail-dm, Hx-spam-relays-external:sk:NAM03-D X-HELO: NAM03-DM3-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Thu, 03 Nov 2016 17:14:00 -0000 From: Yury Norov To: Adhemerval Zanella CC: Subject: Re: [PATCH v2 16/16] Add SYSV shared memory test Message-ID: <20161103171338.GD31761@yury-N73SV> References: <1478114813-3526-1-git-send-email-adhemerval.zanella@linaro.org> <1478114813-3526-17-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-17-git-send-email-adhemerval.zanella@linaro.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: VI1PR0901CA0049.eurprd09.prod.outlook.com (10.167.203.145) To CY1PR07MB2246.namprd07.prod.outlook.com (10.164.112.148) X-MS-Office365-Filtering-Correlation-Id: 1a4acb19-2d5a-4b41-ff10-08d4040cca10 X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;2:3cIn6a+RNB4bD69+A7Y4+YPGUWfb5rjEkkooVBY+a81Ww8gfAZ9vmogmJU9Fc3yR6/Xum6ftDYt9MTbuGIZHdLgeQ+FRmYdF7UTjmWCdf3UXbvqLpk9dNEil+iMOjyAmqFXJMgo7+TOQM0trOmoa+lXH2Zqg+7jysTghUMsiXzvVb8OBWmVcTwznY0V1S/NgEbPD55UuUYsi7BTEfj7atA==;3:zRduo8BXcVQ4a/5/hb6mzwyBMAIyw2UFfVq20vaR7TrXhY988YiHAZVtcRkd64a5BbUUq+cj1t1lr9+VcDpqjP10sdAPHoCgpi7+xwJ3kNpUbYZW/qQ+dgC09yZBY2zd1eH01d5xHCL38Rti94vKRA==;25:hX+zDXgO6lEJDCEL4AEBbjY7k+mpClVS4LSkbNmg5by5/B+C1XmjqqruUtPwPAXu3psyE/zBj8j0Ize9Z6nTzU5O18vEJ0YxkKaphqYQWyhAgwBj6qVc7fdUiqwp/C0+y/hDHVRpVbnWu7WsNDVIT5H01R0Z8MvWPGg0l6CcjgaTyZw46ySGXRRF3HG0OME5KKOwNbM7qaRdAGAxtxNJIvLlPRMx7Ptq+asAPEzqM9LFoPT9c+decrWXXS3EsStVyk0JakckipDp7jKJcLT2Ucc1t0+Pg1g8B33Wlzs/5jH9Chf69i8gPJ8IppdMe0TsPer+Lb2xw+8toCmmOWr02DEd65EsWFFJTXwOlNjWI/568w5VRxNVnlDDsDJS0H/e6bigSxe2Y/62K4Oea+980ceayyjM2LZyD1Zyu7A/UNa70HODw1t6+KA8UB8Y4gZ+ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;31:nDfzBnQmYOfBzW7t7FxLYR4QBhE+tK3ywRe5bNauS/zGLKxv+lymTclFVkFCuhQO5qgDUtMuKBs1wCkIlzSifaZXxgUOiITnk24B5/ezfsrfhQ5sCM6H/mX0TIShAkgOxHiK76YLvDDDJ8GP8Te3pZ9thcmqZ4/nzV/KxkF3EOg7ue79Gdt2Zyt5pe9GYTXYPQkoZkqwjgV1gGHvSbALo1QqQr+i8aJGr3CNKnInkZ4pKvWjQCo3wg3EMKl+aV4f;20:UD3stIBefKx3uRypwyYiAE3yeDKWsalERGNc/i4VRE+J89Vml5vaK54sHn5299cMFEA9RyOMgG75+yplEZ64l+tukEv9JWnu2tjAwii5AodHTAbuL7dMEZlwNiNE/eXYQ1HTJRW+Y0yoQg6CT43pPknxcvFm+x65/bt6oeMFiR6R/1XeLcZoGUdGc+1In3Ep+Bfpo5fIWd3LA3AIkgyTi0mJp6vFwlzSlKXChjz8gWjUwDbROanfWDsuYmeQl9ypbAWc3cB3TTkbBanbUsOhgEB3hc7UR6VnS7QAgVLxOb5rBoEbkssJw+uwzHFV3i+Pa5DIQ1ApBkLI+QMrI155uJjVKMItodroRULCeFobyMrmlQJq86KzFB2htRhArIVeAwP1A2+JMRAzXYQ1YH+U7zljrc62VckIh1cNzWqS062Ny3iJs2qgC+crHxfSh+3npgPEDxPRG6S1dZuhLMM6jQYuBnHb6puu7N2S+bNSv3/sQAHc9KSglln9CSXdkPsNwajUKN3bv30eBqgS1mIGFlP+y7nB6wzLM9MxJyWM1cJuKj+8QGyie/DAF9nNwjjMFEv5b7xct6f3myYxcE0PIiEKDuo/plcEsxus5ruPs1M= 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)(5005006)(8121501046)(10201501046)(3002001);SRVR:CY1PR07MB2246;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;4:OjqUaddf89Upvt9N+LywChEZZluaX1aJKvJ2rRZs/xzXspjLuqgTJQZW168KhR+b53YmqIWsTMe2f62ndXaojO3Ob2tFbnWt5e5kYxFLUiCfEMSxUeUSLSF/U03d2Gm4QV/A8CliFy0LW18XVGLtD7LTOAKjbjohw3bjHgGDEoZiQmM4pvb3ZUzN3RstgIQ4aDIeWG6SbA/ngIDA++7ohAFbuSq1nwViVonBL1l9TWV/sC/KF5Af/lRc+jgnK86upOUu2ylcNSZN/ltlpsT98JCuPvEMoTRAz2AClUAF3pIFVpm5O2o8fSoWz+sAkhfJg0Pl5vUnGfqRaPuRazUL1j6JzbPmzNinSh++PbqDwrWfA0aTZVcbq7Bj1GwVrMWxgEmp+e+Dkqob3J/hRdrrk2fEJQWEwNoNcoIc7hUwd2MEfEG5zTxz7mlXwUxvlz92JYk5wnBa42udjin4bO5vxEwi0N7AFlK+WHpXAg3JnJI= X-Forefront-PRVS: 011579F31F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(24454002)(54534003)(199003)(189002)(15975445007)(46406003)(4001350100001)(5890100001)(106356001)(5009440100003)(1076002)(23726003)(3846002)(105586002)(6116002)(83506001)(189998001)(47776003)(50986999)(54356999)(76176999)(66066001)(68736007)(77096005)(33716001)(9686002)(97736004)(110136003)(92566002)(7736002)(305945005)(2906002)(2950100002)(5660300001)(101416001)(6916009)(586003)(7846002)(19580395003)(81166006)(42186005)(4326007)(33656002)(8676002)(76506005)(97756001)(6666003)(81156014)(50466002)(18370500001)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2246;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;CY1PR07MB2246;23:XMDE6ZamAbOE66nxYaJ/rj4WtSqYU+kWEaPVoq4PQ?= =?us-ascii?Q?MluwGzdkU8e6FTydYOXBtzjCR1/70RGP7iy0J8zha7ZiK15NagfwXTgqicK2?= =?us-ascii?Q?nn4lbvIu3OVHHiOzDGx97SREIAb4/mDfwco7pkCz7t+j1iNMOQ209qR/Fqys?= =?us-ascii?Q?+dh5r5dTNTDlSpITYkxbc2kVoyJYkzwOug640mwm4KpbJcRH3otLen27E+wK?= =?us-ascii?Q?Z1UFjKpyv4NU2elvSThxFyWV8RPqssZqWWwmfJ0G+wlPIWfqFIAm9m3gUDKO?= =?us-ascii?Q?szhHaIlS2pJJsKtViZXnmw2iaDNFxWcbXMXD8+BDTiHT8OgaC3t92d0gMstr?= =?us-ascii?Q?79sF4FExze1jDJWPtD9FbHB7cHmp2gyRRcjLpE64FamlJ4E531I0UUmvi92Z?= =?us-ascii?Q?xDO4ByZ4hInSZHqHWe6F3oak8954PYRJ/bzbmDwlLGlxmaWoW/gwRB2DnExX?= =?us-ascii?Q?XCHjKKkINXwxSgCfxAG2RnKTR/aeGL7NPfJiT4dZ9FFhLoZJ59vLcq1gDtDA?= =?us-ascii?Q?H7Do94Gbo5tHrHR2GPTG38fJbli7Tq2vVU9s3kjn1Y/EAZFW4o6evoW1FxdC?= =?us-ascii?Q?fdH00jEzZmz54Zaw3/arJyYJol9fpQVuuz6Y+VBIuqc0WhC2d/ZcSULFdhvF?= =?us-ascii?Q?E8Xpkfkw4RcQ2rf4EzVaMnZCq7BPn5VEdjq/w8NcgImTeBp5F9ldXsIYwSzN?= =?us-ascii?Q?SIi7sN7FSbS2qEck6HcthM165NL/mmxFMeEuk8daYX+lP5dtv6nRD5Mewz4u?= =?us-ascii?Q?Beb5bZjr8X8tovyUg5oGpSrHLcycQIq2SR3clTVai+u2vgWknS1lBxJ3wApw?= =?us-ascii?Q?tUv1+RK1cusYAYqrRHvMPfXzGalfg1Yburqz53FO7+R4RJiqLKWliXMSx32n?= =?us-ascii?Q?wlGjaOupMYptBp0WBNeP26av000trqcedzblLLgu+n9uR3Uka6cotAsXIL8l?= =?us-ascii?Q?qHBm4f+GQ65JdmGoEXe5w/hneB/UumuwlaYyXOo4Vv62FoEu6uF4U84DICRS?= =?us-ascii?Q?/PV3MJ5YQtsfyf5g+ErRfru4iNa3N3l5Z7i1C6ieep+ojK6WjOwMoflcp5H7?= =?us-ascii?Q?mQfdBEGoJhdTl8LeDIqmK6ompE0pV89uEHK4kVS+FDMKbjHVjsbwiIDXmT80?= =?us-ascii?Q?Qni8DFzWEFenryf4qJmeAsmDWb4IwKhm+XohGRWwQx8jzLikhxTVvR73f1Lx?= =?us-ascii?Q?wUIjaPDcivY6m2r7qzoIjtWl2zQRttDwaSyP3yZzL4oTG05hUEdqCOokq6rj?= =?us-ascii?Q?P5GLdEiDXIDrnRfve0B/v7jgl032KNz2RtLne+w8K3nY0S69ZyKFKnFMVHpI?= =?us-ascii?Q?RVOobRty5++D5sA9jNEKwWs0IoJGYIE4e4YrTmr+au/UhzHjGnuEEd8Reyin?= =?us-ascii?Q?e+L9g=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;6:BypNOhZ7c/FPjMFneOYpK0OrqP6Hjqc4NBeFPrLFAz7hc/F/LGaIDkk+7NyN4i3Dl+tpKQoDuTsaquzArjGkwZpV3Edefdg6tZSy+Lrd8cT6RK8kBLrG876TE026zFgguzWa316VzsrzfErOuVvZ1pd/3J+XYikpNdgR76eALlRoGp6amp3EMzyEsBRNUacZ0XjefmI0qv+SY9lsmU0ypbRn9c4c3sEoskWyIcLVADhwxivm80EnS+5pX5my5fXqn7w9t2B2/sNXD6d+SeJ8EQIS1Zo6I47KMZZDiShf0sQktj5GTYfMSjskiDHJXryo;5:w22GZ+w0hPd2afifKMfuIRymk8yqhoqqinEFqoBKVLJJ9O+IYOt5E2rEAUwDaqHyCw/tUp22BXvbiKSubDbfkNaR9MpUPsqw+5PX9JYwKFTv9PR5KaOD3lnQ5XjQ48MxbBYLoyeqw87uK7IoiPVK1ve+9hFim5GCDD4/z+ISMto=;24:aU7SlAG52qLfy6PJ45rZBdKxnHjZ7P2+cJHo1ry1tKi03lA8GuhphNg1G13uqPnENTm0/SKrJua9x0Xu56ieEq/FLojRaEwIf8e0jGswJTk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;7:EzT5WmmXsLYqAaNIdB7h8C9P2Pl5g7r2mguVXqnXsBRU+Y2noiH9m+fYEvXIqSCAIAeKaQZ4XoL9LI9inMF+haFe+tZ+RhRU/yH59iXYWv7UZAgW/VqFx6KcgWVdPY4mCRvk0ab5llV5WAdJUQ3V22Rlb1c5VOCKHI80fHDof890hsF0OUHmZx8WV+OKltlMgWthhFU4in6HS1U3UF+d3jIg69p5X4ZpEJx9IZSMTKc2HX7Xo7crBwPeRqlobrnONLp+02yOwtCjOBLoMnlI02086Xc3qWsBzr5dYbUXLAtCH/g8AI5YQSmIriwrRdg2j6JxEiaolRpjwfTyHckBiSqWZlS8Yn/P571CCH8U1EY= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2016 17:13:53.0543 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2246 X-SW-Source: 2016-11/txt/msg00107.txt.bz2 On Wed, Nov 02, 2016 at 05:26:53PM -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 shared memory 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-sysvshm. > * sysvipc/test-sysvshm.c: New file. > --- > ChangeLog | 3 ++ > sysvipc/Makefile | 2 +- > sysvipc/test-sysvshm.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 134 insertions(+), 1 deletion(-) > create mode 100644 sysvipc/test-sysvshm.c > > diff --git a/sysvipc/Makefile b/sysvipc/Makefile > index 32d64dc..daede74 100644 > --- a/sysvipc/Makefile > +++ b/sysvipc/Makefile > @@ -30,7 +30,7 @@ routines := ftok \ > semop semget semctl semtimedop \ > shmat shmdt shmget shmctl > > -tests := test-sysvmsg test-sysvsem > +tests := test-sysvmsg test-sysvsem test-sysvshm > > include ../Rules > > diff --git a/sysvipc/test-sysvshm.c b/sysvipc/test-sysvshm.c > new file mode 100644 > index 0000000..4f3f22e > --- /dev/null > +++ b/sysvipc/test-sysvshm.c > @@ -0,0 +1,130 @@ > +/* Basic tests for SYSV shared memory 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 shmid; > + > +static void > +remove_shm (void) > +{ > + /* Enforce message queue removal in case o early test failure. Trailing whitespace > + Ignore error since the msgq maybe already being removed. */ > + shmctl (shmid, IPC_RMID, 0); > +} > + > +static void > +do_prepare (void) > +{ > + int fd = create_temp_file ("tst-sysvshm.", &name); > + if (fd == -1) > + FAIL_EXIT1 ("cannot create temporary file (errno=%d)", errno); > +} > + > +#define CHECK_EQ(v, k) \ > + if ((v) != (k)) \ > + FAIL_EXIT1("%d != %d", v, k) > + > +/* It is not an extensive test, but rather a functional one aimed to check > + correct parameter passing on kernel. */ > + > +#define SHM_MODE 0666 > + > +static int > +do_test (void) > +{ > + atexit (remove_shm); > + > + key_t key = ftok (name, 'G'); > + if (key == -1) > + FAIL_EXIT1 ("ftok failed"); > + > + long int pgsz = sysconf (_SC_PAGESIZE); > + if (pgsz == -1) > + FAIL_EXIT1 ("sysconf (_SC_PAGESIZE) failed (errno = %d)", errno); > + > + shmid = shmget(key, pgsz, IPC_CREAT | IPC_EXCL | SHM_MODE); > + if (shmid == -1) > + { > + if (errno == ENOSYS) > + FAIL_UNSUPPORTED ("msgget not supported"); > + FAIL_EXIT1 ("msgget failed (errno=%d)", errno); > + } > + > + /* Get shared memory kernel information and do some sanitiy checks. */ > + struct shmid_ds shminfo; > + if (shmctl (shmid, IPC_STAT, &shminfo) == -1) > + FAIL_EXIT1 ("shmctl with IPC_STAT failed (errno=%d)", errno); > + > + if (shminfo.shm_perm.__key != key) > + FAIL_EXIT1 ("msgid_ds::msg_perm::key (%d) != %d", > + (int) shminfo.shm_perm.__key, (int) key); > + if (shminfo.shm_perm.mode != SHM_MODE) > + FAIL_EXIT1 ("msgid_ds::shm_perm::mode (%o) != %o", > + shminfo.shm_perm.mode, SHM_MODE); > + if (shminfo.shm_segsz != pgsz) > + FAIL_EXIT1 ("msgid_ds::shm_segsz (%lu) != %lu", > + (long unsigned) shminfo.shm_segsz, pgsz); > + > + /* Attach on shared memory and realize some operations. */ > + int *shmem = shmat (shmid, NULL, 0); > + if (shmem == (void*) -1) > + FAIL_EXIT1 ("shmem failed (errno=%d)", errno); > + > + shmem[0] = 0x55555555; > + shmem[32] = 0x44444444; > + shmem[64] = 0x33333333; > + shmem[128] = 0x22222222; > + And here > + if (shmdt (shmem) == -1) > + FAIL_EXIT1 ("shmem failed (errno=%d)", errno); > + > + shmem = shmat (shmid, NULL, SHM_RDONLY); > + if (shmem == (void*) -1) > + FAIL_EXIT1 ("shmem failed (errno=%d)", errno); > + > + CHECK_EQ (shmem[0], 0x55555555); > + CHECK_EQ (shmem[32], 0x44444444); > + CHECK_EQ (shmem[64], 0x33333333); > + CHECK_EQ (shmem[128], 0x22222222); > + And here > + if (shmdt (shmem) == -1) > + FAIL_EXIT1 ("shmem failed (errno=%d)", errno); > + > + /* Finally free up the semnaphore resource. */ > + if (shmctl (shmid, IPC_RMID, 0) == -1) > + FAIL_EXIT1 ("semctl failed (errno=%d)", errno); > + > + return 0; > +} > -- > 2.7.4