pth_rwlock.c revision e739ac0589b4fb43561f801c4faba8c1b89f8680
1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _XOPEN_SOURCE 600
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <pthread.h>
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdio.h>
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdlib.h>
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <string.h>
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LOCKS 2000
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint main(int argc, char **argv)
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  pthread_rwlock_t locks[LOCKS];
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  int n;
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  int e;
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  for (n = 0; n < LOCKS; n++) {
1754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    if ((e = pthread_rwlock_init(locks + n, NULL)) != 0) {
1854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius      fprintf(stderr, "pthread_rwlock_init[%d]: %s\n", n, strerror(e));
1954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius      exit(1);
2054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    }
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  }
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  for (n = 0; n < LOCKS; n++) {
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if ((e = pthread_rwlock_destroy(locks + n)) != 0) {
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      fprintf(stderr, "pthread_rwlock_destroy[%d]: %s\n", n, strerror(e));
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      exit(1);
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  }
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru  exit(0);
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru