summaryrefslogtreecommitdiffstats
path: root/src/ioq.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ioq.h')
-rw-r--r--src/ioq.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ioq.h b/src/ioq.h
index 30e90e0..818eea6 100644
--- a/src/ioq.h
+++ b/src/ioq.h
@@ -33,11 +33,18 @@ enum ioq_op {
};
/**
+ * The I/O queue implementation needs two tag bits in each pointer to a struct
+ * ioq_ent, so we need to ensure at least 4-byte alignment. The natural
+ * alignment is enough on most architectures, but not m68k, so over-align it.
+ */
+#define IOQ_ENT_ALIGN alignas(4)
+
+/**
* An I/O queue entry.
*/
struct ioq_ent {
/** The I/O operation. */
- enum ioq_op op;
+ IOQ_ENT_ALIGN enum ioq_op op;
/** The return value (on success) or negative error code (on failure). */
int result;