diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2009-12-15 15:19:34 -0500 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-15 15:19:34 -0500 |
| commit | 23d149bde3a1020cf8d10da7255d080d0cf7355f (patch) | |
| tree | 77e34557c0d9c524f426acee1f4e08418a3931a1 | |
| parent | 9231ed7a6e9cdf5c91cc8b36484555307e93629f (diff) | |
Comment the tracecmd_input functions
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-input.c | 125 |
1 files changed, 124 insertions, 1 deletions
diff --git a/trace-input.c b/trace-input.c index 3cd6387..3889f66 100644 --- a/trace-input.c +++ b/trace-input.c | |||
| @@ -410,6 +410,14 @@ static int read_ftrace_printk(struct tracecmd_input *handle) | |||
| 410 | return 0; | 410 | return 0; |
| 411 | } | 411 | } |
| 412 | 412 | ||
| 413 | /** | ||
| 414 | * tracecmd_read_headers - read the header information from trace.dat | ||
| 415 | * @handle: input handle for the trace.dat file | ||
| 416 | * | ||
| 417 | * This reads the trace.dat file for various information. Like the | ||
| 418 | * format of the ring buffer, event formats, ftrace formats, kallsyms | ||
| 419 | * and printk. | ||
| 420 | */ | ||
| 413 | int tracecmd_read_headers(struct tracecmd_input *handle) | 421 | int tracecmd_read_headers(struct tracecmd_input *handle) |
| 414 | { | 422 | { |
| 415 | struct pevent *pevent = handle->pevent; | 423 | struct pevent *pevent = handle->pevent; |
| @@ -769,7 +777,19 @@ find_and_read_event(struct tracecmd_input *handle, unsigned long long offset, | |||
| 769 | return read_event(handle, offset, cpu); | 777 | return read_event(handle, offset, cpu); |
| 770 | } | 778 | } |
| 771 | 779 | ||
| 772 | 780 | /** | |
| 781 | * tracecmd_read_at - read a record from a specific offset | ||
| 782 | * @handle: input handle for the trace.dat file | ||
| 783 | * @offset: the offset into the file to find the record | ||
| 784 | * @pcpu: pointer to a variable to store the CPU id the record was found in | ||
| 785 | * | ||
| 786 | * This function is useful when looking for a previous record. | ||
| 787 | * You can store the offset of the record "record->offset" and use that | ||
| 788 | * offset to retreive the record again without needing to store any | ||
| 789 | * other information about the record. | ||
| 790 | * | ||
| 791 | * The record returned must be freed. | ||
| 792 | */ | ||
| 773 | struct record * | 793 | struct record * |
| 774 | tracecmd_read_at(struct tracecmd_input *handle, unsigned long long offset, | 794 | tracecmd_read_at(struct tracecmd_input *handle, unsigned long long offset, |
| 775 | int *pcpu) | 795 | int *pcpu) |
| @@ -793,6 +813,15 @@ tracecmd_read_at(struct tracecmd_input *handle, unsigned long long offset, | |||
| 793 | return find_and_read_event(handle, offset, pcpu); | 813 | return find_and_read_event(handle, offset, pcpu); |
| 794 | } | 814 | } |
| 795 | 815 | ||
| 816 | /** | ||
| 817 | * tracecmd_read_cpu_first - get the first record in a CPU | ||
| 818 | * @handle: input handle for the trace.dat file | ||
| 819 | * @cpu: the CPU to search | ||
| 820 | * | ||
| 821 | * This returns the first (by time) record entry in a given CPU. | ||
| 822 | * | ||
| 823 | * The record returned must be freed. | ||
| 824 | */ | ||
| 796 | struct record * | 825 | struct record * |
| 797 | tracecmd_read_cpu_first(struct tracecmd_input *handle, int cpu) | 826 | tracecmd_read_cpu_first(struct tracecmd_input *handle, int cpu) |
| 798 | { | 827 | { |
| @@ -801,6 +830,15 @@ tracecmd_read_cpu_first(struct tracecmd_input *handle, int cpu) | |||
| 801 | return tracecmd_read_data(handle, cpu); | 830 | return tracecmd_read_data(handle, cpu); |
| 802 | } | 831 | } |
| 803 | 832 | ||
| 833 | /** | ||
| 834 | * tracecmd_read_cpu_last - get the last record in a CPU | ||
| 835 | * @handle: input handle for the trace.dat file | ||
| 836 | * @cpu: the CPU to search | ||
| 837 | * | ||
| 838 | * This returns the last (by time) record entry in a given CPU. | ||
| 839 | * | ||
| 840 | * The record returned must be freed. | ||
| 841 | */ | ||
| 804 | struct record * | 842 | struct record * |
| 805 | tracecmd_read_cpu_last(struct tracecmd_input *handle, int cpu) | 843 | tracecmd_read_cpu_last(struct tracecmd_input *handle, int cpu) |
| 806 | { | 844 | { |
| @@ -826,6 +864,21 @@ tracecmd_read_cpu_last(struct tracecmd_input *handle, int cpu) | |||
| 826 | return tracecmd_read_at(handle, offset, NULL); | 864 | return tracecmd_read_at(handle, offset, NULL); |
| 827 | } | 865 | } |
| 828 | 866 | ||
| 867 | /** | ||
| 868 | * tracecmd_set_cpu_to_timestamp - set the CPU iterator to a given time | ||
| 869 | * @handle: input handle for the trace.dat file | ||
| 870 | * @cpu: the CPU pointer to set | ||
| 871 | * @ts: the timestamp to set the CPU at. | ||
| 872 | * | ||
| 873 | * This sets the CPU iterator used by tracecmd_read_data and | ||
| 874 | * tracecmd_peek_data to a location in the CPU storage near | ||
| 875 | * a given timestamp. It will try to set the iterator to a time before | ||
| 876 | * the time stamp and not actually at a given time. | ||
| 877 | * | ||
| 878 | * To use this to find a record in a time field, call this function | ||
| 879 | * first, than iterate with tracecmd_read_data to find the records | ||
| 880 | * you need. | ||
| 881 | */ | ||
| 829 | int | 882 | int |
| 830 | tracecmd_set_cpu_to_timestamp(struct tracecmd_input *handle, int cpu, | 883 | tracecmd_set_cpu_to_timestamp(struct tracecmd_input *handle, int cpu, |
| 831 | unsigned long long ts) | 884 | unsigned long long ts) |
| @@ -946,6 +999,22 @@ translate_data(struct tracecmd_input *handle, | |||
| 946 | return type_len; | 999 | return type_len; |
| 947 | } | 1000 | } |
| 948 | 1001 | ||
| 1002 | /** | ||
| 1003 | * tracecmd_translate_data - create a record from raw data | ||
| 1004 | * @handle: input handle for the trace.dat file | ||
| 1005 | * @ptr: raw data to read | ||
| 1006 | * @size: the size of the data | ||
| 1007 | * | ||
| 1008 | * This function tries to create a record from some given | ||
| 1009 | * raw data. The data does not need to be from the trace.dat file. | ||
| 1010 | * It can be stored from another location. | ||
| 1011 | * | ||
| 1012 | * Note, since the timestamp is calculated from within the trace | ||
| 1013 | * buffer, the timestamp for the record will be zero, since it | ||
| 1014 | * can't calculate it. | ||
| 1015 | * | ||
| 1016 | * The record returned must be freed. | ||
| 1017 | */ | ||
| 949 | struct record * | 1018 | struct record * |
| 950 | tracecmd_translate_data(struct tracecmd_input *handle, | 1019 | tracecmd_translate_data(struct tracecmd_input *handle, |
| 951 | void *ptr, int size) | 1020 | void *ptr, int size) |
| @@ -977,6 +1046,16 @@ tracecmd_translate_data(struct tracecmd_input *handle, | |||
| 977 | return data; | 1046 | return data; |
| 978 | } | 1047 | } |
| 979 | 1048 | ||
| 1049 | /** | ||
| 1050 | * tracecmd_peek_data - return the record at the current location. | ||
| 1051 | * @handle: input handle for the trace.dat file | ||
| 1052 | * @cpu: the CPU to pull from | ||
| 1053 | * | ||
| 1054 | * This returns the record at the current location of the CPU | ||
| 1055 | * iterator. It does not increment the CPU iterator. | ||
| 1056 | * | ||
| 1057 | * The record returned must be freed. | ||
| 1058 | */ | ||
| 980 | struct record * | 1059 | struct record * |
| 981 | tracecmd_peek_data(struct tracecmd_input *handle, int cpu) | 1060 | tracecmd_peek_data(struct tracecmd_input *handle, int cpu) |
| 982 | { | 1061 | { |
| @@ -1061,6 +1140,16 @@ read_again: | |||
| 1061 | return data; | 1140 | return data; |
| 1062 | } | 1141 | } |
| 1063 | 1142 | ||
| 1143 | /** | ||
| 1144 | * tracecmd_read_data - read the next record and increment | ||
| 1145 | * @handle: input handle for the trace.dat file | ||
| 1146 | * @cpu: the CPU to pull from | ||
| 1147 | * | ||
| 1148 | * This returns the record at the current location of the CPU | ||
| 1149 | * iterator and increments the CPU iterator. | ||
| 1150 | * | ||
| 1151 | * The record returned must be freed. | ||
| 1152 | */ | ||
| 1064 | struct record * | 1153 | struct record * |
| 1065 | tracecmd_read_data(struct tracecmd_input *handle, int cpu) | 1154 | tracecmd_read_data(struct tracecmd_input *handle, int cpu) |
| 1066 | { | 1155 | { |
| @@ -1136,6 +1225,13 @@ static int init_cpu(struct tracecmd_input *handle, int cpu) | |||
| 1136 | return 0; | 1225 | return 0; |
| 1137 | } | 1226 | } |
| 1138 | 1227 | ||
| 1228 | /** | ||
| 1229 | * tracecmd_init_data - prepare reading the data from trace.dat | ||
| 1230 | * @handle: input handle for the trace.dat file | ||
| 1231 | * | ||
| 1232 | * This prepares reading the data from trace.dat. This is called | ||
| 1233 | * after tracecmd_read_headers() and before tracecmd_read_data(). | ||
| 1234 | */ | ||
| 1139 | int tracecmd_init_data(struct tracecmd_input *handle) | 1235 | int tracecmd_init_data(struct tracecmd_input *handle) |
| 1140 | { | 1236 | { |
| 1141 | struct pevent *pevent = handle->pevent; | 1237 | struct pevent *pevent = handle->pevent; |
| @@ -1195,6 +1291,13 @@ int tracecmd_init_data(struct tracecmd_input *handle) | |||
| 1195 | return 0; | 1291 | return 0; |
| 1196 | } | 1292 | } |
| 1197 | 1293 | ||
| 1294 | /** | ||
| 1295 | * tracecmd_print_events - print the events that are stored in trace.dat | ||
| 1296 | * @handle: input handle for the trace.dat file | ||
| 1297 | * | ||
| 1298 | * This is a debugging routine to print out the events that | ||
| 1299 | * are stored in a given trace.dat file. | ||
| 1300 | */ | ||
| 1198 | void tracecmd_print_events(struct tracecmd_input *handle) | 1301 | void tracecmd_print_events(struct tracecmd_input *handle) |
| 1199 | { | 1302 | { |
| 1200 | int ret; | 1303 | int ret; |
| @@ -1211,6 +1314,10 @@ void tracecmd_print_events(struct tracecmd_input *handle) | |||
| 1211 | return; | 1314 | return; |
| 1212 | } | 1315 | } |
| 1213 | 1316 | ||
| 1317 | /** | ||
| 1318 | * tracecmd_open - create a tracecmd_handle from the trace.dat file descriptor | ||
| 1319 | * @fd: the file descriptor for the trace.dat file | ||
| 1320 | */ | ||
| 1214 | struct tracecmd_input *tracecmd_open(int fd) | 1321 | struct tracecmd_input *tracecmd_open(int fd) |
| 1215 | { | 1322 | { |
| 1216 | struct tracecmd_input *handle; | 1323 | struct tracecmd_input *handle; |
| @@ -1268,21 +1375,37 @@ struct tracecmd_input *tracecmd_open(int fd) | |||
| 1268 | return NULL; | 1375 | return NULL; |
| 1269 | } | 1376 | } |
| 1270 | 1377 | ||
| 1378 | /** | ||
| 1379 | * tracecmd_long_size - return the size of "long" for the arch | ||
| 1380 | * @handle: input handle for the trace.dat file | ||
| 1381 | */ | ||
| 1271 | int tracecmd_long_size(struct tracecmd_input *handle) | 1382 | int tracecmd_long_size(struct tracecmd_input *handle) |
| 1272 | { | 1383 | { |
| 1273 | return handle->long_size; | 1384 | return handle->long_size; |
| 1274 | } | 1385 | } |
| 1275 | 1386 | ||
| 1387 | /** | ||
| 1388 | * tracecmd_page_size - return the PAGE_SIZE for the arch | ||
| 1389 | * @handle: input handle for the trace.dat file | ||
| 1390 | */ | ||
| 1276 | int tracecmd_page_size(struct tracecmd_input *handle) | 1391 | int tracecmd_page_size(struct tracecmd_input *handle) |
| 1277 | { | 1392 | { |
| 1278 | return handle->page_size; | 1393 | return handle->page_size; |
| 1279 | } | 1394 | } |
| 1280 | 1395 | ||
| 1396 | /** | ||
| 1397 | * tracecmd_page_size - return the number of CPUs recorded | ||
| 1398 | * @handle: input handle for the trace.dat file | ||
| 1399 | */ | ||
| 1281 | int tracecmd_cpus(struct tracecmd_input *handle) | 1400 | int tracecmd_cpus(struct tracecmd_input *handle) |
| 1282 | { | 1401 | { |
| 1283 | return handle->cpus; | 1402 | return handle->cpus; |
| 1284 | } | 1403 | } |
| 1285 | 1404 | ||
| 1405 | /** | ||
| 1406 | * tracecmd_get_pevent - return the pevent handle | ||
| 1407 | * @handle: input handle for the trace.dat file | ||
| 1408 | */ | ||
| 1286 | struct pevent *tracecmd_get_pevent(struct tracecmd_input *handle) | 1409 | struct pevent *tracecmd_get_pevent(struct tracecmd_input *handle) |
| 1287 | { | 1410 | { |
| 1288 | return handle->pevent; | 1411 | return handle->pevent; |
