typedef struct lib_md_t lib_md_t;
typedef struct lib_eq_t lib_eq_t;
+#define WIRE_ATTR __attribute__((packed))
+
/* The wire handle's interface cookie only matches one network interface in
* one epoch (i.e. new cookie when the interface restarts or the node
* reboots). The object cookie only matches one object on that interface
typedef struct {
__u64 wh_interface_cookie;
__u64 wh_object_cookie;
-} ptl_handle_wire_t;
+} WIRE_ATTR ptl_handle_wire_t;
/* byte-flip insensitive! */
#define PTL_WIRE_HANDLE_NONE \
ptl_handle_wire_t dst_wmd;
ptl_match_bits_t match_bits;
ptl_size_t length; /* common length (0 for acks) moving out RSN */
-} ptl_ack_t;
+} WIRE_ATTR ptl_ack_t;
typedef struct ptl_put {
ptl_pt_index_t ptl_index;
ptl_size_t length; /* common length moving out RSN */
ptl_size_t offset;
ptl_hdr_data_t hdr_data;
-} ptl_put_t;
+} WIRE_ATTR ptl_put_t;
typedef struct ptl_get {
ptl_pt_index_t ptl_index;
ptl_size_t src_offset;
ptl_size_t return_offset; /* unused: going RSN */
ptl_size_t sink_length;
-} ptl_get_t;
+} WIRE_ATTR ptl_get_t;
typedef struct ptl_reply {
__u32 unused1; /* unused fields going RSN */
ptl_size_t dst_offset; /* unused: going RSN */
__u32 unused2;
ptl_size_t length; /* common length moving out RSN */
-} ptl_reply_t;
+} WIRE_ATTR ptl_reply_t;
typedef struct {
ptl_nid_t dest_nid;
ptl_get_t get;
ptl_reply_t reply;
} msg;
-} ptl_hdr_t;
+} WIRE_ATTR ptl_hdr_t;
/* All length fields in individual unions at same offset */
/* LASSERT for same in lib-move.c */
__u32 magic; /* PORTALS_PROTO_MAGIC */
__u16 version_major; /* increment on incompatible change */
__u16 version_minor; /* increment on compatible change */
-} ptl_magicversion_t;
+} WIRE_ATTR ptl_magicversion_t;
#define PORTALS_PROTO_MAGIC 0xeebc0ded
typedef struct lib_md_t lib_md_t;
typedef struct lib_eq_t lib_eq_t;
+#define WIRE_ATTR __attribute__((packed))
+
/* The wire handle's interface cookie only matches one network interface in
* one epoch (i.e. new cookie when the interface restarts or the node
* reboots). The object cookie only matches one object on that interface
typedef struct {
__u64 wh_interface_cookie;
__u64 wh_object_cookie;
-} ptl_handle_wire_t;
+} WIRE_ATTR ptl_handle_wire_t;
/* byte-flip insensitive! */
#define PTL_WIRE_HANDLE_NONE \
ptl_handle_wire_t dst_wmd;
ptl_match_bits_t match_bits;
ptl_size_t length; /* common length (0 for acks) moving out RSN */
-} ptl_ack_t;
+} WIRE_ATTR ptl_ack_t;
typedef struct ptl_put {
ptl_pt_index_t ptl_index;
ptl_size_t length; /* common length moving out RSN */
ptl_size_t offset;
ptl_hdr_data_t hdr_data;
-} ptl_put_t;
+} WIRE_ATTR ptl_put_t;
typedef struct ptl_get {
ptl_pt_index_t ptl_index;
ptl_size_t src_offset;
ptl_size_t return_offset; /* unused: going RSN */
ptl_size_t sink_length;
-} ptl_get_t;
+} WIRE_ATTR ptl_get_t;
typedef struct ptl_reply {
__u32 unused1; /* unused fields going RSN */
ptl_size_t dst_offset; /* unused: going RSN */
__u32 unused2;
ptl_size_t length; /* common length moving out RSN */
-} ptl_reply_t;
+} WIRE_ATTR ptl_reply_t;
typedef struct {
ptl_nid_t dest_nid;
ptl_get_t get;
ptl_reply_t reply;
} msg;
-} ptl_hdr_t;
+} WIRE_ATTR ptl_hdr_t;
/* All length fields in individual unions at same offset */
/* LASSERT for same in lib-move.c */
__u32 magic; /* PORTALS_PROTO_MAGIC */
__u16 version_major; /* increment on incompatible change */
__u16 version_minor; /* increment on compatible change */
-} ptl_magicversion_t;
+} WIRE_ATTR ptl_magicversion_t;
#define PORTALS_PROTO_MAGIC 0xeebc0ded