Make openib compile again for Windows.
Update the CMake script for checking mca subdirs. Add windows support for __attribute__ packed structures. Define usleep and posix_memalign with equivalent windows functions. And a few minor fixes, type casts. This commit was SVN r24429.
Этот коммит содержится в:
родитель
baad4e1844
Коммит
90eeba252e
@ -151,22 +151,26 @@ FOREACH (MCA_FRAMEWORK ${MCA_FRAMEWORK_LIST})
|
|||||||
|
|
||||||
IF(BUILD_COMPONENT)
|
IF(BUILD_COMPONENT)
|
||||||
|
|
||||||
IF(NOT COMPONENT_FILES)
|
|
||||||
FILE(GLOB_RECURSE COMPONENT_FILES "${CURRENT_PATH}/*.C" "${CURRENT_PATH}/*.h"
|
|
||||||
"${CURRENT_PATH}/*.cc" "${CURRENT_PATH}/*.cpp")
|
|
||||||
|
|
||||||
#check exclude list
|
#check exclude list
|
||||||
SET(EXCLUDE_LIST "")
|
SET(EXCLUDE_LIST "")
|
||||||
FILE(STRINGS ${CURRENT_PATH}/.windows EXCLUDE_LIST REGEX "^exclude_list=")
|
FILE(STRINGS ${CURRENT_PATH}/.windows EXCLUDE_LIST REGEX "^exclude_list=")
|
||||||
|
|
||||||
IF(NOT EXCLUDE_LIST STREQUAL "")
|
IF(NOT EXCLUDE_LIST STREQUAL "")
|
||||||
STRING(REPLACE "exclude_list=" "" EXCLUDE_LIST ${EXCLUDE_LIST})
|
STRING(REPLACE "exclude_list=" "" EXCLUDE_LIST ${EXCLUDE_LIST})
|
||||||
ENDIF(NOT EXCLUDE_LIST STREQUAL "")
|
FILE(GLOB_RECURSE RESULT_FILES "${CURRENT_PATH}/*.C" "${CURRENT_PATH}/*.h"
|
||||||
|
"${CURRENT_PATH}/*.cc" "${CURRENT_PATH}/*.cpp")
|
||||||
|
|
||||||
# remove the files in the exclude list
|
# remove the files in the exclude list
|
||||||
FOREACH(FILE ${EXCLUDE_LIST})
|
FOREACH(FILE ${EXCLUDE_LIST})
|
||||||
LIST(REMOVE_ITEM COMPONENT_FILES "${CURRENT_PATH}/${FILE}")
|
LIST(REMOVE_ITEM RESULT_FILES "${CURRENT_PATH}/${FILE}")
|
||||||
ENDFOREACH(FILE)
|
ENDFOREACH(FILE)
|
||||||
|
|
||||||
|
# append the rest of the files to the main list
|
||||||
|
SET(COMPONENT_FILES ${COMPONENT_FILES} ${RESULT_FILES})
|
||||||
|
ENDIF(NOT EXCLUDE_LIST STREQUAL "")
|
||||||
|
|
||||||
|
IF(NOT COMPONENT_FILES)
|
||||||
|
FILE(GLOB_RECURSE COMPONENT_FILES "${CURRENT_PATH}/*.C" "${CURRENT_PATH}/*.h")
|
||||||
ENDIF(NOT COMPONENT_FILES)
|
ENDIF(NOT COMPONENT_FILES)
|
||||||
|
|
||||||
# check the library build type
|
# check the library build type
|
||||||
|
@ -527,8 +527,8 @@ static int openib_reg_mr(void *reg_data, void *base, size_t size,
|
|||||||
{
|
{
|
||||||
mca_btl_openib_device_t *device = (mca_btl_openib_device_t*)reg_data;
|
mca_btl_openib_device_t *device = (mca_btl_openib_device_t*)reg_data;
|
||||||
mca_btl_openib_reg_t *openib_reg = (mca_btl_openib_reg_t*)reg;
|
mca_btl_openib_reg_t *openib_reg = (mca_btl_openib_reg_t*)reg;
|
||||||
enum ibv_access_flags access_flag = IBV_ACCESS_LOCAL_WRITE |
|
enum ibv_access_flags access_flag = (ibv_access_flags) (IBV_ACCESS_LOCAL_WRITE |
|
||||||
IBV_ACCESS_REMOTE_WRITE | IBV_ACCESS_REMOTE_READ;
|
IBV_ACCESS_REMOTE_WRITE | IBV_ACCESS_REMOTE_READ);
|
||||||
|
|
||||||
#if HAVE_DECL_IBV_ACCESS_SO
|
#if HAVE_DECL_IBV_ACCESS_SO
|
||||||
if (reg->flags & MCA_MPOOL_FLAGS_SO_MEM) {
|
if (reg->flags & MCA_MPOOL_FLAGS_SO_MEM) {
|
||||||
|
@ -43,7 +43,10 @@
|
|||||||
#include "btl_openib_proc.h"
|
#include "btl_openib_proc.h"
|
||||||
#include "connect/connect.h"
|
#include "connect/connect.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ENDPOINT_CONNECT_REQUEST,
|
ENDPOINT_CONNECT_REQUEST,
|
||||||
@ -51,7 +54,11 @@ typedef enum {
|
|||||||
ENDPOINT_CONNECT_ACK
|
ENDPOINT_CONNECT_ACK
|
||||||
} connect_message_type_t;
|
} connect_message_type_t;
|
||||||
|
|
||||||
|
#ifndef __WINDOWS__
|
||||||
#define PACK_SUFFIX __attribute__((packed))
|
#define PACK_SUFFIX __attribute__((packed))
|
||||||
|
#else
|
||||||
|
#define PACK_SUFFIX
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SL_NOT_PRESENT 0x7F
|
#define SL_NOT_PRESENT 0x7F
|
||||||
#define MAX_GET_SL_REC_RETRIES 20
|
#define MAX_GET_SL_REC_RETRIES 20
|
||||||
@ -69,6 +76,12 @@ typedef enum {
|
|||||||
#define IB_SA_PATH_REC_DLID (1<<4)
|
#define IB_SA_PATH_REC_DLID (1<<4)
|
||||||
#define IB_SA_PATH_REC_SLID (1<<5)
|
#define IB_SA_PATH_REC_SLID (1<<5)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct ib_mad_hdr {
|
struct ib_mad_hdr {
|
||||||
uint8_t base_version;
|
uint8_t base_version;
|
||||||
uint8_t mgmt_class;
|
uint8_t mgmt_class;
|
||||||
@ -134,6 +147,10 @@ struct ib_mad_sa {
|
|||||||
union ib_sa_data sa_data;
|
union ib_sa_data sa_data;
|
||||||
} PACK_SUFFIX;
|
} PACK_SUFFIX;
|
||||||
|
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
#pragma pack(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct mca_btl_openib_sa_qp_cache {
|
static struct mca_btl_openib_sa_qp_cache {
|
||||||
/* There will be a MR with the one send and receive buffer together */
|
/* There will be a MR with the one send and receive buffer together */
|
||||||
/* The send buffer is first, the receive buffer is second */
|
/* The send buffer is first, the receive buffer is second */
|
||||||
@ -1349,12 +1366,12 @@ static int get_pathrecord_sl(struct ibv_context *context_arg,
|
|||||||
/* if the destination lid SL value is not in the cache, go get it */
|
/* if the destination lid SL value is not in the cache, go get it */
|
||||||
if (SL_NOT_PRESENT == cache->sl_values[rem_lid]) {
|
if (SL_NOT_PRESENT == cache->sl_values[rem_lid]) {
|
||||||
/* sag is first buffer, where we build the SA Get request to send */
|
/* sag is first buffer, where we build the SA Get request to send */
|
||||||
sag = (void *)(cache->send_recv_buffer);
|
sag = (ib_mad_sa *)(cache->send_recv_buffer);
|
||||||
|
|
||||||
init_sa_mad(cache, sag, &swr, &ssge, lid, rem_lid);
|
init_sa_mad(cache, sag, &swr, &ssge, lid, rem_lid);
|
||||||
|
|
||||||
/* sar is the receive buffer (40 byte GRH) */
|
/* sar is the receive buffer (40 byte GRH) */
|
||||||
sar = (void *)(cache->send_recv_buffer + sizeof(struct ib_mad_sa) + 40);
|
sar = (ib_mad_sa *)(cache->send_recv_buffer + sizeof(struct ib_mad_sa) + 40);
|
||||||
|
|
||||||
rc = get_pathrecord_info(cache, sag, sar, &swr, lid, rem_lid);
|
rc = get_pathrecord_info(cache, sag, sar, &swr, lid, rem_lid);
|
||||||
if (0 != rc) {
|
if (0 != rc) {
|
||||||
|
@ -158,6 +158,8 @@ typedef unsigned int uint;
|
|||||||
#define srand48 srand
|
#define srand48 srand
|
||||||
#define lrand48 rand
|
#define lrand48 rand
|
||||||
#define nanosleep(tp, rem) Sleep(*tp.tv_sec*1000+*tp.tv_nsec/1000000)
|
#define nanosleep(tp, rem) Sleep(*tp.tv_sec*1000+*tp.tv_nsec/1000000)
|
||||||
|
#define usleep(t) Sleep(t/1000)
|
||||||
|
#define posix_memalign(p, a, s) *p=_aligned_malloc(s,a)
|
||||||
|
|
||||||
#ifndef UINT32_MAX
|
#ifndef UINT32_MAX
|
||||||
#define UINT32_MAX _UI32_MAX
|
#define UINT32_MAX _UI32_MAX
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user