~ubuntu-branches/ubuntu/trusty/ctfutils/trusty

« back to all changes in this revision

Viewing changes to cddl/contrib/opensolaris/tools/ctf/cvt/barrier.h

  • Committer: Package Import Robot
  • Author(s): Robert Millan
  • Date: 2013-11-09 17:07:06 UTC
  • Revision ID: package-import@ubuntu.com-20131109170706-kacr6nvpkbhxsk81
Tags: upstream-9.2
ImportĀ upstreamĀ versionĀ 9.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * CDDL HEADER START
 
3
 *
 
4
 * The contents of this file are subject to the terms of the
 
5
 * Common Development and Distribution License, Version 1.0 only
 
6
 * (the "License").  You may not use this file except in compliance
 
7
 * with the License.
 
8
 *
 
9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 
10
 * or http://www.opensolaris.org/os/licensing.
 
11
 * See the License for the specific language governing permissions
 
12
 * and limitations under the License.
 
13
 *
 
14
 * When distributing Covered Code, include this CDDL HEADER in each
 
15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 
16
 * If applicable, add the following below this CDDL HEADER, with the
 
17
 * fields enclosed by brackets "[]" replaced with your own identifying
 
18
 * information: Portions Copyright [yyyy] [name of copyright owner]
 
19
 *
 
20
 * CDDL HEADER END
 
21
 */
 
22
/*
 
23
 * Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
 
24
 * Use is subject to license terms.
 
25
 */
 
26
 
 
27
#ifndef _BARRIER_H
 
28
#define _BARRIER_H
 
29
 
 
30
#pragma ident   "%Z%%M% %I%     %E% SMI"
 
31
 
 
32
/*
 
33
 * APIs for the barrier synchronization primitive.
 
34
 */
 
35
 
 
36
#if defined(sun)
 
37
#include <synch.h>
 
38
#else
 
39
#include <semaphore.h>
 
40
typedef sem_t   sema_t;
 
41
#endif
 
42
 
 
43
#ifdef __cplusplus
 
44
extern "C" {
 
45
#endif
 
46
 
 
47
typedef struct barrier {
 
48
        pthread_mutex_t bar_lock;       /* protects bar_numin */
 
49
        int bar_numin;                  /* current number of waiters */
 
50
 
 
51
        sema_t bar_sem;                 /* where everyone waits */
 
52
        int bar_nthr;                   /* # of waiters to trigger release */
 
53
} barrier_t;
 
54
 
 
55
extern void barrier_init(barrier_t *, int);
 
56
extern int barrier_wait(barrier_t *);
 
57
 
 
58
#ifdef __cplusplus
 
59
}
 
60
#endif
 
61
 
 
62
#endif /* _BARRIER_H */