55 lines
1.5 KiB
C
Executable File
55 lines
1.5 KiB
C
Executable File
/*
|
|
* mmib.h
|
|
*
|
|
* Created on: 2011/10/19
|
|
* Author: simin
|
|
*/
|
|
|
|
#ifndef MMIB_H_
|
|
#define MMIB_H_
|
|
|
|
#include "mtype.h"
|
|
#include "ibcomm.h"
|
|
|
|
enum mmib_buf_type{
|
|
MMIB_MR_BUF,
|
|
MMIB_CQ_BUF,
|
|
MMIB_QP_BUF,
|
|
};
|
|
enum mmib_buf_pool_state{
|
|
MMIB_BUF_POOL_RESET,
|
|
MMIB_BUF_POOL_ACTIVE
|
|
};
|
|
|
|
struct mmib_buf_pool{
|
|
addr_t offset;
|
|
int page_no; // start page_no
|
|
int size;
|
|
addr_t cur_start; // offset in page
|
|
enum mmib_buf_pool_state state;
|
|
};
|
|
|
|
typedef struct mmib_mrinfo{
|
|
struct ibv_mr *mr;
|
|
buf_t *buf; /*Registered buf*/
|
|
}mmib_mrinfo_t;
|
|
|
|
extern int mmib_pool_init();
|
|
extern buf_t *mmib_new_buf(int size, enum mmib_buf_type buf_type);
|
|
extern void mmib_destroy_buf(buf_t *buf);
|
|
extern void mmib_pool_destroy();
|
|
|
|
extern void* mmib_qp_buf_alloc(int size);
|
|
extern void* mmib_cq_buf_alloc(int size);
|
|
extern void mmib_buf_free(void* buf);
|
|
|
|
extern int mmib_resource_create(config_t config, resource_t *res);
|
|
extern int mmib_pd_create(resource_t *res, pdinfo_t *pdinfo);
|
|
extern int mmib_qp_create(resource_t *res, pdinfo_t *pdinfo, qpinfo_t *qpinfo);
|
|
extern int mmib_mr_create(resource_t *res, pdinfo_t *pdinfo, buf_t *buf, mmib_mrinfo_t *mrinfo);
|
|
extern int mmib_post_send_req(qpinfo_t *qpinfo, mmib_mrinfo_t *mrinfo_list, int opcode, int tag);
|
|
extern int mmib_post_recv_req(qpinfo_t *qpinfo, mmib_mrinfo_t *mrinfo_list, int tag);
|
|
extern int mmib_poll_cq(qpinfo_t *qpinfo, int cq_flg, int *tag);
|
|
extern int mmib_resource_destroy(config_t *config, resource_t *res);
|
|
#endif /* MMIB_H_ */
|