slotmap: Introduce slotmap-printing function and use it

... avoid code duplication

Change-Id: I6458b9d222ed9f4113c3bb1c538b4b710559c6b2
diff --git a/src/slotmap.c b/src/slotmap.c
index 303f5fd..a3ae792 100644
--- a/src/slotmap.c
+++ b/src/slotmap.c
@@ -12,6 +12,14 @@
 
 #include "slotmap.h"
 
+const char *slotmap_name(char *buf, size_t buf_len, const struct slot_mapping *map)
+{
+	snprintf(buf, buf_len, "B(%u:%u) <-> C(%u:%u)",
+		 map->bank.bank_id, map->bank.slot_nr, map->client.client_id, map->client.slot_nr);
+	return buf;
+}
+
+
 /* thread-safe lookup of map by client:slot */
 struct slot_mapping *slotmap_by_client(struct slotmaps *maps, const struct client_slot *client)
 {
@@ -49,6 +57,7 @@
 int slotmap_add(struct slotmaps *maps, const struct bank_slot *bank, const struct client_slot *client)
 {
 	struct slot_mapping *map;
+	char mapname[64];
 
 	/* We assume a single thread (main thread) will ever update the mappings,
 	 * and hence we don't have any races by first grabbing + releasing the read
@@ -80,8 +89,7 @@
 	llist_add_tail(&map->list, &maps->mappings);
 	pthread_rwlock_unlock(&maps->rwlock);
 
-	printf("Added Slot Map C(%u:%u) <-> B(%u:%u)\n",
-		map->client.client_id, map->client.slot_nr, map->bank.bank_id, map->bank.slot_nr);
+	printf("Slot Map %s added\n", slotmap_name(mapname, sizeof(mapname), map));
 
 	return 0;
 }
@@ -89,8 +97,9 @@
 /* thread-safe removal of a bank<->client map */
 void slotmap_del(struct slotmaps *maps, struct slot_mapping *map)
 {
-	printf("Deleting Slot Map C(%u:%u) <-> B(%u:%u)\n",
-		map->client.client_id, map->client.slot_nr, map->bank.bank_id, map->bank.slot_nr);
+	char mapname[64];
+
+	printf("Slot Map %s deleted\n", slotmap_name(mapname, sizeof(mapname), map));
 
 	pthread_rwlock_wrlock(&maps->rwlock);
 	llist_del(&map->list);