summaryrefslogtreecommitdiffstats
path: root/tests/bugs/bug-905864.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs/bug-905864.c')
-rw-r--r--tests/bugs/bug-905864.c82
1 files changed, 0 insertions, 82 deletions
diff --git a/tests/bugs/bug-905864.c b/tests/bugs/bug-905864.c
deleted file mode 100644
index ed09b6e2bc4..00000000000
--- a/tests/bugs/bug-905864.c
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-
-
-pthread_t th[5] = {0};
-void
-flock_init (struct flock *f, short int type, off_t start, off_t len)
-{
- f->l_type = type;
- f->l_start = start;
- f->l_len = len;
-}
-
-int
-flock_range_in_steps (int fd, int is_set, short l_type,
- int start, int end, int step)
-{
- int ret = 0;
- int i = 0;
- struct flock f = {0,};
-
- for (i = start; i+step < end; i += step) {
- flock_init (&f, l_type, i, step);
- ret = fcntl (fd, (is_set)? F_SETLKW:F_GETLK, &f);
- if (ret) {
- perror ("fcntl");
- goto out;
- }
- }
-out:
- return ret;
-}
-
-void *
-random_locker (void *arg)
-{
- int fd = *(int *)arg;
- int i = 0;
- int is_set = 0;
-
- /* use thread id to choose GETLK or SETLK operation*/
- is_set = pthread_self () % 2;
- (void)flock_range_in_steps (fd, is_set, F_WRLCK, 0, 400, 1);
-
- return NULL;
-}
-
-
-int main (int argc, char **argv)
-{
- int fd = -1;
- int ret = 1;
- int i = 0;
- char *fname = NULL;
-
- if (argc < 2)
- goto out;
-
- fname = argv[1];
- fd = open (fname, O_RDWR);
- if (fd == -1) {
- perror ("open");
- goto out;
- }
-
- ret = flock_range_in_steps (fd, 1, F_WRLCK, 0, 2000, 2);
- for (i = 0; i < 5; i++) {
- pthread_create (&th[i], NULL, random_locker, (void *) &fd);
- }
- ret = flock_range_in_steps (fd, 1, F_WRLCK, 0, 2000, 2);
- for (i = 0; i < 5; i++) {
- pthread_join (th[i], NULL);
- }
-out:
- if (fd != -1)
- close (fd);
-
- return ret;
-}