X-Git-Url: https://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Fcommon.c;h=ad190c918c753b5cace0ccb5d8bf7475bbc01426;hp=f628ed56d5961673017aef03c3f256913b23f080;hb=71bd7ce14826a0d7067c45657f33080e546cd5dc;hpb=d67167cde319ac9d257f5b59b5a4664e558f4cb4 diff --git a/src/common.c b/src/common.c index f628ed5..ad190c9 100644 --- a/src/common.c +++ b/src/common.c @@ -10,12 +10,12 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include #include #include "common.h" @@ -35,6 +35,70 @@ uint64_t get_cpu_id(struct bt_ctf_event *event) return cpu_id; } +uint64_t get_context_tid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t tid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + tid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_tid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing tid context info\n"); + return -1ULL; + } + + return tid; +} + +uint64_t get_context_pid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t pid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + pid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_pid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing pid context info\n"); + return -1ULL; + } + + return pid; +} + +uint64_t get_context_ppid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t ppid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + ppid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_ppid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing ppid context info\n"); + return -1ULL; + } + + return ppid; +} + +char *get_context_comm(struct bt_ctf_event *event) +{ + struct definition *scope; + char *comm; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + comm = bt_ctf_get_char_array(bt_ctf_get_field(event, + scope, "_procname")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing comm context info\n"); + return NULL; + } + + return comm; +} + struct processtop *find_process_tid(struct lttngtop *ctx, int tid, char *comm) { gint i;