1446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* 2446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * Copyright (C) 2005-2016 The Android Open Source Project 3446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * 4446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * Licensed under the Apache License, Version 2.0 (the "License"); 5446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * you may not use this file except in compliance with the License. 6446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * You may obtain a copy of the License at 7446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * 8446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * http://www.apache.org/licenses/LICENSE-2.0 9446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * 10446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * Unless required by applicable law or agreed to in writing, software 11446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * distributed under the License is distributed on an "AS IS" BASIS, 12446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * See the License for the specific language governing permissions and 14446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * limitations under the License. 15446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov */ 16446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 17446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* Special log_event_list.h file for VNDK linking modules */ 18446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 19446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#ifndef _LIBS_LOG_EVENT_LIST_H 20446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#define _LIBS_LOG_EVENT_LIST_H 21446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 22446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#include <stdint.h> 23446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 24446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#include <log/log_id.h> 25446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 26446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#ifdef __cplusplus 27446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovextern "C" { 28446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#endif 29446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 30446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#define __ANDROID_USE_LIBLOG_EVENT_INTERFACE 1 31446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 32446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* 33446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * The opaque context used to manipulate lists of events. 34446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov */ 35446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#ifndef __android_log_context_defined 36446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#define __android_log_context_defined 37446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovtypedef struct android_log_context_internal* android_log_context; 38446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#endif 39446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 40446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* 41446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * Creates a context associated with an event tag to write elements to 42446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * the list of events. 43446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov */ 44446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovandroid_log_context create_android_logger(uint32_t tag); 45446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 46446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* All lists must be braced by a begin and end call */ 47446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* 48446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * NB: If the first level braces are missing when specifying multiple 49446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * elements, we will manufacturer a list to embrace it for your API 50446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov * convenience. For a single element, it will remain solitary. 51446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov */ 52446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_list_begin(android_log_context ctx); 53446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_list_end(android_log_context ctx); 54446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 55446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_int32(android_log_context ctx, int32_t value); 56446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_int64(android_log_context ctx, int64_t value); 57446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_string8(android_log_context ctx, const char* value); 58446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_string8_len(android_log_context ctx, const char* value, 59446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov size_t maxlen); 60446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_float32(android_log_context ctx, float value); 61446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 62446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* Submit the composed list context to the specified logger id */ 63446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* NB: LOG_ID_EVENTS and LOG_ID_SECURITY only valid binary buffers */ 64446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_write_list(android_log_context ctx, log_id_t id); 65446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 66446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov/* Finished with reader or writer context */ 67446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafovint android_log_destroy(android_log_context* ctx); 68446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 69446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#ifdef __cplusplus 70446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov} 71446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#endif 72446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov 73446d01c2c71c1b3cd1ab5000a61ff3abe2676cf6Pavel Grafov#endif /* _LIBS_LOG_EVENT_LIST_H */ 74