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