sched: improve doxygen comments
[dpdk.git] / examples / vm_power_manager / channel_monitor.c
index 9d7474d..fe6088a 100644 (file)
@@ -309,7 +309,7 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt,
                                vm_name);
                        return -1;
                }
-               rte_strlcpy(pkt->vm_name, vm_name, VM_MAX_NAME_SZ);
+               strlcpy(pkt->vm_name, vm_name, VM_MAX_NAME_SZ);
                pkt->resource_id = resource_id;
        }
        return 0;
@@ -835,6 +835,8 @@ read_json_packet(struct channel_info *chan_info)
        json_t *root;
        json_error_t error;
        const char *resource_name;
+       char *start, *end;
+       uint32_t n;
 
 
        /* read opening brace to closing brace */
@@ -882,7 +884,27 @@ read_json_packet(struct channel_info *chan_info)
                                        "Error validating JSON profile data\n");
                                break;
                        }
-                       process_request(&pkt, chan_info);
+                       start = strstr(pkt.vm_name,
+                                       CHANNEL_MGR_FIFO_PATTERN_NAME);
+                       if (start != NULL) {
+                               /* move past pattern to start of fifo id */
+                               start += strlen(CHANNEL_MGR_FIFO_PATTERN_NAME);
+
+                               end = start;
+                               n = (uint32_t)strtoul(start, &end, 10);
+
+                               if (end[0] == '\0') {
+                                       /* Add core id to core list */
+                                       pkt.num_vcpu = 1;
+                                       pkt.vcpu_to_control[0] = n;
+                                       process_request(&pkt, chan_info);
+                               } else {
+                                       RTE_LOG(ERR, CHANNEL_MONITOR,
+                                               "Cannot extract core id from fifo name\n");
+                               }
+                       } else {
+                               process_request(&pkt, chan_info);
+                       }
                } else {
                        RTE_LOG(ERR, CHANNEL_MONITOR,
                                        "JSON error on line %d: %s\n",