2013-06-04 14:20:21 +09:00
/*
* Copyright ( C ) 2012 Red Hat Inc , Steven Rostedt < srostedt @ redhat . com >
*
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ;
* version 2.1 of the License ( not later ! )
*
* 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 Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
*
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*/
# ifndef _KBUFFER_H
# define _KBUFFER_H
# ifndef TS_SHIFT
# define TS_SHIFT 27
# endif
enum kbuffer_endian {
KBUFFER_ENDIAN_BIG ,
KBUFFER_ENDIAN_LITTLE ,
} ;
enum kbuffer_long_size {
KBUFFER_LSIZE_4 ,
KBUFFER_LSIZE_8 ,
} ;
enum {
KBUFFER_TYPE_PADDING = 29 ,
KBUFFER_TYPE_TIME_EXTEND = 30 ,
KBUFFER_TYPE_TIME_STAMP = 31 ,
} ;
struct kbuffer ;
struct kbuffer * kbuffer_alloc ( enum kbuffer_long_size size , enum kbuffer_endian endian ) ;
void kbuffer_free ( struct kbuffer * kbuf ) ;
int kbuffer_load_subbuffer ( struct kbuffer * kbuf , void * subbuffer ) ;
void * kbuffer_read_event ( struct kbuffer * kbuf , unsigned long long * ts ) ;
void * kbuffer_next_event ( struct kbuffer * kbuf , unsigned long long * ts ) ;
unsigned long long kbuffer_timestamp ( struct kbuffer * kbuf ) ;
void * kbuffer_translate_data ( int swap , void * data , unsigned int * size ) ;
void * kbuffer_read_at_offset ( struct kbuffer * kbuf , int offset , unsigned long long * ts ) ;
int kbuffer_curr_index ( struct kbuffer * kbuf ) ;
int kbuffer_curr_offset ( struct kbuffer * kbuf ) ;
int kbuffer_curr_size ( struct kbuffer * kbuf ) ;
int kbuffer_event_size ( struct kbuffer * kbuf ) ;
int kbuffer_missed_events ( struct kbuffer * kbuf ) ;
int kbuffer_subbuffer_size ( struct kbuffer * kbuf ) ;
void kbuffer_set_old_format ( struct kbuffer * kbuf ) ;
2015-03-24 09:57:56 -04:00
int kbuffer_start_of_data ( struct kbuffer * kbuf ) ;
2013-06-04 14:20:21 +09:00
2019-04-01 12:43:09 -04:00
/* Debugging */
struct kbuffer_raw_info {
int type ;
int length ;
unsigned long long delta ;
void * next ;
} ;
/* Read raw data */
struct kbuffer_raw_info * kbuffer_raw_get ( struct kbuffer * kbuf , void * subbuf ,
struct kbuffer_raw_info * info ) ;
2013-06-04 14:20:21 +09:00
# endif /* _K_BUFFER_H */