diff options
| -rw-r--r-- | test/misc/Makefile | 14 | ||||
| -rw-r--r-- | test/misc/sem.c | 43 | 
2 files changed, 56 insertions, 1 deletions
diff --git a/test/misc/Makefile b/test/misc/Makefile index 60476890f..ae49a865a 100644 --- a/test/misc/Makefile +++ b/test/misc/Makefile @@ -19,7 +19,7 @@  TESTDIR=../  include $(TESTDIR)/Rules.mak -TARGETS=outb +TARGETS=sem outb  all: $(TARGETS)  outb: outb.c ../testsuite.h Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC) @@ -32,6 +32,18 @@ outb: outb.c ../testsuite.h Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC  	$(STRIPTOOL) -x -R .note -R .comment $@  	./$@  	-@ echo " " + +sem: sem.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC) +	-@ echo "-------" +	-@ echo " " +	-@ echo "Compiling vs uClibc: " +	-@ echo " " +	$(CC) $(CFLAGS) -c $< -o $@.o +	$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LIBS) +	$(STRIPTOOL) -x -R .note -R .comment $@ +	-./$@ +	-@ echo " " +  clean:  	rm -f *.[oa] *~ core $(TARGETS) diff --git a/test/misc/sem.c b/test/misc/sem.c new file mode 100644 index 000000000..7606fd180 --- /dev/null +++ b/test/misc/sem.c @@ -0,0 +1,43 @@ +#include <stdio.h> +#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/sem.h> + +int main(void) +{ +    int k, r; +    union semun { +	int val; +	struct semid_ds *buf; +	unsigned short int *array; +	struct seminfo *__buf; +    } sd; +    struct semid_ds sd_buf; + +    k = semget(IPC_PRIVATE, 10, IPC_CREAT | 0666 ); +    printf("%d\n", k); + +    if (k < 0) { +	printf("semget failed: %m\n"); +	return 1; +    } + +    sd.buf = &sd_buf; +    r = semctl(k, 0, IPC_STAT, sd); +    printf("%d\n", r); + +    if (r < 0) { +	printf("semctl IPC_STAT failed: %m\n"); +	return 1; +    } + +    printf("sem_nsems = %lu\n", sd_buf.sem_nsems); +    if (sd_buf.sem_nsems != 10) { +	printf("failed: incorrect sem_nsems!\n"); +	return 1; +    } + +    printf("succeeded\n"); + +    return 0; +}  | 
