summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/include/nvgpu/cond.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/include/nvgpu/cond.h')
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/cond.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/cond.h b/drivers/gpu/nvgpu/include/nvgpu/cond.h
new file mode 100644
index 00000000..9cd2c93f
--- /dev/null
+++ b/drivers/gpu/nvgpu/include/nvgpu/cond.h
@@ -0,0 +1,96 @@
1/*
2 * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 * more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#ifndef __NVGPU_COND_H__
18#define __NVGPU_COND_H__
19
20#ifdef __KERNEL__
21#include <nvgpu/linux/cond.h>
22#endif
23
24/*
25 * struct nvgpu_cond
26 *
27 * Should be implemented per-OS in a separate library
28 */
29struct nvgpu_cond;
30
31/**
32 * nvgpu_cond_init - Initialize a condition variable
33 *
34 * @cond - The condition variable to initialize
35 *
36 * Initialize a condition variable before using it.
37 */
38int nvgpu_cond_init(struct nvgpu_cond *cond);
39
40/**
41 * nvgpu_cond_signal - Signal a condition variable
42 *
43 * @cond - The condition variable to signal
44 *
45 * Wake up a waiter for a condition variable to check if its condition has been
46 * satisfied.
47 *
48 * The waiter is using an uninterruptible wait.
49 */
50int nvgpu_cond_signal(struct nvgpu_cond *cond);
51
52/**
53 * nvgpu_cond_signal_interruptible - Signal a condition variable
54 *
55 * @cond - The condition variable to signal
56 *
57 * Wake up a waiter for a condition variable to check if its condition has been
58 * satisfied.
59 *
60 * The waiter is using an interruptible wait.
61 */
62int nvgpu_cond_signal_interruptible(struct nvgpu_cond *cond);
63
64/**
65 * nvgpu_cond_broadcast - Signal all waiters of a condition variable
66 *
67 * @cond - The condition variable to signal
68 *
69 * Wake up all waiters for a condition variable to check if their conditions
70 * have been satisfied.
71 *
72 * The waiters are using an uninterruptible wait.
73 */
74int nvgpu_cond_broadcast(struct nvgpu_cond *cond);
75
76/**
77 * nvgpu_cond_broadcast_interruptible - Signal all waiters of a condition
78 * variable
79 *
80 * @cond - The condition variable to signal
81 *
82 * Wake up all waiters for a condition variable to check if their conditions
83 * have been satisfied.
84 *
85 * The waiters are using an interruptible wait.
86 */
87int nvgpu_cond_broadcast_interruptible(struct nvgpu_cond *cond);
88
89/**
90 * nvgpu_cond_destroy - Destroy a condition variable
91 *
92 * @cond - The condition variable to destroy
93 */
94void nvgpu_cond_destroy(struct nvgpu_cond *cond);
95
96#endif /* __NVGPU_COND_H__ */