mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 15:53:33 +08:00
perf: Allow printing to arbritrary fds
This commit is contained in:
@@ -281,13 +281,19 @@ perf_reset(perf_counter_t handle)
|
|||||||
|
|
||||||
void
|
void
|
||||||
perf_print_counter(perf_counter_t handle)
|
perf_print_counter(perf_counter_t handle)
|
||||||
|
{
|
||||||
|
perf_print_counter_fd(0, handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
perf_print_counter_fd(int fd, perf_counter_t handle)
|
||||||
{
|
{
|
||||||
if (handle == NULL)
|
if (handle == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (handle->type) {
|
switch (handle->type) {
|
||||||
case PC_COUNT:
|
case PC_COUNT:
|
||||||
printf("%s: %llu events\n",
|
dprintf(fd, "%s: %llu events\n",
|
||||||
handle->name,
|
handle->name,
|
||||||
((struct perf_ctr_count *)handle)->event_count);
|
((struct perf_ctr_count *)handle)->event_count);
|
||||||
break;
|
break;
|
||||||
@@ -295,7 +301,7 @@ perf_print_counter(perf_counter_t handle)
|
|||||||
case PC_ELAPSED: {
|
case PC_ELAPSED: {
|
||||||
struct perf_ctr_elapsed *pce = (struct perf_ctr_elapsed *)handle;
|
struct perf_ctr_elapsed *pce = (struct perf_ctr_elapsed *)handle;
|
||||||
|
|
||||||
printf("%s: %llu events, %lluus elapsed, %llu avg, min %lluus max %lluus\n",
|
dprintf(fd, "%s: %llu events, %lluus elapsed, %llu avg, min %lluus max %lluus\n",
|
||||||
handle->name,
|
handle->name,
|
||||||
pce->event_count,
|
pce->event_count,
|
||||||
pce->time_total,
|
pce->time_total,
|
||||||
@@ -308,7 +314,7 @@ perf_print_counter(perf_counter_t handle)
|
|||||||
case PC_INTERVAL: {
|
case PC_INTERVAL: {
|
||||||
struct perf_ctr_interval *pci = (struct perf_ctr_interval *)handle;
|
struct perf_ctr_interval *pci = (struct perf_ctr_interval *)handle;
|
||||||
|
|
||||||
printf("%s: %llu events, %llu avg, min %lluus max %lluus\n",
|
dprintf(fd, "%s: %llu events, %llu avg, min %lluus max %lluus\n",
|
||||||
handle->name,
|
handle->name,
|
||||||
pci->event_count,
|
pci->event_count,
|
||||||
(pci->time_last - pci->time_first) / pci->event_count,
|
(pci->time_last - pci->time_first) / pci->event_count,
|
||||||
@@ -349,12 +355,12 @@ perf_event_count(perf_counter_t handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
perf_print_all(void)
|
perf_print_all(int fd)
|
||||||
{
|
{
|
||||||
perf_counter_t handle = (perf_counter_t)sq_peek(&perf_counters);
|
perf_counter_t handle = (perf_counter_t)sq_peek(&perf_counters);
|
||||||
|
|
||||||
while (handle != NULL) {
|
while (handle != NULL) {
|
||||||
perf_print_counter(handle);
|
perf_print_counter_fd(fd, handle);
|
||||||
handle = (perf_counter_t)sq_next(&handle->link);
|
handle = (perf_counter_t)sq_next(&handle->link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,16 +121,26 @@ __EXPORT extern void perf_cancel(perf_counter_t handle);
|
|||||||
__EXPORT extern void perf_reset(perf_counter_t handle);
|
__EXPORT extern void perf_reset(perf_counter_t handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print one performance counter.
|
* Print one performance counter to stdout
|
||||||
*
|
*
|
||||||
* @param handle The counter to print.
|
* @param handle The counter to print.
|
||||||
*/
|
*/
|
||||||
__EXPORT extern void perf_print_counter(perf_counter_t handle);
|
__EXPORT extern void perf_print_counter(perf_counter_t handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print all of the performance counters.
|
* Print one performance counter to a fd.
|
||||||
|
*
|
||||||
|
* @param fd File descriptor to print to - e.g. 0 for stdout
|
||||||
|
* @param handle The counter to print.
|
||||||
*/
|
*/
|
||||||
__EXPORT extern void perf_print_all(void);
|
__EXPORT extern void perf_print_counter_fd(int fd, perf_counter_t handle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print all of the performance counters.
|
||||||
|
*
|
||||||
|
* @param fd File descriptor to print to - e.g. 0 for stdout
|
||||||
|
*/
|
||||||
|
__EXPORT extern void perf_print_all(int fd);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset all of the performance counters.
|
* Reset all of the performance counters.
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ int perf_main(int argc, char *argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
perf_print_all();
|
perf_print_all(0 /* stdout */);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ test_perf(int argc, char *argv[])
|
|||||||
printf("perf: expect count of 1\n");
|
printf("perf: expect count of 1\n");
|
||||||
perf_print_counter(ec);
|
perf_print_counter(ec);
|
||||||
printf("perf: expect at least two counters\n");
|
printf("perf: expect at least two counters\n");
|
||||||
perf_print_all();
|
perf_print_all(0);
|
||||||
|
|
||||||
perf_free(cc);
|
perf_free(cc);
|
||||||
perf_free(ec);
|
perf_free(ec);
|
||||||
|
|||||||
Reference in New Issue
Block a user