Loading include/private/android_logger.h +42 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,46 @@ typedef struct __attribute__((__packed__)) { log_time realtime; } android_log_header_t; /* Event Header Structure to logd */ typedef struct __attribute__((__packed__)) { int32_t tag; // Little Endian Order } android_event_header_t; /* Event payload EVENT_TYPE_INT */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_INT int32_t data; // Little Endian Order } android_event_int_t; /* Event with single EVENT_TYPE_INT */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_int_t payload; } android_log_event_int_t; /* Event payload EVENT_TYPE_LONG */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_LONG int64_t data; // Little Endian Order } android_event_long_t; /* Event with single EVENT_TYPE_LONG */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_long_t payload; } android_log_event_long_t; /* Event payload EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order char data[]; } android_event_string_t; /* Event with single EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_string_t payload; } android_log_event_string_t; #endif liblog/logprint.c +4 −25 Original line number Diff line number Diff line Loading @@ -415,27 +415,6 @@ int android_log_processLogBuffer(struct logger_entry *buf, return 0; } /* * Extract a 4-byte value from a byte stream. */ static inline uint32_t get4LE(const uint8_t* src) { return src[0] | (src[1] << 8) | (src[2] << 16) | (src[3] << 24); } /* * Extract an 8-byte value from a byte stream. */ static inline uint64_t get8LE(const uint8_t* src) { uint32_t low, high; low = src[0] | (src[1] << 8) | (src[2] << 16) | (src[3] << 24); high = src[4] | (src[5] << 8) | (src[6] << 16) | (src[7] << 24); return ((long long) high << 32) | (long long) low; } /* * Recursively convert binary log data to printable form. * Loading Loading @@ -473,7 +452,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 4) return -1; ival = get4LE(eventData); ival = le32toh(*((int32_t *)eventData)); eventData += 4; eventDataLen -= 4; Loading @@ -494,7 +473,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 8) return -1; lval = get8LE(eventData); lval = le64toh(*((int64_t *)eventData)); eventData += 8; eventDataLen -= 8; Loading @@ -515,7 +494,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 4) return -1; strLen = get4LE(eventData); strLen = le32toh(*((int32_t *)eventData)); eventData += 4; eventDataLen -= 4; Loading Loading @@ -630,7 +609,7 @@ int android_log_processBinaryLogBuffer(struct logger_entry *buf, inCount = buf->len; if (inCount < 4) return -1; tagIndex = get4LE(eventData); tagIndex = le32toh(*((int32_t *)eventData)); eventData += 4; inCount -= 4; Loading Loading
include/private/android_logger.h +42 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,46 @@ typedef struct __attribute__((__packed__)) { log_time realtime; } android_log_header_t; /* Event Header Structure to logd */ typedef struct __attribute__((__packed__)) { int32_t tag; // Little Endian Order } android_event_header_t; /* Event payload EVENT_TYPE_INT */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_INT int32_t data; // Little Endian Order } android_event_int_t; /* Event with single EVENT_TYPE_INT */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_int_t payload; } android_log_event_int_t; /* Event payload EVENT_TYPE_LONG */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_LONG int64_t data; // Little Endian Order } android_event_long_t; /* Event with single EVENT_TYPE_LONG */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_long_t payload; } android_log_event_long_t; /* Event payload EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order char data[]; } android_event_string_t; /* Event with single EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_string_t payload; } android_log_event_string_t; #endif
liblog/logprint.c +4 −25 Original line number Diff line number Diff line Loading @@ -415,27 +415,6 @@ int android_log_processLogBuffer(struct logger_entry *buf, return 0; } /* * Extract a 4-byte value from a byte stream. */ static inline uint32_t get4LE(const uint8_t* src) { return src[0] | (src[1] << 8) | (src[2] << 16) | (src[3] << 24); } /* * Extract an 8-byte value from a byte stream. */ static inline uint64_t get8LE(const uint8_t* src) { uint32_t low, high; low = src[0] | (src[1] << 8) | (src[2] << 16) | (src[3] << 24); high = src[4] | (src[5] << 8) | (src[6] << 16) | (src[7] << 24); return ((long long) high << 32) | (long long) low; } /* * Recursively convert binary log data to printable form. * Loading Loading @@ -473,7 +452,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 4) return -1; ival = get4LE(eventData); ival = le32toh(*((int32_t *)eventData)); eventData += 4; eventDataLen -= 4; Loading @@ -494,7 +473,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 8) return -1; lval = get8LE(eventData); lval = le64toh(*((int64_t *)eventData)); eventData += 8; eventDataLen -= 8; Loading @@ -515,7 +494,7 @@ static int android_log_printBinaryEvent(const unsigned char** pEventData, if (eventDataLen < 4) return -1; strLen = get4LE(eventData); strLen = le32toh(*((int32_t *)eventData)); eventData += 4; eventDataLen -= 4; Loading Loading @@ -630,7 +609,7 @@ int android_log_processBinaryLogBuffer(struct logger_entry *buf, inCount = buf->len; if (inCount < 4) return -1; tagIndex = get4LE(eventData); tagIndex = le32toh(*((int32_t *)eventData)); eventData += 4; inCount -= 4; Loading