-
-#if (!defined(EP_RAILMASK_ALL) && !defined(EP_SHUTDOWN))
-/* These are making their way into the EKC subsystem.... */
-# define EP_RAILMASK_ALL 0xFFFF
-# define EP_SHUTDOWN EP_ABORT
-#else
-/* ...Oh! they've got there already! */
-# error "qswnal.h older than EKC headers"
-#endif
-
-static inline int
-ep_nmd_merge (EP_NMD *merged, EP_NMD *a, EP_NMD *b)
-{
- if (EP_NMD_NODEID(a) != EP_NMD_NODEID(b)) /* not generated on the same node */
- return 0;
-
- if ((EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b)) == 0) /* no common rails */
- return 0;
-
- if (b->nmd_addr == (a->nmd_addr + a->nmd_len)) {
- if (merged != NULL) {
- merged->nmd_addr = a->nmd_addr;
- merged->nmd_len = a->nmd_len + b->nmd_len;
- merged->nmd_attr = EP_NMD_ATTR(EP_NMD_NODEID(a), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
- }
- return 1;
- }
-
- if (a->nmd_addr == (b->nmd_addr + b->nmd_len)) {
- if (merged != NULL) {
- merged->nmd_addr = b->nmd_addr;
- merged->nmd_len = b->nmd_len + a->nmd_len;
- merged->nmd_attr = EP_NMD_ATTR(EP_NMD_NODEID(b), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
- }
- return 1;
- }
-
- return 0;
-}