]> git.saurik.com Git - apple/xnu.git/blame - osfmk/mach/sync.defs
xnu-792.10.96.tar.gz
[apple/xnu.git] / osfmk / mach / sync.defs
CommitLineData
1c79356b
A
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
37839358
A
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
1c79356b 11 *
37839358
A
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
1c79356b
A
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
37839358
A
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
1c79356b
A
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * @OSF_COPYRIGHT@
24 *
25 */
26/*
27 * File: mach/sync.defs
28 * Author: Joseph CaraDonna
29 *
30 * Exported kernel calls
31 *
32 */
33
34subsystem
35#if KERNEL_SERVER
36 KernelServer
37#endif /* KERNEL_SERVER */
38 sync 617000;
39
40#include <mach/std_types.defs>
41#include <mach/mach_types.defs>
42#include <mach/clock_types.defs>
43
44#if KERNEL_SERVER
45import <kern/sync_lock.h>;
46import <kern/sync_sema.h>;
47import <kern/ipc_sync.h>;
48#endif /* KERNEL_SERVER */
49
50
51type semaphore_t = mach_port_t
52 ctype: mach_port_t
53#if KERNEL_SERVER
54 intran: semaphore_t convert_port_to_semaphore(mach_port_t)
55 outtran: mach_port_t convert_semaphore_to_port(semaphore_t)
56 destructor: semaphore_dereference(semaphore_t)
57#endif /* KERNEL_SERVER */
58 ;
59
60type semaphore_consume_ref_t = mach_port_move_send_t
61 ctype: mach_port_t
62#if KERNEL_SERVER
63 intran: semaphore_t convert_port_to_semaphore(mach_port_t)
64 destructor: semaphore_dereference(semaphore_t)
65#endif /* KERNEL_SERVER */
66 ;
67
68type lock_set_t = mach_port_t
69 ctype: mach_port_t
70#if KERNEL_SERVER
71 intran: lock_set_t convert_port_to_lock_set(mach_port_t)
72 outtran: mach_port_t convert_lock_set_to_port(lock_set_t)
73 destructor: lock_set_dereference(lock_set_t)
74#endif /* KERNEL_SERVER */
75 ;
76
77
78routine semaphore_create(
79 task : task_t;
80 out semaphore : semaphore_t;
81 policy : int;
82 value : int);
83
84routine semaphore_destroy(
85 task : task_t;
86 semaphore : semaphore_consume_ref_t);
87
88routine semaphore_signal(
89 semaphore : semaphore_t);
90
91routine semaphore_signal_all(
92 semaphore : semaphore_t);
93
94routine semaphore_wait(
95 semaphore : semaphore_t);
96
97routine lock_set_create(
98 task : task_t;
99 out new_lock_set : lock_set_t;
100 n_ulocks : int;
101 policy : int);
102
103routine lock_set_destroy(
104 task : task_t;
105 lock_set : lock_set_t);
106
107routine lock_acquire(
108 lock_set : lock_set_t;
109 lock_id : int);
110
111routine lock_release(
112 lock_set : lock_set_t;
113 lock_id : int);
114
115routine lock_try(
116 lock_set : lock_set_t;
117 lock_id : int);
118
119routine lock_make_stable(
120 lock_set : lock_set_t;
121 lock_id : int);
122
123routine lock_handoff(
124 lock_set : lock_set_t;
125 lock_id : int);
126
127routine lock_handoff_accept(
128 lock_set : lock_set_t;
129 lock_id : int);
130
131routine semaphore_signal_thread(
132 semaphore : semaphore_t;
133 thread : thread_act_t);
134
135routine semaphore_timedwait(
136 semaphore : semaphore_t;
137 wait_time : mach_timespec_t);