18#ifndef _COBALT_POSIX_COND_H
19#define _COBALT_POSIX_COND_H
21#include <linux/types.h>
22#include <linux/time.h>
23#include <linux/list.h>
24#include <cobalt/kernel/synch.h>
25#include <cobalt/uapi/thread.h>
26#include <cobalt/uapi/cond.h>
27#include <xenomai/posix/syscall.h>
28#include <xenomai/posix/process.h>
34 struct xnsynch synchbase;
35 struct list_head mutex_link;
36 struct cobalt_cond_state *state;
37 struct cobalt_condattr attr;
38 struct cobalt_mutex *mutex;
39 struct cobalt_resnode resnode;
42int __cobalt_cond_wait_prologue(
struct cobalt_cond_shadow __user *u_cnd,
43 struct cobalt_mutex_shadow __user *u_mx,
46 int (*fetch_timeout)(
struct timespec64 *ts,
47 const void __user *u_ts));
49COBALT_SYSCALL_DECL(cond_init,
50 (
struct cobalt_cond_shadow __user *u_cnd,
51 const struct cobalt_condattr __user *u_attr));
53COBALT_SYSCALL_DECL(cond_destroy,
54 (
struct cobalt_cond_shadow __user *u_cnd));
56COBALT_SYSCALL_DECL(cond_wait_prologue,
57 (
struct cobalt_cond_shadow __user *u_cnd,
58 struct cobalt_mutex_shadow __user *u_mx,
61 struct __kernel_old_timespec __user *u_ts));
63COBALT_SYSCALL_DECL(cond_wait_prologue64,
64 (
struct cobalt_cond_shadow __user *u_cnd,
65 struct cobalt_mutex_shadow __user *u_mx,
68 struct __kernel_timespec __user *u_ts));
70COBALT_SYSCALL_DECL(cond_wait_epilogue,
71 (
struct cobalt_cond_shadow __user *u_cnd,
72 struct cobalt_mutex_shadow __user *u_mx));
74int cobalt_cond_deferred_signals(
struct cobalt_cond *cond);
76void cobalt_cond_reclaim(
struct cobalt_resnode *node,