/**
 * Detects whether two memory segments intersect.
 *
 * @param[in] reg_entry the registration entry
 * @param[in] buf       starting address for the contiguous memory region
 * @param[in] len       length of the contiguous memory region
 *
 * @pre NULL != reg_entry
 * @pre NULL != buf
 * @pre len >= 0
 *
 * @return RR_SUCCESS on success
 */
static reg_return_t
reg_entry_intersects(reg_entry_t *reg_entry, void *buf, size_t len)
{
    /* preconditions */
    assert(NULL != reg_entry);
    assert(NULL != buf);
    assert(len >= 0);

    return seg_intersects(
               reg_entry->buf, reg_entry->len,
               buf, len);
}
Example #2
0
/**
 * Detects whether two memory segments intersect.
 *
 * @param[in] reg_entry the registration entry
 * @param[in] buf       starting address for the contiguous memory region
 * @param[in] len       length of the contiguous memory region
 *
 * @pre NULL != reg_entry
 * @pre NULL != buf
 * @pre len >= 0
 *
 * @return RR_SUCCESS on success
 */
STATIC reg_return_t
reg_entry_intersects(reg_entry_t *reg_entry, void *buf, int len)
{
#if DEBUG
    printf("[%d] reg_entry_intersects(reg_entry=%p, buf=%p, len=%d)\n",
            g_state.rank, reg_entry, buf, len);
#endif
    /* preconditions */
    COMEX_ASSERT(NULL != reg_entry);
    COMEX_ASSERT(NULL != buf);
    COMEX_ASSERT(len >= 0);

    return seg_intersects(
            reg_entry->buf, reg_entry->len,
            buf, len);
}
/**
 * Detects whether two dmapp segments intersect.
 *
 * @param[in] first     the original registration entry
 * @param[in] second    segment to test against
 *
 * @return RR_SUCCESS on success
 */
static reg_return_t
dmapp_seg_intersects(dmapp_seg_desc_t first, dmapp_seg_desc_t second)
{
    return seg_intersects(first.addr, first.len, second.addr, second.len);
}