121 lines
2.4 KiB
C
121 lines
2.4 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
//
|
|
// Samsung's performance logging
|
|
//
|
|
// Copyright (c) 2014 Samsung Electronics Co., Ltd
|
|
// http://www.samsung.com
|
|
|
|
#ifndef PERFLOG_H_
|
|
#define PERFLOG_H_
|
|
|
|
#define PERFLOG_LOC __FILE__, __LINE__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "olog.pb.h"
|
|
|
|
typedef unsigned char uint8;
|
|
typedef unsigned short uint16;
|
|
typedef unsigned int uint32;
|
|
|
|
// extern FILE* perflog_fout;
|
|
#define PERFLOG_PACKET_SIZE 256
|
|
#define PERFLOG_HEADER_SIZE 24
|
|
#define PERFLOG_BUFF_STR_MAX_SIZE (PERFLOG_PACKET_SIZE - PERFLOG_HEADER_SIZE)
|
|
#define PERFLOG_BUFF_STR_MAX_SIZE_FOR_MULTILINE 4096
|
|
#define PERFLOG_BUFF_STR_MAX_SIZE_FOR_EVTI PERFLOG_BUFF_STR_MAX_SIZE - PERFLOG_UINT16_SIZE
|
|
#define PERFLOG_UINT16_SIZE 2
|
|
#define PERFLOG_INT_SIZE 4
|
|
|
|
/* PerfLog Phase 2 :: header format modification
|
|
should be changed to protobuff type
|
|
*/
|
|
typedef enum PerfLogAffectTag {
|
|
AFFECT_K,
|
|
AFFECT_F,
|
|
AFFECT_A
|
|
}PerfLogAffect;
|
|
|
|
typedef enum EvtNamingTag {
|
|
NAMING_LockC,
|
|
NAMING_AppLaunch,
|
|
}EvtNamingTag;
|
|
|
|
typedef enum PerfLevelTag{
|
|
LOW,
|
|
MID,
|
|
HIGH,
|
|
CRITICAL
|
|
}PerfLevelTag;
|
|
|
|
// ###############################################################################
|
|
#pragma pack(push, 1)
|
|
|
|
struct Payload {
|
|
int param1;
|
|
int param2;
|
|
char logbuffer[PERFLOG_BUFF_STR_MAX_SIZE + 1];
|
|
};
|
|
|
|
struct LogPacket {
|
|
#if defined(KPERFMON_KERNEL)
|
|
struct timespec64 logtime;
|
|
#else
|
|
struct timespec logtime;
|
|
#endif
|
|
uint16 logtype;
|
|
uint16 logid;
|
|
uint16 pid;
|
|
uint16 tid;
|
|
struct Payload payload;
|
|
};
|
|
|
|
struct _Timestamp {
|
|
uint8 month;
|
|
uint8 day;
|
|
uint8 hour;
|
|
uint8 minute;
|
|
uint8 second;
|
|
uint16 msecond;
|
|
};
|
|
|
|
struct _PLogPacket {
|
|
struct _Timestamp timestamp;
|
|
uint16 pid;
|
|
uint16 tid;
|
|
|
|
uint8 type;
|
|
uint8 id;
|
|
|
|
char pname[10];
|
|
uint8 context_length;
|
|
char context_buffer[PERFLOG_BUFF_STR_MAX_SIZE + 1];
|
|
};
|
|
|
|
union _uPLogPacket {
|
|
struct _PLogPacket itemes;
|
|
char stream[PERFLOG_HEADER_SIZE + PERFLOG_BUFF_STR_MAX_SIZE];
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
// Start API
|
|
int perflog_sending_log_via_socket(uint16 type, uint16 logid, int param1, int param2, char const *str);
|
|
|
|
int perflog_write(char const * fmt, ...);
|
|
|
|
int perflog_write_log(uint16 type, uint16 logid, char const * fmt, ...);
|
|
|
|
int perflog_write_evt(uint16 maintype, uint16 logid, uint16 param1, char const * fmt, ...);
|
|
|
|
// int perflog_getlog(char **buff);
|
|
// End API
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* #ifdef __cplusplus */
|
|
|
|
#endif
|