#ifndef MTHCA_VC_H
#define MTHCA_VC_H
+#define PTR_ALIGN(size) (((size) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
+
typedef
struct _map_crspace {
unsigned __int64 va; /* address of CRSPACE, mapped to user space */
inline char* mthca_get_board_id(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size - MTHCA_BRD_ID_LEN - sizeof(uplink_info_t));
+ return (char*)(ca_attr) + (ca_attr->size - PTR_ALIGN(MTHCA_BRD_ID_LEN) - PTR_ALIGN(sizeof(uplink_info_t)));
}
inline void* mthca_get_uplink_info(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size - sizeof(uplink_info_t));
+ return (char*)(ca_attr) + (ca_attr->size - PTR_ALIGN(sizeof(uplink_info_t)));
}
#endif