From: Dmitry V. Levin Date: Wed, 6 Jan 2016 11:59:29 +0000 (+0000) Subject: tests/ipc_sem.c: use libtests X-Git-Tag: v4.12~690 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=efb134041e946e94a80e3b4bb89de5d03eca4f71;p=strace tests/ipc_sem.c: use libtests * tests/ipc_sem.c (cleanup): New function. (main): Use it and perror_msg_and_skip. --- diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c index 59c48b29..afe74d29 100644 --- a/tests/ipc_sem.c +++ b/tests/ipc_sem.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 2015 Dmitry V. Levin * Copyright (c) 2015 Andreas Schwab + * Copyright (c) 2015-2016 Dmitry V. Levin * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,8 +26,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include "tests.h" #include +#include +#include #include union semun { @@ -38,29 +40,40 @@ union semun { (Linux-specific) */ }; +static int id = -1; + +static void +cleanup(void) +{ + semctl(id, 0, IPC_RMID, 0); + printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_RMID, \\[?0\\]?\\) += 0\n", id); + id = -1; +} + int main(void) { - int rc, id; + int rc; union semun un; struct semid_ds ds; struct seminfo info; id = semget(IPC_PRIVATE, 1, 0600); if (id < 0) - return 77; + perror_msg_and_skip("semget"); printf("semget\\(IPC_PRIVATE, 1, 0600\\) += %d\n", id); + atexit(cleanup); un.buf = &ds; if (semctl(id, 0, IPC_STAT, un)) - goto fail; + perror_msg_and_skip("semctl IPC_STAT"); printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_STAT, \\[?%p\\]?\\) += 0\n", id, &ds); un.__buf = &info; int max = semctl(0, 0, SEM_INFO, un); if (max < 0) - goto fail; + perror_msg_and_skip("semctl SEM_INFO"); printf("semctl\\(0, 0, (IPC_64\\|)?SEM_INFO, \\[?%p\\]?\\) += %d\n", &info, max); @@ -72,22 +85,13 @@ main(void) * an index in the kernel's internal array. */ if (-1 != rc || EINVAL != errno) - goto fail; + perror_msg_and_skip("semctl SEM_STAT"); printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\)" - " += -1 EINVAL \\(Invalid argument\\)\n", id, &ds); + " += -1 EINVAL \\(%m\\)\n", id, &ds); } else { printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\)" " += %d\n", id, &ds, id); } - rc = 0; -done: - if (semctl(id, 0, IPC_RMID, 0) < 0) - return 1; - printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_RMID, \\[?0\\]?\\) += 0\n", id); - return rc; - -fail: - rc = 1; - goto done; + return 0; }