I would like to share code between the hypervisor and xenalyze, so that
every definition comes from a single place and is not duplicated in xen
and xenalyze. This works as long as simple constructs like struct x {};
are used. Depending on the data to be stored into the trace buffer, having
support for __packed may reduce the amount of data that need to be copied.

The tooling currently converts ___attribute__ into compat___attribute__.
Was support for __attribute__ intentionally left out, or was there just
no usecase for it?


Olaf

+++ b/xen/include/public/trace.h
@@ -80,6 +80,14 @@
 #define TRC_LOST_RECORDS        (TRC_GEN + 1)
 #define TRC_TRACE_WRAP_BUFFER  (TRC_GEN + 2)
 #define TRC_TRACE_CPU_CHANGE    (TRC_GEN + 3)
+#define TRC_a (TRC_GEN + 123)
+struct __attribute__((__packed__)) trc_a {
+    unsigned a;
+};
+#define TRC_b (TRC_GEN + 321)
+typedef struct __attribute__((__packed__)) trc_b {
+    unsigned b;
+} trc_b_t;
 
 #define TRC_SCHED_RUNSTATE_CHANGE   (TRC_SCHED_MIN + 1)
 #define TRC_SCHED_CONTINUE_RUNNING  (TRC_SCHED_MIN + 2)

Attachment: pgp8GlNlLJgFF.pgp
Description: Digitale Signatur von OpenPGP

Reply via email to