1*9e39c5baSBill Taylor /*
2*9e39c5baSBill Taylor * CDDL HEADER START
3*9e39c5baSBill Taylor *
4*9e39c5baSBill Taylor * The contents of this file are subject to the terms of the
5*9e39c5baSBill Taylor * Common Development and Distribution License (the "License").
6*9e39c5baSBill Taylor * You may not use this file except in compliance with the License.
7*9e39c5baSBill Taylor *
8*9e39c5baSBill Taylor * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*9e39c5baSBill Taylor * or http://www.opensolaris.org/os/licensing.
10*9e39c5baSBill Taylor * See the License for the specific language governing permissions
11*9e39c5baSBill Taylor * and limitations under the License.
12*9e39c5baSBill Taylor *
13*9e39c5baSBill Taylor * When distributing Covered Code, include this CDDL HEADER in each
14*9e39c5baSBill Taylor * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*9e39c5baSBill Taylor * If applicable, add the following below this CDDL HEADER, with the
16*9e39c5baSBill Taylor * fields enclosed by brackets "[]" replaced with your own identifying
17*9e39c5baSBill Taylor * information: Portions Copyright [yyyy] [name of copyright owner]
18*9e39c5baSBill Taylor *
19*9e39c5baSBill Taylor * CDDL HEADER END
20*9e39c5baSBill Taylor */
21*9e39c5baSBill Taylor
22*9e39c5baSBill Taylor /*
23*9e39c5baSBill Taylor * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24*9e39c5baSBill Taylor * Use is subject to license terms.
25*9e39c5baSBill Taylor */
26*9e39c5baSBill Taylor
27*9e39c5baSBill Taylor /*
28*9e39c5baSBill Taylor *
29*9e39c5baSBill Taylor * MODULE: dapl_lmr_sync_rdma.c
30*9e39c5baSBill Taylor *
31*9e39c5baSBill Taylor * PURPOSE: Non-coherent Memory Support
32*9e39c5baSBill Taylor * Description: Interfaces in this file are completely described in
33*9e39c5baSBill Taylor * the DAPL 1.2 API, Chapter 6, section 7
34*9e39c5baSBill Taylor *
35*9e39c5baSBill Taylor */
36*9e39c5baSBill Taylor
37*9e39c5baSBill Taylor #include "dapl.h"
38*9e39c5baSBill Taylor #include "dapl_adapter_util.h"
39*9e39c5baSBill Taylor
40*9e39c5baSBill Taylor /*
41*9e39c5baSBill Taylor * dapl_lmr_sync_rdma_read
42*9e39c5baSBill Taylor *
43*9e39c5baSBill Taylor * uDAPL: User Direct Access Program Library Version 1.2, 6.7.4.1
44*9e39c5baSBill Taylor *
45*9e39c5baSBill Taylor * make memory changes visible to an incoming RDMA Read operation.
46*9e39c5baSBill Taylor * This operation guarantees consistency by locally flushing the non-coherent
47*9e39c5baSBill Taylor * cache prior to it being retrieved by remote peer RDMA read operation(s)
48*9e39c5baSBill Taylor *
49*9e39c5baSBill Taylor * Input:
50*9e39c5baSBill Taylor * ia_handle
51*9e39c5baSBill Taylor * local_segments
52*9e39c5baSBill Taylor * num_segments
53*9e39c5baSBill Taylor *
54*9e39c5baSBill Taylor * Output:
55*9e39c5baSBill Taylor * none
56*9e39c5baSBill Taylor *
57*9e39c5baSBill Taylor * Returns:
58*9e39c5baSBill Taylor * DAT_SUCCESS
59*9e39c5baSBill Taylor * DAT_INVALID_HANDLE
60*9e39c5baSBill Taylor * DAT_INVALID_PARAMETER
61*9e39c5baSBill Taylor */
62*9e39c5baSBill Taylor
63*9e39c5baSBill Taylor DAT_RETURN
dapl_lmr_sync_rdma_read(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)64*9e39c5baSBill Taylor dapl_lmr_sync_rdma_read(
65*9e39c5baSBill Taylor IN DAT_IA_HANDLE ia_handle,
66*9e39c5baSBill Taylor IN const DAT_LMR_TRIPLET *local_segments,
67*9e39c5baSBill Taylor IN DAT_VLEN num_segments)
68*9e39c5baSBill Taylor {
69*9e39c5baSBill Taylor return (dapls_ib_lmr_sync_rdma_common(ia_handle, local_segments,
70*9e39c5baSBill Taylor num_segments, DAPL_MR_SYNC_RDMA_RD));
71*9e39c5baSBill Taylor }
72*9e39c5baSBill Taylor
73*9e39c5baSBill Taylor /*
74*9e39c5baSBill Taylor * dapl_lmr_sync_rdma_write
75*9e39c5baSBill Taylor *
76*9e39c5baSBill Taylor * uDAPL: User Direct Access Program Library Version 1.2, 6.7.4.1
77*9e39c5baSBill Taylor *
78*9e39c5baSBill Taylor * make effects of an incoming RDMA Write operation visible to Consumer.
79*9e39c5baSBill Taylor * This operation guarantees consistency by locally invalidating the
80*9e39c5baSBill Taylor * non-coherent cache whose buffer has been populated by remote peer
81*9e39c5baSBill Taylor * RDMA write operation(s).
82*9e39c5baSBill Taylor *
83*9e39c5baSBill Taylor * Input:
84*9e39c5baSBill Taylor * ia_handle
85*9e39c5baSBill Taylor * local_segments
86*9e39c5baSBill Taylor * num_segments
87*9e39c5baSBill Taylor *
88*9e39c5baSBill Taylor * Output:
89*9e39c5baSBill Taylor * none
90*9e39c5baSBill Taylor *
91*9e39c5baSBill Taylor * Returns:
92*9e39c5baSBill Taylor * DAT_SUCCESS
93*9e39c5baSBill Taylor * DAT_INVALID_HANDLE
94*9e39c5baSBill Taylor * DAT_INVALID_PARAMETER
95*9e39c5baSBill Taylor */
96*9e39c5baSBill Taylor
97*9e39c5baSBill Taylor DAT_RETURN
dapl_lmr_sync_rdma_write(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)98*9e39c5baSBill Taylor dapl_lmr_sync_rdma_write(
99*9e39c5baSBill Taylor IN DAT_IA_HANDLE ia_handle,
100*9e39c5baSBill Taylor IN const DAT_LMR_TRIPLET *local_segments,
101*9e39c5baSBill Taylor IN DAT_VLEN num_segments)
102*9e39c5baSBill Taylor {
103*9e39c5baSBill Taylor return (dapls_ib_lmr_sync_rdma_common(ia_handle, local_segments,
104*9e39c5baSBill Taylor num_segments, DAPL_MR_SYNC_RDMA_WR));
105*9e39c5baSBill Taylor }
106