From adc47efdd2e3731f2a542ec61b724556e11c55ec Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 30 Jun 2017 20:31:50 +0200 Subject: [PATCH] zdtm/static/sem: Use "union semun" instead of int Use "union semun" for semctl() to make testcase also work on s390x. Signed-off-by: Alice Frosi Signed-off-by: Andrei Vagin --- test/zdtm/static/sem.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/zdtm/static/sem.c b/test/zdtm/static/sem.c index 6e459a883..1db8f0082 100644 --- a/test/zdtm/static/sem.c +++ b/test/zdtm/static/sem.c @@ -110,7 +110,13 @@ int main(int argc, char **argv) { int id, key; int i; - int val[NSEMS]; + /* See man semctl */ + union semun { + int val; + struct semid_ds *buf; + unsigned short *array; + struct seminfo *__buf; + } val[NSEMS]; int ret, fail_count = 0; test_init(argc, argv); @@ -129,7 +135,7 @@ int main(int argc, char **argv) } for (i = 0; i < NSEMS; i++) { - val[i] = lrand48() & 0x7; + val[i].val = lrand48() & 0x7; if (semctl(id, i, SETVAL, val[i]) == -1) { fail_count++; @@ -142,7 +148,7 @@ int main(int argc, char **argv) test_waitsig(); for (i = 0; i < NSEMS; i++) { - ret = check_sem_by_id(id, i, val[i]); + ret = check_sem_by_id(id, i, val[i].val); if (ret < 0) { fail_count++; fail("Check sem %d by id failed", i); @@ -155,14 +161,14 @@ int main(int argc, char **argv) goto out_destroy; } - val[i] = semctl(id, 0, GETVAL); - if (val[i] < 0) { + val[i].val = semctl(id, 0, GETVAL); + if (val[i].val < 0) { fail("Failed to get sem %d value", i); fail_count++; goto out_destroy; } - if (val[i] != 0) { - fail("Non-zero sem %d value: %d", i, val[i]); + if (val[i].val != 0) { + fail("Non-zero sem %d value: %d", i, val[i].val); fail_count++; } }