From: "Yordan Karadzhov (VMware)" <y.karadz@gmail.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-devel@vger.kernel.org
Subject: Re: [PATCH v3 2/3] kernel-shark-qt: Add I/O for configuration data.
Date: Fri, 17 Aug 2018 12:32:13 +0300 [thread overview]
Message-ID: <0a535d0f-333c-f002-970c-33c5a8937b05@gmail.com> (raw)
In-Reply-To: <20180816145219.7e91e435@gandalf.local.home>
Hi Steven
On 16.08.2018 21:52, Steven Rostedt wrote:
>> + jfile_name = json_object_new_string(file);
>> + jtime = json_object_new_int64(st.st_mtime);
> BTW, are you saving the timestamp to make sure the trace.dat file is
> the same? (assuming that the 'file' in question is trace.dat)
>
> What if we want to use the same "session" for different trace.dat files?
>
If the timestamp is different then the import will fail (see below).
If you really want to load the session with a different file you can
hand-edit the Json file and make it match.
>> +static bool kshark_trace_file_from_json(const char **file,
>> + struct json_object *jobj)
>> +{
>> + struct json_object *jfile_name, *jtime;
>> + const char *file_str;
>> + struct stat st;
>> + int64_t time;
>> +
>> + if (!jobj)
>> + return false;
>> +
>> + if (!kshark_json_type_check(jobj, "kshark.data.config") ||
>> + !json_object_object_get_ex(jobj, "file", &jfile_name) ||
>> + !json_object_object_get_ex(jobj, "time", &jtime)) {
>> + fprintf(stderr,
>> + "Failed to retrieve data file from json_object.\n");
>> + return false;
>> + }
>> +
>> + file_str = json_object_get_string(jfile_name);
>> + time = json_object_get_int64(jtime);
>> +
>> + if (stat(file_str, &st) != 0) {
>> + fprintf(stderr, "Unable to find file %s\n", file_str);
>> + return false;
>> + }
>> +
>> + if (st.st_mtime != time) {
Here we check the timestamp.
>> + fprintf(stderr,"Timestamp mismatch!\nFile %s", file_str);
>> + return false;
>> + }
>> +
>> + *file = file_str;
>> +
>> + return true;
>> +}
>> +
>> +/**
>> + * @brief Read the name of a trace data file and its timestamp from a
>> + * Configuration document and check if such a file exists.
>> + * If the file exists, open it.
>> + *
>> + * @param kshark_ctx: Input location for session context pointer.
>> + * @param conf: Input location for the kshark_config_doc instance.
Currently
>> + * only Json format is supported.
>> + *
>> + * @returns The name of the file on success. Else NULL.
> s/on success. Else/on success, otherwise/
>
> There also needs to be a statement stating that "file" is an internal
> element of @conf and should not be modified, and is undefined if @conf
> is destroyed (freed).
>
>> + */
>> +const char* kshark_import_trace_file(struct kshark_context *kshark_ctx,
>> + struct kshark_config_doc *conf)
>> +{
>> + const char *file = NULL;
>> + switch (conf->format) {
>> + case KS_CONFIG_JSON:
>> + if (kshark_trace_file_from_json(&file, conf->conf_doc))
>> + kshark_open(kshark_ctx, file);
>> +
>> + break;
next prev parent reply other threads:[~2018-08-17 12:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-16 15:07 [PATCH v3 1/3] kernel-shark-qt: Add Json-C as a third party dependency Yordan Karadzhov (VMware)
2018-08-16 15:07 ` [PATCH v3 2/3] kernel-shark-qt: Add I/O for configuration data Yordan Karadzhov (VMware)
2018-08-16 18:52 ` Steven Rostedt
2018-08-17 9:32 ` Yordan Karadzhov (VMware) [this message]
2018-08-17 12:49 ` Steven Rostedt
2018-08-17 14:13 ` Yordan Karadzhov (VMware)
2018-08-17 14:58 ` Steven Rostedt
2018-08-17 15:09 ` Yordan Karadzhov (VMware)
2018-08-17 15:12 ` Steven Rostedt
2018-08-17 15:29 ` Yordan Karadzhov (VMware)
2018-08-17 15:34 ` Steven Rostedt
2018-08-17 9:34 ` Yordan Karadzhov (VMware)
2018-08-17 12:52 ` Steven Rostedt
2018-08-17 14:15 ` Yordan Karadzhov (VMware)
2018-08-16 15:07 ` [PATCH v3 3/3] kernel-shark-qt: Add an example showing how to import/export config. data Yordan Karadzhov (VMware)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0a535d0f-333c-f002-970c-33c5a8937b05@gmail.com \
--to=y.karadz@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).