FreeBSD/Linux Kernel Cross Reference
sys/mach/mach4.defs
1 /*
2 * Mach Operating System
3 * Copyright (c) 1993,1992 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26
27 /*
28 * Matchmaker definitions file for Mach4 kernel interface.
29 */
30
31 /*
32 * HISTORY
33 * $Log: mach4.defs,v $
34 * Revision 2.4 93/11/17 17:39:01 dbg
35 * Made PC sampling calls 64-bit clean.
36 * [93/09/27 dbg]
37 *
38 * Return actual wakeup time for timer_sleep.
39 * [93/07/13 dbg]
40 *
41 * Added calls for new timers and for real-time threads.
42 * [93/03/24 dbg]
43 *
44 * Revision 2.3 93/08/03 12:31:33 mrt
45 * Addded flavor argument to sampling interface.
46 * [93/07/30 10:25:45 bershad]
47 *
48 * Revision 2.2 93/01/24 13:20:41 danner
49 * Recast Maeda's pc sampling code into new interface file. Also
50 * redefined how it works.
51 * [93/01/11 rvb]
52 *
53 */
54
55 subsystem
56 #if KERNEL_SERVER
57 KernelServer
58 #endif /* KERNEL_SERVER */
59 #if KERNEL_USER
60 KernelUser
61 #endif /* KERNEL_USER */
62 mach4 4000;
63
64 #include <mach/std_types.defs>
65 #include <mach/mach_types.defs>
66
67
68 type sampled_pc_t = struct[3] of natural_t;
69 type sampled_pc_array_t = array[*:512] of sampled_pc_t;
70 type sampled_pc_seqno_t = unsigned;
71 type sampled_pc_flavor_t = natural_t;
72
73 type policy_param_realtime_t = struct[7] of natural_t;
74
75 routine task_enable_pc_sampling(
76 host : task_t;
77 out tick : int; /* sample frequency in usecs */
78 flavor : sampled_pc_flavor_t );
79
80 routine task_disable_pc_sampling(
81 host : task_t;
82 out samplecnt : int);
83
84 routine task_get_sampled_pcs(
85 host : task_t;
86 inout seqno : sampled_pc_seqno_t;
87 out sampled_pcs : sampled_pc_array_t);
88
89 routine thread_enable_pc_sampling(
90 host : thread_t;
91 out tick : int; /* sample frequency in usecs*/
92 flavor : sampled_pc_flavor_t );
93
94 routine thread_disable_pc_sampling(
95 host : thread_t;
96 out samplecnt : int);
97
98 routine thread_get_sampled_pcs(
99 host : thread_t;
100 inout seqno : sampled_pc_seqno_t;
101 out sampled_pcs : sampled_pc_array_t);
102
103
104 skip /* pc_sampling reserved 1*/;
105 skip /* pc_sampling reserved 2*/;
106 skip /* pc_sampling reserved 3*/;
107 skip /* pc_sampling reserved 4*/;
108
109 routine timer_create(
110 clock : mach_clock_t;
111 out timer : mach_timer_t);
112
113 routine timer_terminate(
114 timer : mach_timer_t);
115
116 routine timer_get_evc(
117 timer : mach_timer_t;
118 out event : natural_t);
119
120 routine timer_arm(
121 timer : mach_timer_t;
122 expire_time : time_spec_t;
123 interval_time : time_spec_t;
124 expire_port : expire_port_t;
125 thread : thread_t;
126 flags : int);
127
128 routine timer_sleep(
129 timer : mach_timer_t;
130 expire_time : time_spec_t;
131 flags : int;
132 out wakeup_time : time_spec_t);
133
134 routine timer_cancel(
135 timer : mach_timer_t;
136 flags : int);
137
138 routine timer_info(
139 target_timer : mach_timer_t;
140 flavor : int;
141 out clock : mach_clock_t;
142 out expire_port : expire_port_t;
143 out thread : thread_t;
144 out timer_info_out : mach_timer_info_t, CountInOut);
145
146 skip; /* timer_expire */
147 skip; /* timer reserved */
148 skip; /* timer reserved */
149
150 routine thread_get_periodic_timers(
151 thread : thread_t;
152 out wakeup_timer : mach_timer_t;
153 out deadline_timer : mach_timer_t);
154
155 routine thread_set_periodic_timers(
156 thread : thread_t;
157 wakeup_timer : mach_timer_t;
158 deadline_timer : mach_timer_t);
159
160 routine periodic_thread_create(
161 parent_task : task_t;
162 clock : mach_clock_t;
163 param : policy_param_realtime_t;
164 deadline_port : expire_port_t;
165 initial_flavor : int;
166 initial_state : thread_state_t;
167 out thread : thread_t);
168
169 routine periodic_thread_restart(
170 thread : thread_t);
171
172
Cache object: 500832cfdac835c4e50720db7dd085c8
|