summaryrefslogtreecommitdiff
path: root/src/regress/lib/libc/stdio_threading/fopen
diff options
context:
space:
mode:
Diffstat (limited to 'src/regress/lib/libc/stdio_threading/fopen')
-rw-r--r--src/regress/lib/libc/stdio_threading/fopen/Makefile6
-rwxr-xr-xsrc/regress/lib/libc/stdio_threading/fopen/fopen_test.c48
2 files changed, 54 insertions, 0 deletions
diff --git a/src/regress/lib/libc/stdio_threading/fopen/Makefile b/src/regress/lib/libc/stdio_threading/fopen/Makefile
new file mode 100644
index 0000000000..e51deeff1d
--- /dev/null
+++ b/src/regress/lib/libc/stdio_threading/fopen/Makefile
@@ -0,0 +1,6 @@
1TOPDIR=${.CURDIR}
2PROG=fopen_test
3CFLAGS+=-I${TOPDIR}/../include/
4LDFLAGS+=-lpthread
5
6.include <bsd.regress.mk>
diff --git a/src/regress/lib/libc/stdio_threading/fopen/fopen_test.c b/src/regress/lib/libc/stdio_threading/fopen/fopen_test.c
new file mode 100755
index 0000000000..72359bb323
--- /dev/null
+++ b/src/regress/lib/libc/stdio_threading/fopen/fopen_test.c
@@ -0,0 +1,48 @@
1/*
2 * Copyright (c) 2008 Bret S. Lambert <blambert@openbsd.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#include <stdio.h>
18#include <pthread.h>
19#include "local.h"
20
21int
22writefn(void *cookie, const char *buf, int size)
23{
24 return 0;
25}
26
27void
28fopen_thread(void *v)
29{
30 FILE *file;
31 int i;
32
33 for (i = 0; i < 4096; i++) {
34 file = fwopen(&i, writefn);
35 if (file != NULL) {
36 fputc('0', file);
37 pthread_yield();
38 fclose(file);
39 }
40 }
41}
42
43int
44main(void)
45{
46 run_threads(fopen_thread, NULL);
47 exit(0);
48}