blob: e4a4a2014260b0de24327d39b87da5f864cdd91b [file] [log] [blame]
/*
*
* (C) COPYRIGHT 2019 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
* Foundation, and any use by you of this program is subject to the terms
* of such GNU licence.
*
* This program is distributed in the hope that 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you can access it online at
* http://www.gnu.org/licenses/gpl-2.0.html.
*
* SPDX-License-Identifier: GPL-2.0
*
*/
#if !defined(_KBASE_TIMELINE_PRIV_H)
#define _KBASE_TIMELINE_PRIV_H
#include <mali_kbase.h>
#include <mali_kbase_tlstream.h>
#include <linux/timer.h>
#include <linux/atomic.h>
#include <linux/mutex.h>
/**
* struct kbase_timeline - timeline state structure
* @streams: The timeline streams generated by kernel
* @autoflush_timer: Autoflush timer
* @autoflush_timer_active: If non-zero autoflush timer is active
* @reader_lock: Reader lock. Only one reader is allowed to
* have access to the timeline streams at any given time.
* @event_queue: Timeline stream event queue
* @bytes_collected: Number of bytes read by user
* @is_enabled: Zero, if timeline is disabled. Timeline stream flags
* otherwise. See kbase_timeline_io_acquire().
* @obj_header_btc: Remaining bytes to copy for the object stream header
* @aux_header_btc: Remaining bytes to copy for the aux stream header
*/
struct kbase_timeline {
struct kbase_tlstream streams[TL_STREAM_TYPE_COUNT];
struct timer_list autoflush_timer;
atomic_t autoflush_timer_active;
struct mutex reader_lock;
wait_queue_head_t event_queue;
#if MALI_UNIT_TEST
atomic_t bytes_collected;
#endif /* MALI_UNIT_TEST */
atomic_t *is_enabled;
size_t obj_header_btc;
size_t aux_header_btc;
};
extern const struct file_operations kbasep_tlstream_fops;
#endif /* _KBASE_TIMELINE_PRIV_H */