[BIOSAL] [PATCH] thorium: change action naming to follow Minix-style convention

George K. Thiruvathukal gkt at cs.luc.edu
Wed Nov 5 15:53:47 CST 2014


Signed-off-by: George K. Thiruvathukal <gkt at cs.luc.edu>
---
 core/structures/fast_ring.c                    |   3 +-
 engine/thorium/actor.h                         | 107
++++++++++++++-----------
 engine/thorium/message.h                       |   4 +-
 engine/thorium/modules/actions.h               |  19 +++--
 engine/thorium/modules/binomial_tree_message.h |   5 +-
 engine/thorium/modules/send_helpers.h          |   5 +-
 engine/thorium/node.h                          |   9 ++-
 engine/thorium/transport/message_multiplexer.h |   4 +-
 examples/ring/ring.h                           |  14 ++--
 9 files changed, 96 insertions(+), 74 deletions(-)

diff --git a/core/structures/fast_ring.c b/core/structures/fast_ring.c
index 1e57a2f..a7e4242 100644
--- a/core/structures/fast_ring.c
+++ b/core/structures/fast_ring.c
@@ -587,8 +587,7 @@ void core_fast_ring_use_multiple_producers(struct
core_fast_ring *self)

     self->use_multiple_producers = YES;

-    marker = THORIUM_MESSAGE_INVALID_ACTION;
-
+    marker = ACTION_INVALID;
     i = 0;
     while (i < (int)self->number_of_cells) {

diff --git a/engine/thorium/actor.h b/engine/thorium/actor.h
index 9e013f4..6ae48e0 100644
--- a/engine/thorium/actor.h
+++ b/engine/thorium/actor.h
@@ -48,40 +48,49 @@
 #define THORIUM_ACTOR_EXPOSE_ACQUAINTANCE_VECTOR
 */

+/*
+ * We are going to use the Minix convention:
+ * - predefined actions all have negative values
+ * - each module where ACTION_ are defined has a unique base
+ *   in actor.h, the base is #defined as ACTOR_ACTION_BASE
+ * - each action is a displacement from the base
+ */
+#define ACTOR_ACTION_BASE -1000
+
 /* for control */
-#define ACTION_START 0x00000885
-#define ACTION_START_REPLY 0x0000232f
-#define ACTION_STOP 0x0000388c
-#define ACTION_STOP_REPLY 0x00006fd8
-#define ACTION_ASK_TO_STOP 0x0000607b
-#define ACTION_ASK_TO_STOP_REPLY 0x00003602
+#define ACTION_START (ACTOR_ACTION_BASE + 0)
+#define ACTION_START_REPLY (ACTOR_ACTION_BASE + 1)
+#define ACTION_STOP (ACTOR_ACTION_BASE + 2)
+#define ACTION_STOP_REPLY (ACTOR_ACTION_BASE + 3)
+#define ACTION_ASK_TO_STOP (ACTOR_ACTION_BASE + 4)
+#define ACTION_ASK_TO_STOP_REPLY (ACTOR_ACTION_BASE + 5)

-#define ACTION_SET_CONSUMER 0x000020a9
-#define ACTION_SET_CONSUMER_REPLY 0x00004db0
+#define ACTION_SET_CONSUMER (ACTOR_ACTION_BASE + 6)
+#define ACTION_SET_CONSUMER_REPLY (ACTOR_ACTION_BASE + 7)

-#define ACTION_SET_PRODUCER 0x00002856
-#define ACTION_SET_PRODUCER_REPLY 0x00000037
-#define ACTION_SET_PRODUCERS 0x00005c0b
-#define ACTION_SET_PRODUCERS_REPLY 0x0000774d
+#define ACTION_SET_PRODUCER (ACTOR_ACTION_BASE + 8)
+#define ACTION_SET_PRODUCER_REPLY (ACTOR_ACTION_BASE + 9)
+#define ACTION_SET_PRODUCERS (ACTOR_ACTION_BASE + 10)
+#define ACTION_SET_PRODUCERS_REPLY (ACTOR_ACTION_BASE + 11)

-#define ACTION_SET_CONSUMERS 0x0000671d
-#define ACTION_SET_CONSUMERS_REPLY 0x000071e4
+#define ACTION_SET_CONSUMERS (ACTOR_ACTION_BASE + 12)
+#define ACTION_SET_CONSUMERS_REPLY (ACTOR_ACTION_BASE + 13)

 /* runtime info */
-#define ACTION_GET_NODE_NAME 0x00003323
-#define ACTION_GET_NODE_NAME_REPLY 0x00004d9a
-#define ACTION_GET_NODE_WORKER_COUNT 0x0000147d
-#define ACTION_GET_NODE_WORKER_COUNT_REPLY 0x000004ec
+#define ACTION_GET_NODE_NAME (ACTOR_ACTION_BASE + 14)
+#define ACTION_GET_NODE_NAME_REPLY (ACTOR_ACTION_BASE + 15)
+#define ACTION_GET_NODE_WORKER_COUNT (ACTOR_ACTION_BASE + 16)
+#define ACTION_GET_NODE_WORKER_COUNT_REPLY (ACTOR_ACTION_BASE + 17)

 /* control YIELD is used as a yielding process.
  * an actor sends this to itself
  * when it receives ACTION_YIELD_REPLY, it continues
  * its work
  */
-#define ACTION_YIELD 0x00000173
-#define ACTION_YIELD_REPLY 0x000016f1
+#define ACTION_YIELD (ACTOR_ACTION_BASE + 18)
+#define ACTION_YIELD_REPLY (ACTOR_ACTION_BASE + 19)

-#define ACTION_PROXY_MESSAGE 0x00004bed
+#define ACTION_PROXY_MESSAGE (ACTOR_ACTION_BASE + 20)

 /* affinity */
 /*
@@ -92,23 +101,23 @@
 */

 /* synchronization */
-#define ACTION_SYNCHRONIZE 0x00004ac9
-#define ACTION_SYNCHRONIZE_REPLY 0x00000663
-#define ACTION_SYNCHRONIZED 0x0000453d
+#define ACTION_SYNCHRONIZE (ACTOR_ACTION_BASE + 21)
+#define ACTION_SYNCHRONIZE_REPLY (ACTOR_ACTION_BASE + 22)
+#define ACTION_SYNCHRONIZED (ACTOR_ACTION_BASE + 23)

 /* spawn new actors remotely */
-#define ACTION_SPAWN 0x00000119
-#define ACTION_SPAWN_REPLY 0x00007b68
+#define ACTION_SPAWN (ACTOR_ACTION_BASE + 24)
+#define ACTION_SPAWN_REPLY (ACTOR_ACTION_BASE + 25)

 /* for import and export */
-#define ACTION_PACK_ENABLE 0x000015d3
-#define ACTION_PACK_DISABLE 0x00007f0f
-#define ACTION_PACK 0x00004cae
-#define ACTION_PACK_REPLY 0x000024fc
-#define ACTION_UNPACK 0x00001c73
-#define ACTION_UNPACK_REPLY 0x000064e4
-#define ACTION_PACK_SIZE 0x00003307
-#define ACTION_PACK_SIZE_REPLY 0x00005254
+#define ACTION_PACK_ENABLE (ACTOR_ACTION_BASE + 26)
+#define ACTION_PACK_DISABLE (ACTOR_ACTION_BASE + 27)
+#define ACTION_PACK (ACTOR_ACTION_BASE + 28)
+#define ACTION_PACK_REPLY (ACTOR_ACTION_BASE + 29)
+#define ACTION_UNPACK (ACTOR_ACTION_BASE + 30)
+#define ACTION_UNPACK_REPLY (ACTOR_ACTION_BASE + 31)
+#define ACTION_PACK_SIZE (ACTOR_ACTION_BASE + 32)
+#define ACTION_PACK_SIZE_REPLY (ACTOR_ACTION_BASE + 33)

 /* cloning */
 /* design notes:
@@ -130,19 +139,19 @@ reply THORIUM_ CLONE_REPLY with newly spawned actor
  * CLONE takes one int (the spawner) and returns CLONE_REPLY
  *
  */
-#define ACTION_CLONE 0x00000d60
+#define ACTION_CLONE (ACTOR_ACTION_BASE + 34)
 /* CLONE_REPLY returns one int: the clone name */
-#define ACTION_CLONE_REPLY 0x00006881
+#define ACTION_CLONE_REPLY (ACTOR_ACTION_BASE + 35)

 /* for migration */
-#define ACTION_MIGRATE 0x000073ff
-#define ACTION_MIGRATE_REPLY 0x00001442
-#define ACTION_MIGRATE_NOTIFY_ACQUAINTANCES 0x000029b6
-#define ACTION_MIGRATE_NOTIFY_ACQUAINTANCES_REPLY 0x00007fe2
-#define ACTION_FORWARD_MESSAGES 0x00000bef
-#define ACTION_FORWARD_MESSAGES_REPLY 0x00002ff3
-#define ACTION_SET_SUPERVISOR 0x0000312f
-#define ACTION_SET_SUPERVISOR_REPLY 0x00007b18
+#define ACTION_MIGRATE (ACTOR_ACTION_BASE + 36)
+#define ACTION_MIGRATE_REPLY (ACTOR_ACTION_BASE + 37)
+#define ACTION_MIGRATE_NOTIFY_ACQUAINTANCES (ACTOR_ACTION_BASE + 38)
+#define ACTION_MIGRATE_NOTIFY_ACQUAINTANCES_REPLY (ACTOR_ACTION_BASE + 39)
+#define ACTION_FORWARD_MESSAGES (ACTOR_ACTION_BASE + 39)
+#define ACTION_FORWARD_MESSAGES_REPLY (ACTOR_ACTION_BASE + 40)
+#define ACTION_SET_SUPERVISOR (ACTOR_ACTION_BASE + 41)
+#define ACTION_SET_SUPERVISOR_REPLY (ACTOR_ACTION_BASE + 42)

 /* name change for acquaintances

@@ -161,8 +170,8 @@ ACTION_NOTIFY_NAME_CHANGE (source is old name, name is
new name)
 the actor just need to change any acquaintance with old name to
 new name.
 */
-#define ACTION_NOTIFY_NAME_CHANGE 0x000068b9
-#define ACTION_NOTIFY_NAME_CHANGE_REPLY 0x00003100
+#define ACTION_NOTIFY_NAME_CHANGE (ACTOR_ACTION_BASE + 43)
+#define ACTION_NOTIFY_NAME_CHANGE_REPLY (ACTOR_ACTION_BASE + 44)

 /*
  * Messages for actors that are data stores
@@ -171,9 +180,9 @@ new name.
 /* Auto-scaling stuff
  */

-#define ACTION_ENABLE_AUTO_SCALING 0x00000ede
-#define ACTION_DISABLE_AUTO_SCALING 0x00002b88
-#define ACTION_DO_AUTO_SCALING 0x000064de
+#define ACTION_ENABLE_AUTO_SCALING (ACTOR_ACTION_BASE + 45)
+#define ACTION_DISABLE_AUTO_SCALING (ACTOR_ACTION_BASE + 46)
+#define ACTION_DO_AUTO_SCALING (ACTOR_ACTION_BASE + 47)

 /*
  * some actor constants
diff --git a/engine/thorium/message.h b/engine/thorium/message.h
index f67c9fa..10821fa 100644
--- a/engine/thorium/message.h
+++ b/engine/thorium/message.h
@@ -17,8 +17,8 @@
  * A message can not be distributed with the action specific
  * ACTION_INVALID.
  */
-#define THORIUM_MESSAGE_INVALID_ACTION          0x00000000
-#define ACTION_INVALID THORIUM_MESSAGE_INVALID_ACTION
+
+#define ACTION_INVALID -1

 /*
  * Use tracepoints to analyze the life cycle of messages.
diff --git a/engine/thorium/modules/actions.h
b/engine/thorium/modules/actions.h
index a038e45..f858ca4 100644
--- a/engine/thorium/modules/actions.h
+++ b/engine/thorium/modules/actions.h
@@ -12,20 +12,23 @@
  * ACTOR_PING can be used by concrete actors, it is
  * not being used by biosal systems.
  */
-#define ACTION_PING 0x000040b3
-#define ACTION_PING_REPLY 0x00006eda
+
+#define PING_ACTION_BASE -3000
+
+#define ACTION_PING (PING_ACTION_BASE + 0)
+#define ACTION_PING_REPLY (PING_ACTION_BASE + 1)

 /*
  * The notify messages can be used freely.
  */
-#define ACTION_NOTIFY 0x0000710b
-#define ACTION_NOTIFY_REPLY 0x00005f82
+#define ACTION_NOTIFY (PING_ACTION_BASE + 2)
+#define ACTION_NOTIFY_REPLY (PING_ACTION_BASE + 3)

-#define ACTION_RESET 0x00005045
-#define ACTION_RESET_REPLY 0x0000056d
+#define ACTION_RESET (PING_ACTION_BASE + 4)
+#define ACTION_RESET_REPLY (PING_ACTION_BASE + 5)

-#define ACTION_BEGIN 0x0000125f
-#define ACTION_BEGIN_REPLY 0x0000214a
+#define ACTION_BEGIN (PING_ACTION_BASE + 6)
+#define ACTION_BEGIN_REPLY (PING_ACTION_BASE + 7)

 struct core_vector;
 struct thorium_actor;
diff --git a/engine/thorium/modules/binomial_tree_message.h
b/engine/thorium/modules/binomial_tree_message.h
index b24f1ac..d84690b 100644
--- a/engine/thorium/modules/binomial_tree_message.h
+++ b/engine/thorium/modules/binomial_tree_message.h
@@ -7,7 +7,10 @@ struct thorium_message;
 struct thorium_actor;

 /* binomial-tree */
-#define ACTION_BINOMIAL_TREE_SEND 0x00005b36
+
+#define BINOMIAL_TREE_ACTION_BASE -4000
+
+#define ACTION_BINOMIAL_TREE_SEND (BINOMIAL_TREE_ACTION_BASE + 0)

 /*
 #define DEBUG_BINOMIAL_TREE
diff --git a/engine/thorium/modules/send_helpers.h
b/engine/thorium/modules/send_helpers.h
index 549cfc1..97a31fe 100644
--- a/engine/thorium/modules/send_helpers.h
+++ b/engine/thorium/modules/send_helpers.h
@@ -6,8 +6,9 @@

 #include <stdint.h>

-#define ACTION_SET_PRODUCERS_FOR_WORK_STEALING 0x002f77ab
-#define ACTION_SET_PRODUCERS_FOR_WORK_STEALING_REPLY 0x0038c869
+#define SEND_HELPERS_ACTION_BASE -5000
+#define ACTION_SET_PRODUCERS_FOR_WORK_STEALING (SEND_HELPERS_ACTION_BASE +
0)
+#define ACTION_SET_PRODUCERS_FOR_WORK_STEALING_REPLY
(SEND_HELPERS_ACTION_BASE + 1)

 /*
  * Actor helpers are function that work on a thorium_actor but that do not
access attributes
diff --git a/engine/thorium/node.h b/engine/thorium/node.h
index 918a695..8ddbb65 100644
--- a/engine/thorium/node.h
+++ b/engine/thorium/node.h
@@ -41,10 +41,11 @@
 /* Some message tags at the node level instead of the actor level
  */

-#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTOR 0x00002438
-#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTORS 0x00004c19
-#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTORS_REPLY 0x00003ad3
-#define ACTION_THORIUM_NODE_START 0x0000082c
+#define NODE_ACTION_BASE -6000
+#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTOR (NODE_ACTION_BASE + 0)
+#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTORS (NODE_ACTION_BASE + 1)
+#define ACTION_THORIUM_NODE_ADD_INITIAL_ACTORS_REPLY (NODE_ACTION_BASE + 2)
+#define ACTION_THORIUM_NODE_START (NODE_ACTION_BASE + 3)

 /*
  * Use deterministic actor names.
diff --git a/engine/thorium/transport/message_multiplexer.h
b/engine/thorium/transport/message_multiplexer.h
index f7e0aeb..29ff07b 100644
--- a/engine/thorium/transport/message_multiplexer.h
+++ b/engine/thorium/transport/message_multiplexer.h
@@ -17,7 +17,9 @@ struct thorium_message;
 /*
  * The multiplexer needs its own action
  */
-#define ACTION_MULTIPLEXER_MESSAGE 0x0024afc9
+
+#define MULTIPLEXER_ACTION_BASE -7000
+#define ACTION_MULTIPLEXER_MESSAGE (MULTIPLEXER_ACTION_BASE + 0)

 /*
  * Genomic graph traversal is characterized by:
diff --git a/examples/ring/ring.h b/examples/ring/ring.h
index 9086768..7f83393 100644
--- a/examples/ring/ring.h
+++ b/examples/ring/ring.h
@@ -18,11 +18,15 @@ struct ring {
     int previous;
 };

-#define ACTION_RING_READY 0x000067db
-#define ACTION_RING_KILL 0x00004cfe
-#define ACTION_RING_SET_NEXT 0x00003833
-#define ACTION_RING_PUSH_NEXT 0x0000153c
-#define ACTION_RING_SPAWN 0x00001bd7
+/* see notes in actor.h about how we number internal Thorium engine
messages */
+
+#define RING_ACTION_BASE -2000
+
+#define ACTION_RING_READY (RING_ACTION_BASE + 0)
+#define ACTION_RING_KILL (RING_ACTION_BASE + 1)
+#define ACTION_RING_SET_NEXT (RING_ACTION_BASE + 2)
+#define ACTION_RING_PUSH_NEXT (RING_ACTION_BASE + 3)
+#define ACTION_RING_SPAWN (RING_ACTION_BASE + 4)

 extern struct thorium_script ring_script;

-- 
1.9.3 (Apple Git-50)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cels.anl.gov/pipermail/biosal/attachments/20141105/21dee1f1/attachment-0001.html>


More information about the BIOSAL mailing list