add a command to force subbuffer switch
[ust.git] / libustcmd / ustcmd.c
index 7a05afa20079944b0ce3e79e60efcf06cc17f233..46a95618439915336fc654f9a90495b479d11039 100644 (file)
@@ -150,6 +150,61 @@ int ustcmd_set_subbuf_num(const char *channel_size, pid_t pid)
        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 */
+       asprintf(&cmd, "%s %s_0", "get_subbuf_size", channel);
+
+       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 */
+       asprintf(&cmd, "%s %s_0", "get_n_subbufs", channel);
+
+       result = ustcmd_send_cmd(cmd, pid, &reply);
+       if (result) {
+               free(cmd);
+               free(reply);
+               return -1;
+       }
+
+       result = atoi(reply);
+       free(cmd);
+       free(reply);
+       return result;
+}
 
 /**
  * Destroys an UST trace according to a PID.
@@ -365,6 +420,68 @@ int ustcmd_get_cmsf(struct marker_status **cmsf, const pid_t pid)
        return 0;
 }
 
+/**
+ * Set socket path
+ *
+ * @param sock_path    Socket path
+ * @param pid          Traced process ID
+ * @return             0 if successful, or error
+ */
+int ustcmd_set_sock_path(const char *sock_path, pid_t pid)
+{
+       char *cmd;
+       int result;
+
+       asprintf(&cmd, "%s %s", "set_sock_path", sock_path);
+
+       result = ustcmd_send_cmd(cmd, pid, NULL);
+       if (result != 1) {
+               free(cmd);
+               return USTCMD_ERR_GEN;
+       }
+
+       free(cmd);
+       return 0;
+}
+
+/**
+ * Get socket path
+ *
+ * @param sock_path    Pointer to where the socket path will be returned
+ * @param pid          Traced process ID
+ * @return             0 if successful, or error
+ */
+int ustcmd_get_sock_path(char **sock_path, pid_t pid)
+{
+       char *cmd, *reply;
+       int result;
+
+       asprintf(&cmd, "%s", "get_sock_path");
+
+       result = ustcmd_send_cmd(cmd, pid, &reply);
+       if (result != 1) {
+               free(cmd);
+               free(reply);
+               return USTCMD_ERR_GEN;
+       }
+
+       free(cmd);
+       *sock_path = reply;
+       return 0;
+}
+
+int ustcmd_force_switch(pid_t pid)
+{
+       int result;
+
+       result = ustcmd_send_cmd("force_switch", pid, NULL);
+       if (result != 1) {
+               return USTCMD_ERR_GEN;
+       }
+
+       return 0;
+}
+
 /**
  * Sends a given command to a traceable process
  *
This page took 0.023089 seconds and 4 git commands to generate.