/* * drivers/misc/tegra-profiler/comm.h * * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * */ #ifndef __QUADD_COMM_H__ #define __QUADD_COMM_H__ #include struct quadd_record_data; struct quadd_comm_cap; struct quadd_module_state; struct miscdevice; struct quadd_ring_buffer { char *buf; spinlock_t lock; size_t size; size_t pos_read; size_t pos_write; size_t fill_count; }; struct quadd_parameters; struct quadd_comm_control_interface { int (*start)(void); void (*stop)(void); int (*set_parameters)(struct quadd_parameters *param, uid_t *debug_app_uid); void (*get_capabilities)(struct quadd_comm_cap *cap); void (*get_state)(struct quadd_module_state *state); }; struct quadd_comm_data_interface { void (*put_sample)(struct quadd_record_data *data, char *extra_data, unsigned int extra_length); void (*reset)(void); }; struct quadd_comm_ctx { struct quadd_comm_control_interface *control; struct quadd_ring_buffer rb; size_t rb_size; atomic_t active; struct mutex io_mutex; int nr_users; int params_ok; pid_t process_pid; uid_t debug_app_uid; struct miscdevice *misc_dev; }; struct quadd_comm_data_interface * quadd_comm_events_init(struct quadd_comm_control_interface *control); void quadd_comm_events_exit(void); #endif /* __QUADD_COMM_H__ */