1*598139dcSAndroid Build Coastguard Worker /* 2*598139dcSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*598139dcSAndroid Build Coastguard Worker * 4*598139dcSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*598139dcSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*598139dcSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*598139dcSAndroid Build Coastguard Worker * 8*598139dcSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*598139dcSAndroid Build Coastguard Worker * 10*598139dcSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*598139dcSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*598139dcSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*598139dcSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*598139dcSAndroid Build Coastguard Worker * limitations under the License. 15*598139dcSAndroid Build Coastguard Worker */ 16*598139dcSAndroid Build Coastguard Worker 17*598139dcSAndroid Build Coastguard Worker #pragma once 18*598139dcSAndroid Build Coastguard Worker 19*598139dcSAndroid Build Coastguard Worker #include <stdatomic.h> 20*598139dcSAndroid Build Coastguard Worker #include <sys/cdefs.h> 21*598139dcSAndroid Build Coastguard Worker 22*598139dcSAndroid Build Coastguard Worker #include <log/log.h> 23*598139dcSAndroid Build Coastguard Worker 24*598139dcSAndroid Build Coastguard Worker #include "uio.h" 25*598139dcSAndroid Build Coastguard Worker 26*598139dcSAndroid Build Coastguard Worker __BEGIN_DECLS 27*598139dcSAndroid Build Coastguard Worker 28*598139dcSAndroid Build Coastguard Worker struct logger_list { 29*598139dcSAndroid Build Coastguard Worker atomic_int fd; 30*598139dcSAndroid Build Coastguard Worker int mode; 31*598139dcSAndroid Build Coastguard Worker unsigned int tail; 32*598139dcSAndroid Build Coastguard Worker log_time start; 33*598139dcSAndroid Build Coastguard Worker pid_t pid; 34*598139dcSAndroid Build Coastguard Worker uint32_t log_mask; 35*598139dcSAndroid Build Coastguard Worker }; 36*598139dcSAndroid Build Coastguard Worker 37*598139dcSAndroid Build Coastguard Worker // Format for a 'logger' entry: uintptr_t where only the bottom 32 bits are used. 38*598139dcSAndroid Build Coastguard Worker // bit 31: Set if this 'logger' is for logd. 39*598139dcSAndroid Build Coastguard Worker // bit 30: Set if this 'logger' is for pmsg 40*598139dcSAndroid Build Coastguard Worker // bits 0-2: the decimal value of the log buffer. 41*598139dcSAndroid Build Coastguard Worker // Other bits are unused. 42*598139dcSAndroid Build Coastguard Worker 43*598139dcSAndroid Build Coastguard Worker #define LOGGER_LOGD (1U << 31) 44*598139dcSAndroid Build Coastguard Worker #define LOGGER_PMSG (1U << 30) 45*598139dcSAndroid Build Coastguard Worker #define LOGGER_LOG_ID_MASK ((1U << 3) - 1) 46*598139dcSAndroid Build Coastguard Worker android_logger_is_logd(struct logger * logger)47*598139dcSAndroid Build Coastguard Workerinline bool android_logger_is_logd(struct logger* logger) { 48*598139dcSAndroid Build Coastguard Worker return reinterpret_cast<uintptr_t>(logger) & LOGGER_LOGD; 49*598139dcSAndroid Build Coastguard Worker } 50*598139dcSAndroid Build Coastguard Worker 51*598139dcSAndroid Build Coastguard Worker __END_DECLS 52