/* @(#)81	1.5  src/rpc/sys_idl/iovector.idl, rpc.idl.src, os2dce13, 940204  4/13/93  15:03:22 */
/*
 * COMPONENT_NAME:  rpc.idl.src 
 *
 * FUNCTIONS: 
 *
 * ORIGINS: 72
 *
 */
/*
 * (c) Copyright 1990, 1991 OPEN SOFTWARE FOUNDATION, INC.
 * ALL RIGHTS RESERVED
 * COPYRIGHT NOTICE
 * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
 * ALL RIGHTS RESERVED (DCE).  See the file named COPYRIGHT.DCE in the
 * src directory for the full copyright text.
 */
/*
 * HISTORY
 * $Log: iovector.idl,v $
 * Revision 1.1.2.3  1993/01/03  23:56:25  bbelch
 * 	Embedding copyright notice
 * 	[1993/01/03  20:15:00  bbelch]
 *
 * Revision 1.1.2.2  1992/12/23  21:19:54  zeliff
 * 	Embedding copyright notice
 * 	[1992/12/23  15:46:42  zeliff]
 * 
 * Revision 1.1  1992/01/19  03:13:35  devrcs
 * 	Initial revision
 * 
 * $EndLog$
 */
/*
**  Copyright (c) 1989 by
**      Hewlett-Packard Company, Palo Alto, Ca. & 
**      Digital Equipment Corporation, Maynard, Mass.
**
**
**  NAME:
**
**      iovector.idl
**
**  FACILITY:
**
**      Remote Procedure Call (RPC) 
**
**  ABSTRACT:
**
**  iovector buffer definitions and handling routines
**
**
*/

[local] interface rpc_iovector
{

import "dce/lbase.idl";

typedef void (*rpc_buff_dealloc_fn_t)
(
    [in]        byte_p_t        buff_addr
);

typedef struct rpc_iovector_elt_t /* OT7619, CMVC5209, rpc_iovector_elt_t  added */
{
    rpc_buff_dealloc_fn_t   buff_dealloc;
    unsigned8           flags;
    unsigned8           pad1;
    unsigned8           pad2;
    unsigned8           pad3;
    byte_p_t            buff_addr;
    unsigned32          buff_len;
    byte_p_t            data_addr;
    unsigned32          data_len;
} rpc_iovector_elt_t, *rpc_iovector_elt_p_t;

/* values for 'flags' */
const long rpc_c_iovector_elt_reused       = 0x01;


typedef struct rpc_iovector_t  /* OT7619, CMVC 5209, rpc_iovector_t added */
{
    unsigned16              num_elt;
    rpc_iovector_elt_t      elt[1];
} rpc_iovector_t, *rpc_iovector_p_t;

/*
 * R P C _ I O V E C T O R _ D E A L L O C
 *
 * Deallocate all buffers associated with all the elements of an I/O vector.
 */

void rpc_iovector_dealloc
(
    [in]    rpc_iovector_p_t    iovector,
    [out]   unsigned32          *status
);

}
