blob: 9710d533946f8d132a6187b7f58a59cc523586ff [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include "libkshark.h"
int main(int argc, char **argv)
{
struct kshark_config_doc *conf, *filter, *hello;
struct kshark_context *kshark_ctx;
struct kshark_data_stream *stream;
int sd, *ids = NULL, i;
/* Create a new kshark session. */
kshark_ctx = NULL;
if (!kshark_instance(&kshark_ctx))
return 1;
sd = kshark_add_stream(kshark_ctx);
stream = kshark_ctx->stream[sd];
if (argc == 1) {
kshark_hash_id_add(stream->show_task_filter, 314);
kshark_hash_id_add(stream->show_task_filter, 42);
/* Create a new Confog. doc. */
conf = kshark_config_new("foo.bar.config", KS_CONFIG_JSON);
/* Add filter's info. */
filter = kshark_export_all_filters(kshark_ctx, sd, KS_CONFIG_JSON);
kshark_config_doc_add(conf, "Filters" ,filter);
/* Add "Hello Kernel" message. */
hello = kshark_string_config_alloc();
hello->conf_doc = "Hello Kernel";
kshark_config_doc_add(conf, "Message" ,hello);
/* Save to file. */
kshark_save_config_file("conf.json", conf);
} else {
/* Open a Config. file. */
conf = kshark_open_config_file(argv[1], "foo.bar.config");
/* Retrieve the filter's info. */
filter = kshark_config_alloc(KS_CONFIG_JSON);
if (kshark_config_doc_get(conf, "Filters" ,filter)) {
kshark_import_all_filters(kshark_ctx, sd, filter);
/* Get the array of Ids to be fitered. */
ids = kshark_hash_ids(stream->show_task_filter);
for (i = 0; i < stream->show_task_filter->count; ++i)
printf("pid: %i\n", ids[i]);
}
/* Retrieve the message. */
hello = kshark_string_config_alloc();
if (kshark_config_doc_get(conf, "Message" ,hello))
puts((char *) hello->conf_doc);
free(filter);
free(hello);
free(ids);
}
kshark_free_config_doc(conf);
kshark_close(kshark_ctx, sd);
kshark_free(kshark_ctx);
return 0;
}