int nr_pids;
struct lttng_domain dom;
struct lttng_handle *handle = NULL;
- int (*lib_func)(struct lttng_handle *handle, int pid);
+ int (*cmd_func)(struct lttng_handle *handle, int pid);
switch (cmd_type) {
case CMD_TRACK:
- lib_func = lttng_track_pid;
+ cmd_func = lttng_track_pid;
break;
case CMD_UNTRACK:
- lib_func = lttng_untrack_pid;
+ cmd_func = lttng_untrack_pid;
break;
default:
ERR("Unknown command");
for (i = 0; i < nr_pids; i++) {
DBG("%s PID %d", cmd_str, pid_list[i]);
- ret = lib_func(handle, pid_list[i]);
+ ret = cmd_func(handle, pid_list[i]);
if (ret) {
- success = 0;
- retval = CMD_ERROR;
+ switch (-ret) {
+ case LTTNG_ERR_PID_TRACKED:
+ WARN("PID %i already tracked in session %s",
+ pid_list[i], session_name);
+ success = 1;
+ retval = CMD_SUCCESS;
+ break;
+ case LTTNG_ERR_PID_NOT_TRACKED:
+ WARN("PID %i not tracked in session %s",
+ pid_list[i], session_name);
+ success = 1;
+ retval = CMD_SUCCESS;
+ break;
+ default:
+ ERR("%s", lttng_strerror(ret));
+ success = 0;
+ retval = CMD_ERROR;
+ break;
+ }
} else {
+ MSG("PID %i %sed in session %s",
+ pid_list[i], cmd_str, session_name);
success = 1;
}