]> git.saurik.com Git - apple/xnu.git/blob - osfmk/mach/sync.defs
xnu-123.5.tar.gz
[apple/xnu.git] / osfmk / mach / sync.defs
1 /*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
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.
11 *
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
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
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.
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
34 subsystem
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
45 import <kern/sync_lock.h>;
46 import <kern/sync_sema.h>;
47 import <kern/ipc_sync.h>;
48 #endif /* KERNEL_SERVER */
49
50
51 type 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
60 type 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
68 type 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
78 routine semaphore_create(
79 task : task_t;
80 out semaphore : semaphore_t;
81 policy : int;
82 value : int);
83
84 routine semaphore_destroy(
85 task : task_t;
86 semaphore : semaphore_consume_ref_t);
87
88 routine semaphore_signal(
89 semaphore : semaphore_t);
90
91 routine semaphore_signal_all(
92 semaphore : semaphore_t);
93
94 routine semaphore_wait(
95 semaphore : semaphore_t);
96
97 routine lock_set_create(
98 task : task_t;
99 out new_lock_set : lock_set_t;
100 n_ulocks : int;
101 policy : int);
102
103 routine lock_set_destroy(
104 task : task_t;
105 lock_set : lock_set_t);
106
107 routine lock_acquire(
108 lock_set : lock_set_t;
109 lock_id : int);
110
111 routine lock_release(
112 lock_set : lock_set_t;
113 lock_id : int);
114
115 routine lock_try(
116 lock_set : lock_set_t;
117 lock_id : int);
118
119 routine lock_make_stable(
120 lock_set : lock_set_t;
121 lock_id : int);
122
123 routine lock_handoff(
124 lock_set : lock_set_t;
125 lock_id : int);
126
127 routine lock_handoff_accept(
128 lock_set : lock_set_t;
129 lock_id : int);
130
131 routine semaphore_signal_thread(
132 semaphore : semaphore_t;
133 thread : thread_act_t);
134
135 routine semaphore_timedwait(
136 semaphore : semaphore_t;
137 wait_time : mach_timespec_t);