X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon.c;h=df2ef7a4d376a395587815939dc224fa1926cab9;hb=3ba84bed69e8eb8e6794a7250da97406dbbe02c2;hp=f628ed56d5961673017aef03c3f256913b23f080;hpb=d67167cde319ac9d257f5b59b5a4664e558f4cb4;p=lttngtop.git diff --git a/src/common.c b/src/common.c index f628ed5..df2ef7a 100644 --- a/src/common.c +++ b/src/common.c @@ -10,19 +10,19 @@ * 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" -uint64_t get_cpu_id(struct bt_ctf_event *event) +uint64_t get_cpu_id(const struct bt_ctf_event *event) { - struct definition *scope; + const struct definition *scope; uint64_t cpu_id; scope = bt_ctf_get_top_level_scope(event, BT_STREAM_PACKET_CONTEXT); @@ -35,6 +35,70 @@ uint64_t get_cpu_id(struct bt_ctf_event *event) return cpu_id; } +uint64_t get_context_tid(const struct bt_ctf_event *event) +{ + const 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(const struct bt_ctf_event *event) +{ + const 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(const struct bt_ctf_event *event) +{ + const 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(const struct bt_ctf_event *event) +{ + const 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;