static void tcp_init_con(pscom_con_t *con) { int ret; int con_fd = con->arch.tcp.ufd_info.fd; assert(con_fd >= 0); con->pub.type = PSCOM_CON_TYPE_TCP; con->write_start = tcp_write_start; con->write_stop = tcp_write_stop; con->read_start = tcp_read_start; con->read_stop = tcp_read_stop; con->close = tcp_close; ret = fcntl(con_fd, F_SETFL, O_NONBLOCK); if (ret == -1) { DPRINT(D_WARN, "tcp_init_con(): fcntl(%d, F_SETFL, O_NONBLOCK) failed : %s", con_fd, strerror(errno)); } memset(&con->arch.tcp.ufd_info, 0, sizeof(con->arch.tcp.ufd_info)); con->arch.tcp.ufd_info.fd = con_fd; con->arch.tcp.ufd_info.can_read = tcp_do_read; con->arch.tcp.ufd_info.can_write = tcp_do_write; con->arch.tcp.ufd_info.priv = con; ufd_add(&pscom.ufd, &con->arch.tcp.ufd_info); pscom_con_setup_ok(con); }
static void pscom_openib_init_con(pscom_con_t *con) { con->pub.type = PSCOM_CON_TYPE_OPENIB; // Only Polling: con->write_start = pscom_poll_write_start; con->write_stop = pscom_poll_write_stop; con->read_start = pscom_poll_read_start; con->read_stop = pscom_poll_read_stop; con->poll_reader.do_read = pscom_openib_do_read; con->do_write = pscom_openib_do_write; con->close = pscom_openib_con_close; #ifdef IB_USE_RNDV con->rma_mem_register = pscom_openib_rma_mem_register; con->rma_mem_deregister = pscom_openib_rma_mem_deregister; #ifdef IB_RNDV_RDMA_WRITE con->rma_write = pscom_openib_rma_write; #else con->rma_read = pscom_openib_rma_read; #endif con->rendezvous_size = pscom.env.rendezvous_size_openib; #ifdef IB_RNDV_DISABLE_FREE_TO_OS /* We have to prevent free() from returning memory back to the OS: */ #ifndef IB_RNDV_USE_MALLOC_HOOKS if (con->rendezvous_size != ~0U) { /* See 'man mallopt(3) / M_MMAP_MAX': Setting this parameter to 0 disables the use of mmap(2) for servicing large allocation requests. */ mallopt(M_MMAP_MAX, 0); /* See 'man mallopt(3) / M_TRIM_THRESHOLD': Setting M_TRIM_THRESHOLD to -1 disables trimming completely. */ mallopt(M_TRIM_THRESHOLD, -1); } #else if(__morecore == __default_morecore) { /* Switch to our own function pscom_openib_morecore() that does not trim: */ __morecore = pscom_openib_morecore_hook; } __free_hook = pscom_openib_free_hook; #endif #endif #endif pscom_con_setup_ok(con); }
static void pscom_mxm_init_con(pscom_con_t *con) { con->pub.type = PSCOM_CON_TYPE_MXM; con->write_start = pscom_poll_write_start; con->write_stop = pscom_poll_write_stop; con->read_start = pscom_mxm_read_start; con->read_stop = pscom_mxm_read_stop; con->do_write = pscom_mxm_do_write; con->close = pscom_mxm_con_close; pscom_con_setup_ok(con); }
static void pscom_extoll_init_con(pscom_con_t *con) { con->pub.type = PSCOM_CON_TYPE_EXTOLL; // Only Polling: con->write_start = pscom_poll_write_start; con->write_stop = pscom_poll_write_stop; con->read_start = pscom_poll_read_start; con->read_stop = pscom_poll_read_stop; con->poll_reader.do_read = pscom_extoll_rma2_do_read; con->do_write = pscom_extoll_rma2_do_write; con->close = pscom_extoll_con_close; // con->rma_mem_register = pscom_extoll_rma_mem_register; // con->rma_mem_deregister = pscom_extoll_rma_mem_deregister; // con->rma_read = pscom_extoll_rma_read; con->rendezvous_size = pscom.env.rendezvous_size_extoll; reader_inc(); pscom_con_setup_ok(con); }