+/**
+ * Set subbuffer size.
+ *
+ * @param channel_size Channel name and size
+ * @param pid Traced process ID
+ * @return 0 if successful, or error
+ */
+int ustcmd_set_subbuf_size(const char *channel_size, pid_t pid)
+{
+ char *cmd;
+ int result;
+
+ if (asprintf(&cmd, "%s %s", "set_subbuf_size", channel_size) < 0) {
+ ERR("ustcmd_set_subbuf_size : asprintf failed (set_subbuf_size %s)",
+ channel_size);
+ return -1;
+ }
+
+ result = ustcmd_send_cmd(cmd, pid, NULL);
+ if (result != 1) {
+ free(cmd);
+ return 1;
+ }
+
+ free(cmd);
+ return 0;
+}
+
+/**
+ * Set subbuffer num.
+ *
+ * @param channel_num Channel name and num
+ * @param pid Traced process ID
+ * @return 0 if successful, or error
+ */
+int ustcmd_set_subbuf_num(const char *channel_size, pid_t pid)
+{
+ char *cmd;
+ int result;
+
+ if (asprintf(&cmd, "%s %s", "set_subbuf_num", channel_size) < 0) {
+ ERR("ustcmd_set_subbuf_num : asprintf failed (set_subbuf_num %s",
+ channel_size);
+ return -1;
+ }
+
+ result = ustcmd_send_cmd(cmd, pid, NULL);
+ if (result != 1) {
+ free(cmd);
+ return 1;
+ }
+
+ free(cmd);
+ return 0;
+}
+
+/**
+ * Get subbuffer size.
+ *
+ * @param channel Channel name
+ * @param pid Traced process ID
+ * @return subbuf size if successful, or error
+ */
+int ustcmd_get_subbuf_size(const char *channel, pid_t pid)
+{
+ char *cmd, *reply;
+ int result;
+
+ /* format: channel_cpu */
+ if (asprintf(&cmd, "%s %s_0", "get_subbuf_size", channel) < 0) {
+ ERR("ustcmd_get_subbuf_size : asprintf failed (get_subbuf_size, %s_0",
+ channel);
+ return -1;
+ }
+
+ result = ustcmd_send_cmd(cmd, pid, &reply);
+ if (result) {
+ free(cmd);
+ free(reply);
+ return -1;
+ }
+
+ result = atoi(reply);
+ free(cmd);
+ free(reply);
+ return result;
+}
+
+/**
+ * Get subbuffer num.
+ *
+ * @param channel Channel name
+ * @param pid Traced process ID
+ * @return subbuf cnf if successful, or error
+ */
+int ustcmd_get_subbuf_num(const char *channel, pid_t pid)
+{
+ char *cmd, *reply;
+ int result;
+
+ /* format: channel_cpu */
+ if (asprintf(&cmd, "%s %s_0", "get_n_subbufs", channel) < 0) {
+ ERR("ustcmd_get_subbuf_num : asprintf failed (get_n_subbufs, %s_0",
+ channel);
+ return -1;
+ }
+
+ result = ustcmd_send_cmd(cmd, pid, &reply);
+ if (result) {
+ free(cmd);
+ free(reply);
+ return -1;
+ }
+
+ result = atoi(reply);
+ free(cmd);
+ free(reply);
+ return result;
+}
+