1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright (c) 2002-2004, Network Appliance, Inc. All rights reserved. 24 */ 25 26 /* 27 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 28 * Use is subject to license terms. 29 */ 30 31 32 #ifndef _DAT_REDIRECTION_H_ 33 #define _DAT_REDIRECTION_H_ 34 35 #pragma ident "%Z%%M% %I% %E% SMI" 36 37 /* 38 * 39 * HEADER: dat_redirection.h 40 * 41 * PURPOSE: Defines the common redirection macros 42 * 43 * Description: Macros to invoke DAPL functions from the dat_registry 44 * 45 * Mapping rules: 46 * All global symbols are prepended with "DAT_" or "dat_" 47 * All DAT objects have an 'api' tag which, such as 'ep' or 'lmr' 48 * The method table is in the provider definition structure. 49 * 50 * 51 * 52 */ 53 54 #ifdef __cplusplus 55 extern "C" { 56 #endif 57 58 typedef struct dat_provider DAT_PROVIDER; 59 60 #ifndef DAT_HANDLE_TO_PROVIDER 61 62 /* 63 * A utility macro to fetch the Provider Library for any object 64 * 65 * An alternate version could be defined for single library systems. 66 * it would look something like: 67 * extern const struct dat_ia my_single_ia_provider; 68 * #define DAT_HANDLE_TO_PROVIDER(ignore) &my_single_ia_provider 69 * 70 * This would allow a good compiler to avoid indirection overhead when 71 * making function calls. 72 */ 73 74 #define DAT_HANDLE_TO_PROVIDER(handle) (*(DAT_PROVIDER **)(handle)) 75 #endif 76 77 #define DAT_IA_QUERY(ia, evd, ia_msk, ia_ptr, p_msk, p_ptr) \ 78 (*DAT_HANDLE_TO_PROVIDER(ia)->ia_query_func)(\ 79 (ia),\ 80 (evd),\ 81 (ia_msk),\ 82 (ia_ptr),\ 83 (p_msk),\ 84 (p_ptr)) 85 86 #define DAT_SET_CONSUMER_CONTEXT(handle, context) \ 87 (*DAT_HANDLE_TO_PROVIDER(handle)->set_consumer_context_func)(\ 88 (handle),\ 89 (context)) 90 91 #define DAT_GET_CONSUMER_CONTEXT(handle, context) \ 92 (*DAT_HANDLE_TO_PROVIDER(handle)->get_consumer_context_func)(\ 93 (handle),\ 94 (context)) 95 96 #define DAT_GET_HANDLE_TYPE(handle, handle_type) \ 97 (*DAT_HANDLE_TO_PROVIDER(handle)->get_handle_type_func)(\ 98 (handle),\ 99 (handle_type)) 100 101 #define DAT_CR_QUERY(cr, mask, param) \ 102 (*DAT_HANDLE_TO_PROVIDER(cr)->cr_query_func)(\ 103 (cr),\ 104 (mask),\ 105 (param)) 106 107 #define DAT_CR_ACCEPT(cr, ep, size, pdata) \ 108 (*DAT_HANDLE_TO_PROVIDER(cr)->cr_accept_func)(\ 109 (cr),\ 110 (ep),\ 111 (size),\ 112 (pdata)) 113 114 #define DAT_CR_REJECT(cr) \ 115 (*DAT_HANDLE_TO_PROVIDER(cr)->cr_reject_func)(\ 116 (cr)) 117 118 #define DAT_CR_HANDOFF(cr, qual) \ 119 (*DAT_HANDLE_TO_PROVIDER(cr)->cr_handoff_func)(\ 120 (cr),\ 121 (qual)) 122 123 #define DAT_EVD_QUERY(evd, mask, param) \ 124 (*DAT_HANDLE_TO_PROVIDER(evd)->evd_query_func)(\ 125 (evd),\ 126 (mask),\ 127 (param)) 128 129 #define DAT_EVD_RESIZE(evd, qsize) \ 130 (*DAT_HANDLE_TO_PROVIDER(evd)->evd_resize_func)(\ 131 (evd),\ 132 (qsize)) 133 134 #define DAT_EVD_POST_SE(evd, event) \ 135 (*DAT_HANDLE_TO_PROVIDER(evd)->evd_post_se_func)(\ 136 (evd),\ 137 (event)) 138 139 #define DAT_EVD_DEQUEUE(evd, event) \ 140 (*DAT_HANDLE_TO_PROVIDER(evd)->evd_dequeue_func)(\ 141 (evd),\ 142 (event)) 143 144 #define DAT_EVD_FREE(evd)\ 145 (*DAT_HANDLE_TO_PROVIDER(evd)->evd_free_func)(\ 146 (evd)) 147 148 #define DAT_EP_CREATE(ia, pz, in_evd, out_evd, connect_evd, attr, ep) \ 149 (*DAT_HANDLE_TO_PROVIDER(ia)->ep_create_func)(\ 150 (ia),\ 151 (pz),\ 152 (in_evd),\ 153 (out_evd),\ 154 (connect_evd),\ 155 (attr),\ 156 (ep)) 157 158 #define DAT_EP_CREATE_WITH_SRQ(ia, pz, in_evd, out_evd, connect_evd, srq,\ 159 attr, ep) \ 160 (*DAT_HANDLE_TO_PROVIDER(ia)->ep_create_with_srq_func)(\ 161 (ia),\ 162 (pz),\ 163 (in_evd),\ 164 (out_evd),\ 165 (connect_evd),\ 166 (srq),\ 167 (attr),\ 168 (ep)) 169 170 #define DAT_EP_QUERY(ep, mask, param) \ 171 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_query_func)(\ 172 (ep),\ 173 (mask),\ 174 (param)) 175 176 #define DAT_EP_MODIFY(ep, mask, param) \ 177 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_modify_func)(\ 178 (ep),\ 179 (mask),\ 180 (param)) 181 182 #define DAT_EP_CONNECT(ep, ia_addr, conn_qual, timeout, psize, pdata, \ 183 qos, flags) \ 184 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_connect_func)(\ 185 (ep),\ 186 (ia_addr),\ 187 (conn_qual),\ 188 (timeout),\ 189 (psize),\ 190 (pdata),\ 191 (qos),\ 192 (flags)) 193 194 #define DAT_EP_DUP_CONNECT(ep, dup, timeout, psize, pdata, qos) \ 195 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_dup_connect_func)(\ 196 (ep),\ 197 (dup),\ 198 (timeout),\ 199 (psize),\ 200 (pdata),\ 201 (qos)) 202 203 #define DAT_EP_DISCONNECT(ep, flags) \ 204 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_disconnect_func)(\ 205 (ep),\ 206 (flags)) 207 208 #define DAT_EP_POST_SEND(ep, size, lbuf, cookie, flags) \ 209 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_send_func)(\ 210 (ep),\ 211 (size),\ 212 (lbuf),\ 213 (cookie),\ 214 (flags)) 215 216 #define DAT_EP_POST_RECV(ep, size, lbuf, cookie, flags) \ 217 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_recv_func)(\ 218 (ep),\ 219 (size),\ 220 (lbuf),\ 221 (cookie),\ 222 (flags)) 223 224 #define DAT_EP_POST_RDMA_READ(ep, size, lbuf, cookie, rbuf, flags) \ 225 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_rdma_read_func)(\ 226 (ep),\ 227 (size),\ 228 (lbuf),\ 229 (cookie),\ 230 (rbuf),\ 231 (flags)) 232 233 #define DAT_EP_POST_RDMA_WRITE(ep, size, lbuf, cookie, rbuf, flags) \ 234 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_rdma_write_func)(\ 235 (ep),\ 236 (size),\ 237 (lbuf),\ 238 (cookie),\ 239 (rbuf),\ 240 (flags)) 241 242 #define DAT_EP_GET_STATUS(ep, ep_state, recv_idle, request_idle) \ 243 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_get_status_func)(\ 244 (ep), \ 245 (ep_state),\ 246 (recv_idle),\ 247 (request_idle)) 248 249 #define DAT_EP_FREE(ep)\ 250 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_free_func)(\ 251 (ep)) 252 253 #define DAT_EP_RESET(ep)\ 254 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_reset_func)(\ 255 (ep)) 256 257 #define DAT_EP_RECV_QUERY(ep, nbuf_alloc, buf_span) \ 258 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_recv_query_func)(\ 259 (ep),\ 260 (nbuf_alloc),\ 261 (buf_span)) 262 263 #define DAT_EP_SET_WATERMARK(ep, soft_wm, hard_wm) \ 264 (*DAT_HANDLE_TO_PROVIDER(ep)->ep_set_watermark_func)(\ 265 (ep),\ 266 (soft_wm),\ 267 (hard_wm)) 268 269 #define DAT_LMR_QUERY(lmr, mask, param)\ 270 (*DAT_HANDLE_TO_PROVIDER(lmr)->lmr_query_func)(\ 271 (lmr),\ 272 (mask),\ 273 (param)) 274 275 #define DAT_LMR_FREE(lmr)\ 276 (*DAT_HANDLE_TO_PROVIDER(lmr)->lmr_free_func)(\ 277 (lmr)) 278 279 #define DAT_LMR_SYNC_RDMA_READ(ia, lbuf, size) \ 280 (*DAT_HANDLE_TO_PROVIDER(ia)->lmr_sync_rdma_read_func)(\ 281 (ia), \ 282 (lbuf), \ 283 (size)) 284 285 #define DAT_LMR_SYNC_RDMA_WRITE(ia, lbuf, size) \ 286 (*DAT_HANDLE_TO_PROVIDER(ia)->lmr_sync_rdma_write_func)(\ 287 (ia), \ 288 (lbuf), \ 289 (size)) 290 291 #define DAT_RMR_CREATE(pz, rmr) \ 292 (*DAT_HANDLE_TO_PROVIDER(pz)->rmr_create_func)(\ 293 (pz),\ 294 (rmr)) 295 296 #define DAT_RMR_QUERY(rmr, mask, param) \ 297 (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_query_func)(\ 298 (rmr),\ 299 (mask),\ 300 (param)) 301 302 #define DAT_RMR_BIND(rmr, lmr, mem_priv, ep, cookie, flags, context) \ 303 (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_bind_func)(\ 304 (rmr),\ 305 (lmr),\ 306 (mem_priv),\ 307 (ep),\ 308 (cookie),\ 309 (flags),\ 310 (context)) 311 312 #define DAT_RMR_FREE(rmr)\ 313 (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_free_func)(\ 314 (rmr)) 315 316 #define DAT_PSP_CREATE(ia, conn_qual, evd, flags, handle) \ 317 (*DAT_HANDLE_TO_PROVIDER(ia)->psp_create_func)(\ 318 (ia),\ 319 (conn_qual),\ 320 (evd),\ 321 (flags),\ 322 (handle)) 323 324 #define DAT_PSP_CREATE_ANY(ia, conn_qual, evd, flags, handle) \ 325 (*DAT_HANDLE_TO_PROVIDER(ia)->psp_create_any_func)(\ 326 (ia), \ 327 (conn_qual), \ 328 (evd), \ 329 (flags), \ 330 (handle)) 331 332 #define DAT_PSP_QUERY(psp, mask, param) \ 333 (*DAT_HANDLE_TO_PROVIDER(psp)->psp_query_func)(\ 334 (psp),\ 335 (mask),\ 336 (param)) 337 338 #define DAT_PSP_FREE(psp)\ 339 (*DAT_HANDLE_TO_PROVIDER(psp)->psp_free_func)(\ 340 (psp)) 341 342 #define DAT_RSP_CREATE(ia, conn_qual, ep, evd, handle) \ 343 (*DAT_HANDLE_TO_PROVIDER(ia)->rsp_create_func)(\ 344 (ia),\ 345 (conn_qual),\ 346 (ep),\ 347 (evd),\ 348 (handle)) 349 350 #define DAT_RSP_QUERY(rsp, mask, param) \ 351 (*DAT_HANDLE_TO_PROVIDER(rsp)->rsp_query_func)(\ 352 (rsp),\ 353 (mask),\ 354 (param)) 355 356 #define DAT_RSP_FREE(rsp)\ 357 (*DAT_HANDLE_TO_PROVIDER(rsp)->rsp_free_func)(\ 358 (rsp)) 359 360 #define DAT_PZ_CREATE(ia, pz) \ 361 (*DAT_HANDLE_TO_PROVIDER(ia)->pz_create_func)(\ 362 (ia),\ 363 (pz)) 364 365 #define DAT_PZ_QUERY(pz, mask, param) \ 366 (*DAT_HANDLE_TO_PROVIDER(pz)->pz_query_func)(\ 367 (pz),\ 368 (mask),\ 369 (param)) 370 371 #define DAT_PZ_FREE(pz) \ 372 (*DAT_HANDLE_TO_PROVIDER(pz)->pz_free_func)(\ 373 (pz)) 374 375 #define DAT_SRQ_CREATE(ia, pz, attr, srq) \ 376 (*DAT_HANDLE_TO_PROVIDER(ia)->srq_create_func)(\ 377 (ia),\ 378 (pz),\ 379 (attr),\ 380 (srq)) 381 382 #define DAT_SRQ_SET_LW(srq, lw) \ 383 (*DAT_HANDLE_TO_PROVIDER(srq)->srq_set_lw_func)(\ 384 (srq),\ 385 (lw)) 386 387 #define DAT_SRQ_FREE(srq) \ 388 (*DAT_HANDLE_TO_PROVIDER(srq)->srq_free_func)(\ 389 (srq)) 390 391 #define DAT_SRQ_QUERY(srq, mask, param) \ 392 (*DAT_HANDLE_TO_PROVIDER(srq)->srq_query_func)(\ 393 (srq),\ 394 (mask),\ 395 (param)) 396 397 #define DAT_SRQ_RESIZE(srq, qsize) \ 398 (*DAT_HANDLE_TO_PROVIDER(srq)->srq_resize_func)(\ 399 (srq),\ 400 (qsize)) 401 402 #define DAT_SRQ_POST_RECV(srq, size, lbuf, cookie) \ 403 (*DAT_HANDLE_TO_PROVIDER(srq)->srq_post_recv_func)(\ 404 (srq),\ 405 (size),\ 406 (lbuf),\ 407 (cookie)) 408 409 /* 410 * FUNCTION PROTOTYPES 411 */ 412 413 typedef DAT_RETURN (*DAT_IA_OPEN_FUNC)( 414 IN const DAT_NAME_PTR, /* provider */ 415 IN DAT_COUNT, /* asynch_evd_min_qlen */ 416 INOUT DAT_EVD_HANDLE *, /* asynch_evd_handle */ 417 OUT DAT_IA_HANDLE *); /* ia_handle */ 418 419 typedef DAT_RETURN (*DAT_IA_OPENV_FUNC)( 420 IN const DAT_NAME_PTR, /* provider */ 421 IN DAT_COUNT, /* asynch_evd_min_qlen */ 422 INOUT DAT_EVD_HANDLE *, /* asynch_evd_handle */ 423 OUT DAT_IA_HANDLE *, /* ia_handle */ 424 IN DAT_UINT32, /* dat major version number */ 425 IN DAT_UINT32, /* dat minor version number */ 426 IN DAT_BOOLEAN); /* dat thread safety */ 427 428 typedef DAT_RETURN (*DAT_IA_CLOSE_FUNC)( 429 IN DAT_IA_HANDLE, /* ia_handle */ 430 IN DAT_CLOSE_FLAGS); /* close_flags */ 431 432 typedef DAT_RETURN (*DAT_IA_QUERY_FUNC)( 433 IN DAT_IA_HANDLE, /* ia handle */ 434 OUT DAT_EVD_HANDLE *, /* async_evd_handle */ 435 IN DAT_IA_ATTR_MASK, /* ia_attr_mask */ 436 OUT DAT_IA_ATTR *, /* ia_attr */ 437 IN DAT_PROVIDER_ATTR_MASK, /* provider_attr_mask */ 438 OUT DAT_PROVIDER_ATTR *); /* provider_attr */ 439 440 /* helper functions */ 441 442 typedef DAT_RETURN (*DAT_SET_CONSUMER_CONTEXT_FUNC)( 443 IN DAT_HANDLE, /* dat handle */ 444 IN DAT_CONTEXT); /* context */ 445 446 typedef DAT_RETURN (*DAT_GET_CONSUMER_CONTEXT_FUNC)( 447 IN DAT_HANDLE, /* dat handle */ 448 OUT DAT_CONTEXT *); /* context */ 449 450 typedef DAT_RETURN (*DAT_GET_HANDLE_TYPE_FUNC)( 451 IN DAT_HANDLE, 452 OUT DAT_HANDLE_TYPE *); 453 454 /* CR Functions */ 455 456 typedef DAT_RETURN (*DAT_CR_QUERY_FUNC)( 457 IN DAT_CR_HANDLE, /* cr_handle */ 458 IN DAT_CR_PARAM_MASK, /* cr_param_mask */ 459 OUT DAT_CR_PARAM *); /* cr_param */ 460 461 typedef DAT_RETURN (*DAT_CR_ACCEPT_FUNC)( 462 IN DAT_CR_HANDLE, /* cr_handle */ 463 IN DAT_EP_HANDLE, /* ep_handle */ 464 IN DAT_COUNT, /* private_data_size */ 465 IN const DAT_PVOID); /* private_data */ 466 467 typedef DAT_RETURN (*DAT_CR_REJECT_FUNC)( 468 IN DAT_CR_HANDLE); 469 470 /* 471 * For DAT-1.1 this function is defined for both uDAPL and kDAPL. 472 * For DAT-1.0 it was only defined for uDAPL. 473 */ 474 typedef DAT_RETURN (*DAT_CR_HANDOFF_FUNC)( 475 IN DAT_CR_HANDLE, /* cr_handle */ 476 IN DAT_CONN_QUAL); /* handoff */ 477 478 /* EVD Functions */ 479 480 typedef DAT_RETURN (*DAT_EVD_RESIZE_FUNC)( 481 IN DAT_EVD_HANDLE, /* evd_handle */ 482 IN DAT_COUNT); /* evd_min_qlen */ 483 484 typedef DAT_RETURN (*DAT_EVD_POST_SE_FUNC)( 485 IN DAT_EVD_HANDLE, /* evd_handle */ 486 IN const DAT_EVENT *); /* event */ 487 488 typedef DAT_RETURN (*DAT_EVD_DEQUEUE_FUNC)( 489 IN DAT_EVD_HANDLE, /* evd_handle */ 490 OUT DAT_EVENT *); /* event */ 491 492 typedef DAT_RETURN (*DAT_EVD_FREE_FUNC)( 493 IN DAT_EVD_HANDLE); /* evd_handle */ 494 495 typedef DAT_RETURN (*DAT_EVD_QUERY_FUNC)( 496 IN DAT_EVD_HANDLE, /* evd_handle */ 497 IN DAT_EVD_PARAM_MASK, /* evd_param_mask */ 498 OUT DAT_EVD_PARAM *); /* evd_param */ 499 500 /* EP functions */ 501 502 typedef DAT_RETURN (*DAT_EP_CREATE_FUNC)( 503 IN DAT_IA_HANDLE, /* ia_handle */ 504 IN DAT_PZ_HANDLE, /* pz_handle */ 505 IN DAT_EVD_HANDLE, /* recv_completion_evd_handle */ 506 IN DAT_EVD_HANDLE, /* request_completion_evd_handle */ 507 IN DAT_EVD_HANDLE, /* connect_evd_handle */ 508 IN const DAT_EP_ATTR *, /* ep_attributes */ 509 OUT DAT_EP_HANDLE *); /* ep_handle */ 510 511 typedef DAT_RETURN (*DAT_EP_CREATE_WITH_SRQ_FUNC)( 512 IN DAT_IA_HANDLE, /* ia_handle */ 513 IN DAT_PZ_HANDLE, /* pz_handle */ 514 IN DAT_EVD_HANDLE, /* recv_evd_handle */ 515 IN DAT_EVD_HANDLE, /* request_evd_handle */ 516 IN DAT_EVD_HANDLE, /* connect_evd_handle */ 517 IN DAT_SRQ_HANDLE, /* srq_handle */ 518 IN const DAT_EP_ATTR *, /* ep_attributes */ 519 OUT DAT_EP_HANDLE *); /* ep_handle */ 520 521 typedef DAT_RETURN (*DAT_EP_QUERY_FUNC)( 522 IN DAT_EP_HANDLE, /* ep_handle */ 523 IN DAT_EP_PARAM_MASK, /* ep_param_mask */ 524 OUT DAT_EP_PARAM *); /* ep_param */ 525 526 typedef DAT_RETURN (*DAT_EP_MODIFY_FUNC)( 527 IN DAT_EP_HANDLE, /* ep_handle */ 528 IN DAT_EP_PARAM_MASK, /* ep_param_mask */ 529 IN const DAT_EP_PARAM *); /* ep_param */ 530 531 typedef DAT_RETURN (*DAT_EP_CONNECT_FUNC)( 532 IN DAT_EP_HANDLE, /* ep_handle */ 533 IN DAT_IA_ADDRESS_PTR, /* remote_ia_address */ 534 IN DAT_CONN_QUAL, /* remote_conn_qual */ 535 IN DAT_TIMEOUT, /* timeout */ 536 IN DAT_COUNT, /* private_data_size */ 537 IN const DAT_PVOID, /* private_data */ 538 IN DAT_QOS, /* quality_of_service */ 539 IN DAT_CONNECT_FLAGS); /* connect_flags */ 540 541 typedef DAT_RETURN (*DAT_EP_DUP_CONNECT_FUNC)( 542 IN DAT_EP_HANDLE, /* ep_handle */ 543 IN DAT_EP_HANDLE, /* ep_dup_handle */ 544 IN DAT_TIMEOUT, /* timeout */ 545 IN DAT_COUNT, /* private_data_size */ 546 IN const DAT_PVOID, /* private_data */ 547 IN DAT_QOS); /* quality_of_service */ 548 549 typedef DAT_RETURN (*DAT_EP_DISCONNECT_FUNC)( 550 IN DAT_EP_HANDLE, /* ep_handle */ 551 IN DAT_CLOSE_FLAGS); /* close_flags */ 552 553 typedef DAT_RETURN (*DAT_EP_POST_SEND_FUNC)( 554 IN DAT_EP_HANDLE, /* ep_handle */ 555 IN DAT_COUNT, /* num_segments */ 556 IN DAT_LMR_TRIPLET *, /* local_iov */ 557 IN DAT_DTO_COOKIE, /* user_cookie */ 558 IN DAT_COMPLETION_FLAGS); /* completion_flags */ 559 560 typedef DAT_RETURN (*DAT_EP_POST_RECV_FUNC)( 561 IN DAT_EP_HANDLE, /* ep_handle */ 562 IN DAT_COUNT, /* num_segments */ 563 IN DAT_LMR_TRIPLET *, /* local_iov */ 564 IN DAT_DTO_COOKIE, /* user_cookie */ 565 IN DAT_COMPLETION_FLAGS); /* completion_flags */ 566 567 typedef DAT_RETURN (*DAT_EP_POST_RDMA_READ_FUNC)( 568 IN DAT_EP_HANDLE, /* ep_handle */ 569 IN DAT_COUNT, /* num_segments */ 570 IN DAT_LMR_TRIPLET *, /* local_iov */ 571 IN DAT_DTO_COOKIE, /* user_cookie */ 572 IN const DAT_RMR_TRIPLET *, /* remote_iov */ 573 IN DAT_COMPLETION_FLAGS); /* completion_flags */ 574 575 typedef DAT_RETURN (*DAT_EP_POST_RDMA_WRITE_FUNC)( 576 IN DAT_EP_HANDLE, /* ep_handle */ 577 IN DAT_COUNT, /* num_segments */ 578 IN DAT_LMR_TRIPLET *, /* local_iov */ 579 IN DAT_DTO_COOKIE, /* user_cookie */ 580 IN const DAT_RMR_TRIPLET *, /* remote_iov */ 581 IN DAT_COMPLETION_FLAGS); /* completion_flags */ 582 583 typedef DAT_RETURN (*DAT_EP_GET_STATUS_FUNC)( 584 IN DAT_EP_HANDLE, /* ep_handle */ 585 OUT DAT_EP_STATE *, /* ep_state */ 586 OUT DAT_BOOLEAN *, /* recv_idle */ 587 OUT DAT_BOOLEAN *); /* request_idle */ 588 589 typedef DAT_RETURN (*DAT_EP_FREE_FUNC)( 590 IN DAT_EP_HANDLE); /* ep_handle */ 591 592 typedef DAT_RETURN (*DAT_EP_RESET_FUNC)( 593 IN DAT_EP_HANDLE); /* ep_handle */ 594 595 typedef DAT_RETURN (*DAT_EP_RECV_QUERY_FUNC)( 596 IN DAT_EP_HANDLE, /* ep_handle */ 597 OUT DAT_COUNT *, /* nbufs_allocated */ 598 OUT DAT_COUNT *); /* bufs_alloc_span */ 599 600 typedef DAT_RETURN (*DAT_EP_SET_WATERMARK_FUNC)( 601 IN DAT_EP_HANDLE, /* ep_handle */ 602 IN DAT_COUNT, /* soft_high_watermark */ 603 IN DAT_COUNT); /* hard_high_watermark */ 604 605 /* LMR functions */ 606 607 typedef DAT_RETURN (*DAT_LMR_FREE_FUNC)( 608 IN DAT_LMR_HANDLE); 609 610 typedef DAT_RETURN (*DAT_LMR_QUERY_FUNC)( 611 IN DAT_LMR_HANDLE, /* lmr_handle */ 612 IN DAT_LMR_PARAM_MASK, /* lmr_param_mask */ 613 OUT DAT_LMR_PARAM *); /* lmr_param */ 614 615 typedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_READ_FUNC)( 616 IN DAT_IA_HANDLE, /* ia_handle */ 617 IN const DAT_LMR_TRIPLET *, /* local_segments */ 618 IN DAT_VLEN); /* num_segments */ 619 620 typedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_WRITE_FUNC)( 621 IN DAT_IA_HANDLE, /* ia_handle */ 622 IN const DAT_LMR_TRIPLET *, /* local_segments */ 623 IN DAT_VLEN); /* num_segments */ 624 625 /* RMR Functions */ 626 627 typedef DAT_RETURN (*DAT_RMR_CREATE_FUNC)( 628 IN DAT_PZ_HANDLE, /* pz_handle */ 629 OUT DAT_RMR_HANDLE *); /* rmr_handle */ 630 631 typedef DAT_RETURN (*DAT_RMR_QUERY_FUNC)( 632 IN DAT_RMR_HANDLE, /* rmr_handle */ 633 IN DAT_RMR_PARAM_MASK, /* rmr_param_mask */ 634 OUT DAT_RMR_PARAM *); /* rmr_param */ 635 636 typedef DAT_RETURN (*DAT_RMR_BIND_FUNC)( 637 IN DAT_RMR_HANDLE, /* rmr_handle */ 638 IN const DAT_LMR_TRIPLET *, /* lmr_triplet */ 639 IN DAT_MEM_PRIV_FLAGS, /* mem_priv */ 640 IN DAT_EP_HANDLE, /* ep_handle */ 641 IN DAT_RMR_COOKIE, /* user_cookie */ 642 IN DAT_COMPLETION_FLAGS, /* completion_flags */ 643 OUT DAT_RMR_CONTEXT *); /* context */ 644 645 typedef DAT_RETURN (*DAT_RMR_FREE_FUNC)( 646 IN DAT_RMR_HANDLE); 647 648 /* PSP Functions */ 649 650 typedef DAT_RETURN (*DAT_PSP_CREATE_FUNC)( 651 IN DAT_IA_HANDLE, /* ia_handle */ 652 IN DAT_CONN_QUAL, /* conn_qual */ 653 IN DAT_EVD_HANDLE, /* evd_handle */ 654 IN DAT_PSP_FLAGS, /* psp_flags */ 655 OUT DAT_PSP_HANDLE *); /* psp_handle */ 656 657 typedef DAT_RETURN (*DAT_PSP_CREATE_ANY_FUNC)( 658 IN DAT_IA_HANDLE, /* ia_handle */ 659 OUT DAT_CONN_QUAL *, /* conn_qual */ 660 IN DAT_EVD_HANDLE, /* evd_handle */ 661 IN DAT_PSP_FLAGS, /* psp_flags */ 662 OUT DAT_PSP_HANDLE *); /* psp_handle */ 663 664 typedef DAT_RETURN (*DAT_PSP_QUERY_FUNC)( 665 IN DAT_PSP_HANDLE, /* psp_handle */ 666 IN DAT_PSP_PARAM_MASK, /* psp_param_mask */ 667 OUT DAT_PSP_PARAM *); /* *psp_param */ 668 669 typedef DAT_RETURN (*DAT_PSP_FREE_FUNC)( 670 IN DAT_PSP_HANDLE); /* psp_handle */ 671 672 /* RSP Functions */ 673 674 typedef DAT_RETURN (*DAT_RSP_CREATE_FUNC)( 675 IN DAT_IA_HANDLE, /* ia_handle */ 676 IN DAT_CONN_QUAL, /* conn_qual */ 677 IN DAT_EP_HANDLE, /* ep_handle */ 678 IN DAT_EVD_HANDLE, /* evd_handle */ 679 OUT DAT_RSP_HANDLE *); /* rsp_handle */ 680 681 typedef DAT_RETURN (*DAT_RSP_QUERY_FUNC) ( 682 IN DAT_RSP_HANDLE, /* rsp_handle */ 683 IN DAT_RSP_PARAM_MASK, /* rsp_param_mask */ 684 OUT DAT_RSP_PARAM *); /* *rsp_param */ 685 686 typedef DAT_RETURN (*DAT_RSP_FREE_FUNC)( 687 IN DAT_RSP_HANDLE); /* rsp_handle */ 688 689 /* PZ Functions */ 690 691 typedef DAT_RETURN (*DAT_PZ_CREATE_FUNC)( 692 IN DAT_IA_HANDLE, /* ia_handle */ 693 OUT DAT_PZ_HANDLE *); /* pz_handle */ 694 695 typedef DAT_RETURN (*DAT_PZ_QUERY_FUNC)( 696 IN DAT_PZ_HANDLE, /* pz_handle */ 697 IN DAT_PZ_PARAM_MASK, /* pz_param_mask */ 698 OUT DAT_PZ_PARAM *); /* pz_param */ 699 700 typedef DAT_RETURN (*DAT_PZ_FREE_FUNC)( 701 IN DAT_PZ_HANDLE); /* pz_handle */ 702 703 /* SRQ Functions */ 704 705 typedef DAT_RETURN (*DAT_SRQ_CREATE_FUNC)( 706 IN DAT_IA_HANDLE, /* ia_handle */ 707 IN DAT_PZ_HANDLE, /* pz_handle */ 708 IN DAT_SRQ_ATTR *, /* srq_attr */ 709 OUT DAT_SRQ_HANDLE *); /* srq_handle */ 710 711 typedef DAT_RETURN (*DAT_SRQ_SET_LW_FUNC)( 712 IN DAT_SRQ_HANDLE, /* srq_handle */ 713 IN DAT_COUNT); /* low_watermark */ 714 715 typedef DAT_RETURN (*DAT_SRQ_FREE_FUNC)( 716 IN DAT_SRQ_HANDLE); /* srq_handle */ 717 718 typedef DAT_RETURN (*DAT_SRQ_QUERY_FUNC)( 719 IN DAT_SRQ_HANDLE, /* srq_handle */ 720 IN DAT_SRQ_PARAM_MASK, /* srq_param_mask */ 721 OUT DAT_SRQ_PARAM *); /* srq_param */ 722 723 typedef DAT_RETURN (*DAT_SRQ_RESIZE_FUNC)( 724 IN DAT_SRQ_HANDLE, /* srq_handle */ 725 IN DAT_COUNT); /* srq_max_recv_dto */ 726 727 typedef DAT_RETURN (*DAT_SRQ_POST_RECV_FUNC)( 728 IN DAT_SRQ_HANDLE, /* srq_handle */ 729 IN DAT_COUNT, /* num_segments */ 730 IN DAT_LMR_TRIPLET *, /* local_iov */ 731 IN DAT_DTO_COOKIE); /* user_cookie */ 732 733 #ifdef __cplusplus 734 } 735 #endif 736 737 #endif /* _DAT_REDIRECTION_H_ */ 738