123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // 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
|