projects
/
lttngtop.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add const for most of the babeltrace APi calls
[lttngtop.git]
/
src
/
lttngtop.c
diff --git
a/src/lttngtop.c
b/src/lttngtop.c
index 5d526f3893bf41d6491283a5243b859864c49085..cc0ca882c80b2e5a2ebf4064563df4506569564c 100644
(file)
--- a/
src/lttngtop.c
+++ b/
src/lttngtop.c
@@
-10,10
+10,9
@@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* 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.
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
@@
-23,6
+22,7
@@
#include <babeltrace/babeltrace.h>
#include <babeltrace/ctf/events.h>
#include <babeltrace/ctf/callbacks.h>
#include <babeltrace/babeltrace.h>
#include <babeltrace/ctf/events.h>
#include <babeltrace/ctf/callbacks.h>
+#include <babeltrace/ctf/iterator.h>
#include <fcntl.h>
#include <pthread.h>
#include <popt.h>
#include <fcntl.h>
#include <pthread.h>
#include <popt.h>
@@
-36,6
+36,7
@@
#include <errno.h>
#include <sys/types.h>
#include <fts.h>
#include <errno.h>
#include <sys/types.h>
#include <fts.h>
+#include <assert.h>
#include "lttngtoptypes.h"
#include "cputop.h"
#include "lttngtoptypes.h"
#include "cputop.h"
@@
-73,6
+74,8
@@
static struct poptOption long_options[] = {
void *refresh_thread(void *p)
{
while (1) {
void *refresh_thread(void *p)
{
while (1) {
+ if (quit)
+ return NULL;
sem_wait(&pause_sem);
sem_post(&pause_sem);
sem_post(&timer);
sem_wait(&pause_sem);
sem_post(&pause_sem);
sem_post(&timer);
@@
-93,8
+96,8
@@
void *ncurses_display(void *p)
sem_wait(&pause_sem);
copy = g_ptr_array_index(copies, current_display_index);
sem_wait(&pause_sem);
copy = g_ptr_array_index(copies, current_display_index);
- if (copy)
-
display(current_display_index++);
+ assert(copy);
+ display(current_display_index++);
sem_post(&goodtoupdate);
sem_post(&pause_sem);
sem_post(&goodtoupdate);
sem_post(&pause_sem);
@@
-157,21
+160,19
@@
struct perfcounter *get_perf_counter(const char *name, struct processtop *proc,
if (ret)
goto end;
if (ret)
goto end;
- ret = malloc(sizeof(struct perfcounter));
- memset(ret, 0, sizeof(struct perfcounter));
+ ret = g_new0(struct perfcounter, 1);
/* by default, make it visible in the UI */
ret->visible = 1;
/* by default, make it visible in the UI */
ret->visible = 1;
- g_hash_table_insert(table, (gpointer)
name
, ret);
+ g_hash_table_insert(table, (gpointer)
strdup(name)
, ret);
global = g_hash_table_lookup(lttngtop.perf_list, (gpointer) name);
if (!global) {
global = g_hash_table_lookup(lttngtop.perf_list, (gpointer) name);
if (!global) {
- global = malloc(sizeof(struct perfcounter));
- memset(global, 0, sizeof(struct perfcounter));
+ global = g_new0(struct perfcounter, 1);
memcpy(global, ret, sizeof(struct perfcounter));
/* by default, sort on the first perf context */
if (g_hash_table_size(lttngtop.perf_list) == 0)
global->sort = 1;
memcpy(global, ret, sizeof(struct perfcounter));
/* by default, sort on the first perf context */
if (g_hash_table_size(lttngtop.perf_list) == 0)
global->sort = 1;
- g_hash_table_insert(lttngtop.perf_list, (gpointer)
name
, global);
+ g_hash_table_insert(lttngtop.perf_list, (gpointer)
strdup(name)
, global);
}
end:
}
end:
@@
-194,8
+195,8
@@
void update_perf_value(struct processtop *proc, struct cputime *cpu,
}
}
}
}
-void extract_perf_counter_scope(struct bt_ctf_event *event,
- struct definition *scope,
+void extract_perf_counter_scope(
const
struct bt_ctf_event *event,
+
const
struct definition *scope,
struct processtop *proc,
struct cputime *cpu)
{
struct processtop *proc,
struct cputime *cpu)
{
@@
-212,7
+213,7
@@
void extract_perf_counter_scope(struct bt_ctf_event *event,
for (i = 0; i < count; i++) {
const char *name = bt_ctf_field_name(list[i]);
for (i = 0; i < count; i++) {
const char *name = bt_ctf_field_name(list[i]);
- if (strncmp(name, "
_perf_", 6
) == 0) {
+ if (strncmp(name, "
perf_", 5
) == 0) {
int value = bt_ctf_get_uint64(list[i]);
if (bt_ctf_field_get_error())
continue;
int value = bt_ctf_get_uint64(list[i]);
if (bt_ctf_field_get_error())
continue;
@@
-224,19
+225,12
@@
end:
return;
}
return;
}
-void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
+void update_perf_counter(struct processtop *proc,
const
struct bt_ctf_event *event)
{
{
- struct definition *scope;
- uint64_t cpu_id;
struct cputime *cpu;
struct cputime *cpu;
+ const struct definition *scope;
- scope = bt_ctf_get_top_level_scope(event, BT_STREAM_PACKET_CONTEXT);
- cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(event, scope, "cpu_id"));
- if (bt_ctf_field_get_error()) {
- fprintf(stderr, "[error] get cpu_id\n");
- goto end;
- }
- cpu = get_cpu(cpu_id);
+ cpu = get_cpu(get_cpu_id(event));
scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
@@
-246,9
+240,6
@@
void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
scope = bt_ctf_get_top_level_scope(event, BT_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
scope = bt_ctf_get_top_level_scope(event, BT_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
-
-end:
- return;
}
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
}
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
@@
-257,34
+248,31
@@
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
int pid, tid, ppid;
char *comm;
struct processtop *parent, *child;
int pid, tid, ppid;
char *comm;
struct processtop *parent, *child;
- struct definition *scope;
unsigned long timestamp;
unsigned long timestamp;
- /* FIXME :
check
context pid, tid, ppid and comm */
+ /* FIXME :
display nice error when missing
context pid, tid, ppid and comm */
timestamp = bt_ctf_get_timestamp(call_data);
if (timestamp == -1ULL)
goto error;
timestamp = bt_ctf_get_timestamp(call_data);
if (timestamp == -1ULL)
goto error;
- scope = bt_ctf_get_top_level_scope(call_data, BT_STREAM_EVENT_CONTEXT);
-
- pid = bt_ctf_get_int64(bt_ctf_get_field(call_data, scope, "_pid"));
- if (bt_ctf_field_get_error()) {
+ pid = get_context_pid(call_data);
+ if (pid == -1ULL) {
// fprintf(stderr, "Missing pid context info\n");
goto error;
}
// fprintf(stderr, "Missing pid context info\n");
goto error;
}
- tid =
bt_ctf_get_int64(bt_ctf_get_field(call_data, scope, "_tid")
);
- if (
bt_ctf_field_get_error()
) {
+ tid =
get_context_tid(call_data
);
+ if (
tid == -1ULL
) {
// fprintf(stderr, "Missing tid context info\n");
goto error;
}
// fprintf(stderr, "Missing tid context info\n");
goto error;
}
- ppid =
bt_ctf_get_int64(bt_ctf_get_field(call_data, scope, "_ppid")
);
- if (
bt_ctf_field_get_error()
) {
+ ppid =
get_context_ppid(call_data
);
+ if (
ppid == -1ULL
) {
// fprintf(stderr, "Missing ppid context info\n");
goto error;
}
// fprintf(stderr, "Missing ppid context info\n");
goto error;
}
- comm =
bt_ctf_get_char_array(bt_ctf_get_field(call_data, scope, "_procname")
);
- if (
bt_ctf_field_get_error()
) {
+ comm =
get_context_comm(call_data
);
+ if (
!comm
) {
// fprintf(stderr, "Missing procname context info\n");
goto error;
}
// fprintf(stderr, "Missing procname context info\n");
goto error;
}
@@
-319,7
+307,7
@@
error:
void init_lttngtop()
{
copies = g_ptr_array_new();
void init_lttngtop()
{
copies = g_ptr_array_new();
- lttngtop.perf_list = g_hash_table_new(g_
direct_hash, g_direct
_equal);
+ lttngtop.perf_list = g_hash_table_new(g_
str_hash, g_str
_equal);
sem_init(&goodtodisplay, 0, 0);
sem_init(&goodtoupdate, 0, 1);
sem_init(&goodtodisplay, 0, 0);
sem_init(&goodtoupdate, 0, 1);
@@
-333,9
+321,10
@@
void init_lttngtop()
lttngtop.cpu_table = g_ptr_array_new();
}
lttngtop.cpu_table = g_ptr_array_new();
}
-void usage(FILE *f
d
)
+void usage(FILE *f
p
)
{
{
-
+ fprintf(fp, "LTTngTop %s\n\n", VERSION);
+ fprintf(fp, "Usage : lttngtop /path/to/trace\n");
}
/*
}
/*
@@
-396,7
+385,7
@@
void iter_trace(struct bt_context *bt_ctx)
{
struct bt_ctf_iter *iter;
struct bt_iter_pos begin_pos;
{
struct bt_ctf_iter *iter;
struct bt_iter_pos begin_pos;
- struct bt_ctf_event *event;
+
const
struct bt_ctf_event *event;
int ret = 0;
begin_pos.type = BT_SEEK_BEGIN;
int ret = 0;
begin_pos.type = BT_SEEK_BEGIN;
@@
-429,6
+418,13
@@
void iter_trace(struct bt_context *bt_ctx)
bt_ctf_iter_add_callback(iter,
g_quark_from_static_string("sys_read"),
NULL, 0, handle_sys_read, NULL, NULL, NULL);
bt_ctf_iter_add_callback(iter,
g_quark_from_static_string("sys_read"),
NULL, 0, handle_sys_read, NULL, NULL, NULL);
+ bt_ctf_iter_add_callback(iter,
+ g_quark_from_static_string("sys_open"),
+ NULL, 0, handle_sys_open, NULL, NULL, NULL);
+
+ bt_ctf_iter_add_callback(iter,
+ g_quark_from_static_string("sys_close"),
+ NULL, 0, handle_sys_close, NULL, NULL, NULL);
while ((event = bt_ctf_iter_read_event(iter)) != NULL) {
ret = bt_iter_next(bt_ctf_get_iter(iter));
if (ret < 0)
while ((event = bt_ctf_iter_read_event(iter)) != NULL) {
ret = bt_iter_next(bt_ctf_get_iter(iter));
if (ret < 0)
@@
-439,7
+435,7
@@
void iter_trace(struct bt_context *bt_ctx)
sem_wait(&end_trace_sem);
end_iter:
sem_wait(&end_trace_sem);
end_iter:
- bt_
iter_destroy(bt_ctf_get_iter(iter)
);
+ bt_
ctf_iter_destroy(iter
);
}
/*
}
/*
@@
-566,7
+562,9
@@
int main(int argc, char **argv)
quit = 1;
pthread_join(display_thread, NULL);
quit = 1;
pthread_join(display_thread, NULL);
+ pthread_join(timer_thread, NULL);
end:
end:
+ bt_context_put(bt_ctx);
return 0;
}
return 0;
}
This page took
0.026347 seconds
and
4
git commands to generate.