|  | /* Copyright (c) 2015 Google Inc | 
|  | * Davide Libenzi <dlibenzi@google.com> | 
|  | * See LICENSE for details. | 
|  | */ | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include <ros/profiler_records.h> | 
|  |  | 
|  | struct hw_trapframe; | 
|  | struct proc; | 
|  | struct file_or_chan; | 
|  | struct cmdbuf; | 
|  |  | 
|  | int profiler_configure(struct cmdbuf *cb); | 
|  | void profiler_append_configure_usage(char *msgbuf, size_t buflen); | 
|  | void profiler_init(void); | 
|  | void profiler_setup(void); | 
|  | void profiler_cleanup(void); | 
|  | void profiler_start(void); | 
|  | void profiler_stop(void); | 
|  | void profiler_push_kernel_backtrace(uintptr_t *pc_list, size_t nr_pcs, | 
|  | uint64_t info); | 
|  | void profiler_push_user_backtrace(uintptr_t *pc_list, size_t nr_pcs, | 
|  | uint64_t info); | 
|  | void profiler_trace_data_flush(void); | 
|  | int profiler_size(void); | 
|  | int profiler_read(void *va, int n); | 
|  | void profiler_notify_mmap(struct proc *p, uintptr_t addr, size_t size, int prot, | 
|  | int flags, struct file_or_chan *foc, size_t offset); | 
|  | void profiler_notify_new_process(struct proc *p); |