MusicKit
0.0.0
|
00001 #ifndef __MK__MachMessages_H___ 00002 #define __MK__MachMessages_H___ 00003 /* $Id$ 00004 * Copyright 1988-1992, NeXT Inc. All rights reserved. 00005 */ 00006 /* 00007 * HISTORY 00008 * 23-Aug-90 Gregg Kellogg (gk) at NeXT 00009 * Added SND_DSP_PROTO_TXD for 040 TXD interrupt support. 00010 * 00011 * 23-Aug-90 Gregg Kellogg (gk) at NeXT 00012 * Support message passing protocol change so the reply port isn't 00013 * used for passing permissions (set_owner, get_stream, dsp_proto, 00014 * and get_dsp_cmd_port). 00015 * 00016 * 21-Aug-90 Julius Smith (jos) at NeXT 00017 * Added protocol message type for setting the protocol from the 00018 * dsp command queue. 00019 * 00020 * 10-Dec-88 Gregg Kellogg (gk) at NeXT 00021 * Created. 00022 * 00023 */ 00024 #import <mach/mach_types.h> 00025 #import <mach/message.h> 00026 00027 /* 00028 * Message component type codes on stream port. 00029 */ 00030 typedef struct { 00031 msg_type_t typeType; 00032 unsigned int type; 00033 #define SND_MT_PLAY_DATA 0 // data to be played (with size) 00034 #define SND_MT_RECORD_DATA 1 // number of bytes to record 00035 #define SND_MT_OPTIONS 2 // high/low water and dma size options 00036 #define SND_MT_CONTROL 3 // await/abort/pause/continue 00037 #define SND_MT_NDMA 4 // number of dma descs in stream. 00038 } snd_msg_type_t; 00039 00040 /* 00041 * Interface message formats 00042 */ 00043 00044 /* 00045 * Messages sent from the kernel 00046 */ 00047 typedef struct { 00048 msg_header_t header; 00049 msg_type_t data_tagType; 00050 int data_tag; 00051 msg_type_long_t dataType; 00052 pointer_t recorded_data; 00053 } snd_recorded_data_t; 00054 00055 typedef struct { 00056 msg_header_t header; 00057 msg_type_t data_tagType; 00058 int data_tag; 00059 } snd_taged_reply_t; 00060 00061 typedef struct { 00062 msg_header_t header; 00063 msg_type_t dataType; 00064 int nsamples; 00065 } snd_ret_samples_t; 00066 00067 typedef struct { 00068 msg_header_t header; 00069 msg_type_t dataType; 00070 unsigned int parms; 00071 #define SND_PARM_LOWPASS 0x1 00072 #define SND_PARM_SPEAKER 0x2 00073 #define SND_PARM_ZEROFILL 0x4 00074 } snd_ret_parms_t; 00075 00076 typedef struct { 00077 msg_header_t header; 00078 msg_type_t dataType; 00079 unsigned int volume; 00080 #define SND_VOLUME_RCHAN_MASK 0xff 00081 #define SND_VOLUME_RCHAN_SHIFT 0 00082 #define SND_VOLUME_LCHAN_MASK 0xff00 00083 #define SND_VOLUME_LCHAN_SHIFT 8 00084 } snd_ret_volume_t; 00085 00086 typedef struct { 00087 msg_header_t header; 00088 msg_type_t dataType; 00089 int dsp_regs; 00090 } snd_ret_dsp_regs_t; 00091 00092 typedef struct { 00093 msg_header_t header; 00094 msg_type_t dataType; 00095 unsigned int ill_msgid; // message id of bad message. 00096 unsigned int ill_error; // error returned 00097 #define SND_NO_ERROR 100 // non-error ack. 00098 #define SND_BAD_PORT 101 // message sent to wrong port 00099 #define SND_BAD_MSG 102 // unknown message id 00100 #define SND_BAD_PARM 103 // bad parameter list in message 00101 #define SND_NO_MEMORY 104 // can't allocate memory (record) 00102 #define SND_PORT_BUSY 105 // access req'd to existing excl access port 00103 #define SND_NOT_OWNER 106 // must be owner to do this 00104 #define SND_BAD_CHAN 107 // dsp channel hasn't been inited 00105 #define SND_SEARCH 108 // couldn't find requested resource 00106 #define SND_NODATA 109 // can't send data commands to dsp in this mode 00107 #define SND_NOPAGER 110 // can't allocate from external pager (record). 00108 #define SND_NOTALIGNED 111 // bad data alignment. 00109 #define SND_BAD_HOST_PRIV 112 // bad host privilege port passed. 00110 #define SND_BAD_PROTO 113 // can't do requested operation given protocol 00111 } snd_illegal_msg_t; 00112 00113 typedef struct {msg_header_t header;} snd_ret_mach_port_t; 00114 00115 typedef struct { 00116 msg_header_t header; 00117 msg_type_t dataType; 00118 unsigned int mask; 00119 unsigned int flags; 00120 unsigned int value; 00121 } snd_dsp_cond_true_t; 00122 00123 /* 00124 * Messages sent from the user to the device 00125 */ 00126 typedef struct { 00127 msg_header_t header; 00128 msg_type_t Type; 00129 unsigned int stream; 00130 msg_type_t ownerType; 00131 mach_port_t owner; 00132 } snd_get_stream_t; 00133 00134 #define SND_GD_CHAN_MASK 0x7f 00135 #define SND_GD_CHAN_SHIFT 0 00136 #define SND_GD_DEVICE_MASK 0x80 00137 #define SND_GD_DEVICE_SHIFT 7 00138 00139 #define snd_gd_bitmap(chan, device) \ 00140 (((chan)<<SND_GD_CHAN_SHIFT) | ((device)<<SND_GD_DEVICE_SHIFT)) 00141 00142 #define snd_gd_isdevice(bitmap) ((bitmap)&SND_GD_DEVICE_MASK) 00143 #define snd_gd_chan(bitmap) ((bitmap)&SND_GD_CHAN_MASK) 00144 00145 #define SND_GD_SOUT_44 snd_gd_bitmap(0, TRUE) 00146 #define SND_GD_SOUT_22 snd_gd_bitmap(1, TRUE) 00147 #define SND_GD_SIN snd_gd_bitmap(2, TRUE) 00148 #define SND_GD_DSP_OUT snd_gd_bitmap(DSP_SO_CHAN, FALSE) // sound out from dsp 00149 #define SND_GD_DSP_IN snd_gd_bitmap(DSP_SI_CHAN, FALSE) // sound in to dsp 00150 00151 typedef struct { 00152 msg_header_t header; 00153 msg_type_t Type; 00154 unsigned int parms; 00155 } snd_set_parms_t; 00156 00157 typedef struct { 00158 msg_header_t header; 00159 msg_type_t Type; 00160 unsigned int volume; 00161 } snd_set_volume_t; 00162 00163 typedef struct { 00164 msg_header_t header; 00165 msg_type_t Type; 00166 unsigned int proto; 00167 msg_type_t ownerType; 00168 mach_port_t owner; 00169 } snd_dsp_proto_t; 00170 00171 #define SND_DSP_PROTO_DSPERR 0x1 // DSP error messages enabled 00172 #define SND_DSP_PROTO_C_DMA 0x2 // complex dma mode 00173 #define SND_DSP_PROTO_S_DMA 0x4 // simple dma mode 00174 #define SND_DSP_PROTO_LINKOUT 0x8 // link directly to sound out 00175 #define SND_DSP_PROTO_LINKIN 0x10 // link directly to sound out 00176 #define SND_DSP_PROTO_SOUNDDATA 0x20 // all data to dsp is sound samples 00177 #define SND_DSP_PROTO_HIGH 0x40 // 44khz sound out 00178 #define SND_DSP_PROTO_HFABORT 0x80 // DSP abort indicated by HF2 & HF3 00179 #define SND_DSP_PROTO_DSPMSG 0x100 // DSP messages enabled 00180 #define SND_DSP_PROTO_RAW 0x200 // DSP messages enabled 00181 #define SND_DSP_PROTO_TXD 0x400 // DSP txd interrupt enable (040 only) 00182 00183 typedef msg_header_t snd_get_parms_t; 00184 typedef msg_header_t snd_get_volume_t; 00185 00186 typedef struct { 00187 msg_header_t header; 00188 msg_type_t ownerType; 00189 mach_port_t owner; // owner port 00190 } snd_get_dsp_cmd_mach_port_t; 00191 00192 typedef struct { 00193 msg_header_t header; 00194 msg_type_t negType; 00195 mach_port_t negotiation; // negotiation port 00196 msg_type_t ownerType; 00197 mach_port_t owner; // owner port 00198 } snd_set_owner_t; 00199 00200 typedef struct { 00201 msg_header_t header; 00202 msg_type_t old_ownerType; 00203 mach_port_t old_owner; 00204 msg_type_t new_ownerType; 00205 mach_port_t new_owner; 00206 msg_type_t new_negotiationType; 00207 mach_port_t new_negotiation; 00208 } snd_reset_owner_t; 00209 00210 typedef struct { 00211 msg_header_t header; 00212 msg_type_t privType; 00213 mach_port_t priv; 00214 } snd_new_device_t; 00215 00216 typedef struct { 00217 msg_header_t header; 00218 msg_type_long_t dataType; 00219 #define DSP_DEF_BUFSIZE 512 // default #words in each buf 00220 unsigned int data[DSP_DEF_BUFSIZE]; 00221 } snd_dsp_msg_t; 00222 00223 typedef struct { 00224 msg_header_t header; 00225 msg_type_long_t dataType; 00226 #define DSP_DEF_EBUFSIZE 32 // default #words in each buf 00227 unsigned int data[DSP_DEF_EBUFSIZE]; 00228 } snd_dsp_err_t; 00229 00230 /* 00231 * Messages sent from the user to a stream port 00232 * There's only one message, but it can contain some combination 00233 * of several different sub-messages. 00234 */ 00235 typedef struct snd_stream_msg { 00236 msg_header_t header; 00237 msg_type_t data_tagType; 00238 int data_tag; // tag for this request, 0 def 00239 } snd_stream_msg_t; 00240 00241 typedef struct { 00242 snd_msg_type_t msgtype; 00243 msg_type_t optionsType; 00244 unsigned int options; 00245 #define SND_DM_STARTED_MSG 0x01 00246 #define SND_DM_COMPLETED_MSG 0x02 00247 #define SND_DM_ABORTED_MSG 0x04 00248 #define SND_DM_PAUSED_MSG 0x08 00249 #define SND_DM_RESUMED_MSG 0x10 00250 #define SND_DM_OVERFLOW_MSG 0x20 00251 #define SND_DM_PREEMPT 0x40 00252 msg_type_t reg_portType; 00253 mach_port_t reg_port; // remote port for region messages 00254 msg_type_long_t dataType; 00255 pointer_t data; 00256 } snd_stream_play_data_t; 00257 00258 typedef struct { 00259 snd_msg_type_t msgtype; 00260 msg_type_t optionsType; 00261 unsigned int options; 00262 int nbytes; 00263 msg_type_t reg_portType; 00264 mach_port_t reg_port; // remote port for region messages 00265 msg_type_t filenameType; // filename string follows inline 00266 } snd_stream_record_data_t; 00267 00268 typedef struct { 00269 snd_msg_type_t msgtype; 00270 msg_type_t controlType; 00271 unsigned int snd_control; 00272 #define SND_DC_AWAIT 0x1 00273 #define SND_DC_ABORT 0x2 00274 #define SND_DC_PAUSE 0x4 00275 #define SND_DC_RESUME 0x8 00276 } snd_stream_control_t; 00277 00278 typedef struct { 00279 snd_msg_type_t msg_type; 00280 msg_type_t optionsType; 00281 unsigned int high_water; 00282 unsigned int low_water; 00283 unsigned int dma_size; 00284 } snd_stream_options_t; 00285 00286 /* 00287 * Number of dma descriptors used in stream. 00288 */ 00289 typedef struct { 00290 snd_msg_type_t msg_type; 00291 msg_type_t ndmaType; 00292 unsigned int ndma; 00293 } snd_stream_ndma_t; 00294 00295 /* 00296 * Nsamples is another message on a stream port. 00297 */ 00298 typedef struct { 00299 msg_header_t header; 00300 } snd_stream_nsamples_t; 00301 00302 /* 00303 * Messages sent by user to dsp command port. 00304 */ 00305 typedef struct { 00306 msg_header_t header; 00307 msg_type_t reg_maskType; 00308 unsigned int mask; // mask of flags to inspect 00309 unsigned int flags; // set of flags that must be on 00310 msg_type_t ret_portType; 00311 mach_port_t ret_port; // remote port for ret_msg 00312 msg_type_long_t ret_msgType; 00313 /* 00314 * follows is the body of the (simple) message to send 00315 * either to msg_remote_port, or to snd_var.dsp (if PORT_NULL). 00316 */ 00317 msg_header_t ret_msg; // possibly longer than this. 00318 } snd_dspcmd_event_t; 00319 00320 typedef struct { 00321 msg_header_t header; 00322 msg_type_t dataType; 00323 int addr; // .. of dsp buffer 00324 int size; // .. of dsp buffer 00325 int skip; // dma skip factor 00326 #define DSP_SKIP_0 1 00327 #define DSP_SKIP_CONTIG DSP_SKIP_0 00328 #define DSP_SKIP_1 2 00329 #define DSP_SKIP_2 3 00330 #define DSP_SKIP_3 4 00331 #define DSP_SKIP_4 5 00332 int space; // dsp space of buffer 00333 #define DSP_SPACE_X 1 00334 #define DSP_SPACE_Y 2 00335 #define DSP_SPACE_L 3 00336 #define DSP_SPACE_P 4 00337 int mode; // mode of dma [1..5] 00338 #define DSP_MODE8 1 00339 #define DSP_MODE16 2 00340 #define DSP_MODE24 3 00341 #define DSP_MODE32 4 00342 #define DSP_MODE2416 5 /* Pseudo-dma shift 24 to 16 bits */ 00343 #define SND_MODE_MIN 1 /* Minimum value for mode */ 00344 #define SND_MODE_MAX 5 /* Maximum value for mode */ 00345 int chan; // channel for dma 00346 #define DSP_USER_REQ_CHAN 0 // for user-requested dma's 00347 #define DSP_SO_CHAN 1 // for sound-out dma's. 00348 #define DSP_SI_CHAN 2 // for sound-in dma's 00349 #define DSP_USER_CHAN 3 // first user chan 00350 00351 #define DSP_N_USER_CHAN 16 // 0..15 for user dma. 00352 } snd_dspcmd_chandata_t; 00353 00354 typedef struct { 00355 msg_header_t header; 00356 msg_type_t chandataType; 00357 int addr; // .. of dsp buffer 00358 int size; // .. of dsp buffer 00359 int skip; // dma skip factor 00360 int space; // dsp space of buffer 00361 int mode; // mode of dma [1..5] 00362 msg_type_long_t dataType; 00363 pointer_t data; // data to output 00364 } snd_dspcmd_dma_t; 00365 00366 typedef msg_header_t snd_dspcmd_abortdma_t; 00367 typedef msg_header_t snd_dspcmd_req_err_t; 00368 typedef msg_header_t snd_dspcmd_req_msg_t; 00369 00370 /* 00371 * Multi-part dspcmd_msg. 00372 */ 00373 /* 00374 * Message component type codes on stream port. 00375 */ 00376 typedef struct { 00377 msg_type_t typeType; 00378 unsigned int type; 00379 #define SND_DSP_MT_DATA 1 // 1, 2, or 4 byte data 00380 #define SND_DSP_MT_HOST_COMMAND 2 // host command 00381 #define SND_DSP_MT_HOST_FLAG 3 // host flag(s) to set 00382 #define SND_DSP_MT_RET_MSG 4 // (simple) message to send 00383 #define SND_DSP_MT_RESET 5 // hard reset the DSP 00384 #define SND_DSP_MT_GET_REGS 6 // return DSP host I/F registers 00385 #define SND_DSP_MT_CONDITION 7 // wait for condition (return msg) 00386 #define SND_DSP_MT_RDATA 8 // read 1, 2, or 4 byte data 00387 #define SND_DSP_MT_PROTO 9 // DSP protocol 00388 } snd_dsp_type_t; 00389 00390 typedef struct { 00391 msg_header_t header; 00392 msg_type_t priType; 00393 int pri; // Priority of message group 00394 #define DSP_MSG_HIGH 0 00395 #define DSP_MSG_MED 1 00396 #define DSP_MSG_LOW 2 00397 boolean_t atomic; // don't preempt this msg with another 00398 } snd_dspcmd_msg_t; 00399 00400 typedef struct { 00401 snd_dsp_type_t msgtype; 00402 msg_type_t conditionType; 00403 unsigned int mask; // mask of flags to inspect 00404 unsigned int flags; // set of flags that must be on 00405 msg_type_t reply_portType; 00406 mach_port_t reply_port; // were to send device regs to 00407 } snd_dsp_condition_t; 00408 00409 typedef struct { 00410 snd_dsp_type_t msgtype; 00411 msg_type_long_t dataType; 00412 pointer_t data; // data to send 00413 } snd_dsp_data_t; 00414 00415 typedef struct { 00416 snd_dsp_type_t msgtype; 00417 msg_type_t hcType; 00418 unsigned int hc; // host command 00419 } snd_dsp_host_command_t; 00420 00421 typedef struct { 00422 snd_dsp_type_t msgtype; 00423 msg_type_t protoType; // protocol modification 00424 unsigned int proto; 00425 } snd_dsp_mt_proto_t; 00426 00427 typedef struct { 00428 snd_dsp_type_t msgtype; 00429 msg_type_t hfType; 00430 unsigned int mask; // mask of HF0|HF1 00431 unsigned int flags; // flags to set 00432 } snd_dsp_host_flag_t; 00433 00434 typedef struct { 00435 snd_dsp_type_t msgtype; 00436 msg_type_t ret_portType; 00437 mach_port_t ret_port; // remote port for ret_msg 00438 msg_type_long_t ret_msgType; 00439 /* 00440 * follows is the body of the (simple) message to send 00441 * either to msg_remote_port, or to snd_var.dspowner (if PORT_NULL). 00442 */ 00443 msg_header_t ret_msg; // possibly longer than this. 00444 } snd_dsp_ret_msg_t; 00445 00446 typedef struct { 00447 snd_dsp_type_t msgtype; 00448 } snd_dsp_reset_t, snd_dsp_get_regs_t; 00449 00450 /* 00451 * Message Id's 00452 */ 00453 #define SND_MSG_BASE 0 00454 00455 /* 00456 * User messages on stream port 00457 */ 00458 #define SND_MSG_STREAM_BASE SND_MSG_BASE+0 00459 #define SND_MSG_STREAM_MSG SND_MSG_STREAM_BASE+0 00460 #define SND_MSG_STREAM_NSAMPLES SND_MSG_STREAM_BASE+1 00461 00462 /* 00463 * User messages on device port 00464 */ 00465 #define SND_MSG_DEVICE_BASE SND_MSG_BASE+100 00466 #define SND_MSG_GET_STREAM SND_MSG_DEVICE_BASE+0 00467 #define SND_MSG_SET_PARMS SND_MSG_DEVICE_BASE+1 00468 #define SND_MSG_GET_PARMS SND_MSG_DEVICE_BASE+2 00469 #define SND_MSG_SET_VOLUME SND_MSG_DEVICE_BASE+3 00470 #define SND_MSG_GET_VOLUME SND_MSG_DEVICE_BASE+4 00471 #define SND_MSG_SET_DSPOWNER SND_MSG_DEVICE_BASE+5 00472 #define SND_MSG_SET_SNDINOWNER SND_MSG_DEVICE_BASE+6 00473 #define SND_MSG_SET_SNDOUTOWNER SND_MSG_DEVICE_BASE+7 00474 #define SND_MSG_DSP_PROTO SND_MSG_DEVICE_BASE+8 00475 #define SND_MSG_GET_DSP_CMD_PORT SND_MSG_DEVICE_BASE+9 00476 #define SND_MSG_NEW_DEVICE_PORT SND_MSG_DEVICE_BASE+10 00477 #define SND_MSG_RESET_DSPOWNER SND_MSG_DEVICE_BASE+11 00478 #define SND_MSG_RESET_SNDINOWNER SND_MSG_DEVICE_BASE+12 00479 #define SND_MSG_RESET_SNDOUTOWNER SND_MSG_DEVICE_BASE+13 00480 #define SND_MSG_SET_RAMP SND_MSG_DEVICE_BASE+14 00481 /* 00482 * Set ramp parameter 00483 */ 00484 #define SND_PARM_RAMPUP 0x1 /* Ramp sound up */ 00485 #define SND_PARM_RAMPDOWN 0x2 /* Ramp sound down */ 00486 00487 /* 00488 * User messages on dsp command port 00489 */ 00490 #define SND_MSG_DSP_BASE SND_MSG_BASE+200 00491 #define SND_MSG_DSP_MSG SND_MSG_DSP_BASE+0 00492 #define SND_MSG_DSP_EVENT SND_MSG_DSP_BASE+1 00493 #define SND_MSG_DSP_CHANDATA SND_MSG_DSP_BASE+2 00494 #define SND_MSG_DSP_DMAOUT SND_MSG_DSP_BASE+3 00495 #define SND_MSG_DSP_DMAIN SND_MSG_DSP_BASE+4 00496 #define SND_MSG_DSP_ABORTDMA SND_MSG_DSP_BASE+5 00497 #define SND_MSG_DSP_REQ_MSG SND_MSG_DSP_BASE+6 00498 #define SND_MSG_DSP_REQ_ERR SND_MSG_DSP_BASE+7 00499 00500 /* 00501 * Kernel messages returned. 00502 */ 00503 #define SND_MSG_KERN_BASE SND_MSG_BASE+300 00504 #define SND_MSG_RECORDED_DATA SND_MSG_KERN_BASE+0 00505 #define SND_MSG_TIMED_OUT SND_MSG_KERN_BASE+1 00506 #define SND_MSG_RET_SAMPLES SND_MSG_KERN_BASE+2 00507 #define SND_MSG_RET_DEVICE SND_MSG_KERN_BASE+3 00508 #define SND_MSG_RET_STREAM SND_MSG_KERN_BASE+4 00509 #define SND_MSG_RET_PARMS SND_MSG_KERN_BASE+5 00510 #define SND_MSG_RET_VOLUME SND_MSG_KERN_BASE+6 00511 #define SND_MSG_OVERFLOW SND_MSG_KERN_BASE+7 00512 #define SND_MSG_STARTED SND_MSG_KERN_BASE+9 00513 #define SND_MSG_COMPLETED SND_MSG_KERN_BASE+10 00514 #define SND_MSG_ABORTED SND_MSG_KERN_BASE+11 00515 #define SND_MSG_PAUSED SND_MSG_KERN_BASE+12 00516 #define SND_MSG_RESUMED SND_MSG_KERN_BASE+13 00517 #define SND_MSG_ILLEGAL_MSG SND_MSG_KERN_BASE+14 00518 #define SND_MSG_RET_DSP_ERR SND_MSG_KERN_BASE+15 00519 #define SND_MSG_RET_DSP_MSG SND_MSG_KERN_BASE+16 00520 #define SND_MSG_RET_CMD SND_MSG_KERN_BASE+17 00521 #define SND_MSG_DSP_REGS SND_MSG_KERN_BASE+18 00522 #define SND_MSG_DSP_COND_TRUE SND_MSG_KERN_BASE+19 00523 00524 /* 00525 * Ioctl for retrieving device port. 00526 */ 00527 #ifdef _IO 00528 #define SOUNDIOCDEVPORT _IO('A', 8) 00529 #endif _IO 00530 00531 /* 00532 * Routine prototypes 00533 */ 00534 #if KERNEL 00535 kern_return_t snd_reply_recorded_data ( 00536 mach_port_t remote_port, // who to reply to 00537 int data_tag, // tag from region 00538 pointer_t data, // recorded data 00539 int nbytes, // number of bytes of data to send 00540 int in_line); // "Send data inline" flag. 00541 kern_return_t snd_reply_timed_out ( 00542 mach_port_t remote_port, // who to send it to. 00543 int data_tag); // tag from region 00544 kern_return_t snd_reply_ret_samples ( 00545 mach_port_t remote_port, // who to send it to. 00546 int nsamples); // number of bytes of data to record 00547 kern_return_t snd_reply_ret_device ( 00548 mach_port_t remote_port, // who to send it to. 00549 mach_port_t device_port); // returned port. 00550 kern_return_t snd_reply_ret_stream ( 00551 mach_port_t remote_port, // who to send it to. 00552 mach_port_t stream_port); // returned port. 00553 kern_return_t snd_reply_ret_parms ( 00554 mach_port_t remote_port, // who to send it to. 00555 unsigned int parms); 00556 kern_return_t snd_reply_ret_volume ( 00557 mach_port_t remote_port, // who to send it to. 00558 unsigned int volume); 00559 kern_return_t snd_reply_overflow ( 00560 mach_port_t remote_port, // who to send it to. 00561 int data_tag); // from region 00562 kern_return_t snd_reply_started ( 00563 mach_port_t remote_port, // who to send it to. 00564 int data_tag); // from region 00565 kern_return_t snd_reply_completed ( 00566 mach_port_t remote_port, // who to send it to. 00567 int data_tag); // from region 00568 kern_return_t snd_reply_aborted ( 00569 mach_port_t remote_port, // who to send it to. 00570 int data_tag); // from region 00571 kern_return_t snd_reply_paused ( 00572 mach_port_t remote_port, // who to send it to. 00573 int data_tag); // from region 00574 kern_return_t snd_reply_resumed ( 00575 mach_port_t remote_port, // who to send it to. 00576 int data_tag); // from region 00577 kern_return_t snd_reply_illegal_msg ( 00578 mach_port_t local_port, // returned port of interest 00579 mach_port_t remote_port, // who to send it to. 00580 int msg_id, // message id with illegal syntax 00581 int error); // error code 00582 kern_return_t snd_reply_dsp_err ( 00583 mach_port_t remote_port); // who to send it to. 00584 kern_return_t snd_reply_dsp_msg ( 00585 mach_port_t remote_port); // who to send it to. 00586 kern_return_t snd_reply_dsp_cmd_port( 00587 mach_port_t cmd_port, // port to return. 00588 mach_port_t remote_port); // where to return it 00589 kern_return_t snd_reply_dsp_regs ( 00590 int regs); // DSP host I/F registers (not recieve) 00591 kern_return_t snd_reply_dsp_cond_true ( // reply indicating condition true 00592 vm_address_t ret_cond); // reply_port, status and conditions 00593 #endif KERNEL 00594 00595 #endif