From 868c81eefa72b31023eeac32788eaa439013c0f8 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 7 Feb 2000 14:27:04 +0000 Subject: Added check for SGI IRIX brokenness with semaphores when using gcc. Code from Don Badrak Jeremy. (This used to be commit 773d6e504b1ac97f0d8136002ace2c0c0771a163) --- source3/tests/sgi_sysv_hack.c | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 source3/tests/sgi_sysv_hack.c (limited to 'source3/tests') diff --git a/source3/tests/sgi_sysv_hack.c b/source3/tests/sgi_sysv_hack.c new file mode 100644 index 0000000000..0fb16f11f8 --- /dev/null +++ b/source3/tests/sgi_sysv_hack.c @@ -0,0 +1,46 @@ +/* this tests if we need to define SGI_SEMUN_HACK + if we're using gcc on IRIX 6.5.x. */ + +#if defined(HAVE_UNISTD_H) +#include +#endif +#include +#include +#include +#include +#include + +#ifndef HAVE_UNION_SEMUN +union semun { + int val; + struct semid_ds *buf; + unsigned short *array; +}; +#endif + +union semun_hack { + int val; + struct semid_ds *buf; + unsigned short *array; + char __dummy[5]; +}; + +main() { + struct semid_ds sem_ds; + union semun_hack suh; + union semun su; + int sem_id, ret; + + ret = 1; + sem_id = semget(0xdead6666,1,IPC_CREAT|IPC_EXCL|0777); + su.buf = &sem_ds; + suh.buf = &sem_ds; + if (sem_id != -1) { + if ((semctl(sem_id, 0, IPC_STAT, su) == -1) && + (semctl(sem_id, 0, IPC_STAT, suh) != -1)) { + ret = 0; + } + } + semctl(sem_id, 0, IPC_RMID, 0); + return ret; +} -- cgit