1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * Copyright (C) 2008 The Android Open Source Project 3*8d67ca89SAndroid Build Coastguard Worker * All rights reserved. 4*8d67ca89SAndroid Build Coastguard Worker * 5*8d67ca89SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 6*8d67ca89SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 7*8d67ca89SAndroid Build Coastguard Worker * are met: 8*8d67ca89SAndroid Build Coastguard Worker * * Redistributions of source code must retain the above copyright 9*8d67ca89SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 10*8d67ca89SAndroid Build Coastguard Worker * * Redistributions in binary form must reproduce the above copyright 11*8d67ca89SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in 12*8d67ca89SAndroid Build Coastguard Worker * the documentation and/or other materials provided with the 13*8d67ca89SAndroid Build Coastguard Worker * distribution. 14*8d67ca89SAndroid Build Coastguard Worker * 15*8d67ca89SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16*8d67ca89SAndroid Build Coastguard Worker * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17*8d67ca89SAndroid Build Coastguard Worker * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18*8d67ca89SAndroid Build Coastguard Worker * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19*8d67ca89SAndroid Build Coastguard Worker * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20*8d67ca89SAndroid Build Coastguard Worker * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21*8d67ca89SAndroid Build Coastguard Worker * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22*8d67ca89SAndroid Build Coastguard Worker * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23*8d67ca89SAndroid Build Coastguard Worker * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24*8d67ca89SAndroid Build Coastguard Worker * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25*8d67ca89SAndroid Build Coastguard Worker * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*8d67ca89SAndroid Build Coastguard Worker * SUCH DAMAGE. 27*8d67ca89SAndroid Build Coastguard Worker */ 28*8d67ca89SAndroid Build Coastguard Worker /* 29*8d67ca89SAndroid Build Coastguard Worker * Copyright (c) 1982, 1986, 1988, 1993 30*8d67ca89SAndroid Build Coastguard Worker * The Regents of the University of California. All rights reserved. 31*8d67ca89SAndroid Build Coastguard Worker * 32*8d67ca89SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 33*8d67ca89SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 34*8d67ca89SAndroid Build Coastguard Worker * are met: 35*8d67ca89SAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 36*8d67ca89SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 37*8d67ca89SAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 38*8d67ca89SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 39*8d67ca89SAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 40*8d67ca89SAndroid Build Coastguard Worker * 3. Neither the name of the University nor the names of its contributors 41*8d67ca89SAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software 42*8d67ca89SAndroid Build Coastguard Worker * without specific prior written permission. 43*8d67ca89SAndroid Build Coastguard Worker * 44*8d67ca89SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 45*8d67ca89SAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 46*8d67ca89SAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 47*8d67ca89SAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 48*8d67ca89SAndroid Build Coastguard Worker * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 49*8d67ca89SAndroid Build Coastguard Worker * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 50*8d67ca89SAndroid Build Coastguard Worker * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 51*8d67ca89SAndroid Build Coastguard Worker * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 52*8d67ca89SAndroid Build Coastguard Worker * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 53*8d67ca89SAndroid Build Coastguard Worker * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 54*8d67ca89SAndroid Build Coastguard Worker * SUCH DAMAGE. 55*8d67ca89SAndroid Build Coastguard Worker */ 56*8d67ca89SAndroid Build Coastguard Worker 57*8d67ca89SAndroid Build Coastguard Worker #pragma once 58*8d67ca89SAndroid Build Coastguard Worker 59*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h> 60*8d67ca89SAndroid Build Coastguard Worker 61*8d67ca89SAndroid Build Coastguard Worker #include <stdio.h> 62*8d67ca89SAndroid Build Coastguard Worker #include <stdarg.h> 63*8d67ca89SAndroid Build Coastguard Worker 64*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS 65*8d67ca89SAndroid Build Coastguard Worker 66*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android ERROR log priority. */ 67*8d67ca89SAndroid Build Coastguard Worker #define LOG_EMERG 0 68*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android ERROR log priority. */ 69*8d67ca89SAndroid Build Coastguard Worker #define LOG_ALERT 1 70*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android ERROR log priority. */ 71*8d67ca89SAndroid Build Coastguard Worker #define LOG_CRIT 2 72*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android ERROR log priority. */ 73*8d67ca89SAndroid Build Coastguard Worker #define LOG_ERR 3 74*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android WARN log priority. */ 75*8d67ca89SAndroid Build Coastguard Worker #define LOG_WARNING 4 76*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android INFO log priority. */ 77*8d67ca89SAndroid Build Coastguard Worker #define LOG_NOTICE 5 78*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android INFO log priority. */ 79*8d67ca89SAndroid Build Coastguard Worker #define LOG_INFO 6 80*8d67ca89SAndroid Build Coastguard Worker /** Corresponds to the Android DEBUG log priority. */ 81*8d67ca89SAndroid Build Coastguard Worker #define LOG_DEBUG 7 82*8d67ca89SAndroid Build Coastguard Worker 83*8d67ca89SAndroid Build Coastguard Worker #define LOG_PRIMASK 7 84*8d67ca89SAndroid Build Coastguard Worker #define LOG_PRI(x) ((x) & LOG_PRIMASK) 85*8d67ca89SAndroid Build Coastguard Worker #define LOG_MAKEPRI(fac, pri) ((fac) | (pri)) 86*8d67ca89SAndroid Build Coastguard Worker 87*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 88*8d67ca89SAndroid Build Coastguard Worker #define LOG_KERN (0<<3) 89*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 90*8d67ca89SAndroid Build Coastguard Worker #define LOG_USER (1<<3) 91*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 92*8d67ca89SAndroid Build Coastguard Worker #define LOG_MAIL (2<<3) 93*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 94*8d67ca89SAndroid Build Coastguard Worker #define LOG_DAEMON (3<<3) 95*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 96*8d67ca89SAndroid Build Coastguard Worker #define LOG_AUTH (4<<3) 97*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 98*8d67ca89SAndroid Build Coastguard Worker #define LOG_SYSLOG (5<<3) 99*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 100*8d67ca89SAndroid Build Coastguard Worker #define LOG_LPR (6<<3) 101*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 102*8d67ca89SAndroid Build Coastguard Worker #define LOG_NEWS (7<<3) 103*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 104*8d67ca89SAndroid Build Coastguard Worker #define LOG_UUCP (8<<3) 105*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 106*8d67ca89SAndroid Build Coastguard Worker #define LOG_CRON (9<<3) 107*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 108*8d67ca89SAndroid Build Coastguard Worker #define LOG_AUTHPRIV (10<<3) 109*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 110*8d67ca89SAndroid Build Coastguard Worker #define LOG_FTP (11<<3) 111*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 112*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL0 (16<<3) 113*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 114*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL1 (17<<3) 115*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 116*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL2 (18<<3) 117*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 118*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL3 (19<<3) 119*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 120*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL4 (20<<3) 121*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 122*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL5 (21<<3) 123*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 124*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL6 (22<<3) 125*8d67ca89SAndroid Build Coastguard Worker /** Currently ignored on Android. */ 126*8d67ca89SAndroid Build Coastguard Worker #define LOG_LOCAL7 (23<<3) 127*8d67ca89SAndroid Build Coastguard Worker 128*8d67ca89SAndroid Build Coastguard Worker #define LOG_NFACILITIES 24 129*8d67ca89SAndroid Build Coastguard Worker #define LOG_FACMASK 0x3f8 130*8d67ca89SAndroid Build Coastguard Worker #define LOG_FAC(x) (((x) >> 3) & (LOG_FACMASK >> 3)) 131*8d67ca89SAndroid Build Coastguard Worker 132*8d67ca89SAndroid Build Coastguard Worker /** 133*8d67ca89SAndroid Build Coastguard Worker * Converts a log priority into a mask enabling that single priority, 134*8d67ca89SAndroid Build Coastguard Worker * for use with setlogmask(). 135*8d67ca89SAndroid Build Coastguard Worker */ 136*8d67ca89SAndroid Build Coastguard Worker #define LOG_MASK(pri) (1 << (pri)) 137*8d67ca89SAndroid Build Coastguard Worker 138*8d67ca89SAndroid Build Coastguard Worker /** 139*8d67ca89SAndroid Build Coastguard Worker * Converts a log priority into a mask enabling that priority and all lower 140*8d67ca89SAndroid Build Coastguard Worker * priorities, for use with setlogmask(). 141*8d67ca89SAndroid Build Coastguard Worker */ 142*8d67ca89SAndroid Build Coastguard Worker #define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) 143*8d67ca89SAndroid Build Coastguard Worker 144*8d67ca89SAndroid Build Coastguard Worker /** openlog() option ignored on Android. */ 145*8d67ca89SAndroid Build Coastguard Worker #define LOG_PID 0x01 146*8d67ca89SAndroid Build Coastguard Worker /** openlog() option ignored on Android. */ 147*8d67ca89SAndroid Build Coastguard Worker #define LOG_CONS 0x02 148*8d67ca89SAndroid Build Coastguard Worker /** openlog() option ignored on Android. */ 149*8d67ca89SAndroid Build Coastguard Worker #define LOG_ODELAY 0x04 150*8d67ca89SAndroid Build Coastguard Worker /** openlog() option ignored on Android. */ 151*8d67ca89SAndroid Build Coastguard Worker #define LOG_NDELAY 0x08 152*8d67ca89SAndroid Build Coastguard Worker /** openlog() option ignored on Android. */ 153*8d67ca89SAndroid Build Coastguard Worker #define LOG_NOWAIT 0x10 154*8d67ca89SAndroid Build Coastguard Worker /** 155*8d67ca89SAndroid Build Coastguard Worker * openlog() option to log to stderr as well as the system log. 156*8d67ca89SAndroid Build Coastguard Worker * 157*8d67ca89SAndroid Build Coastguard Worker * Available since API level 34 (ignored before then). 158*8d67ca89SAndroid Build Coastguard Worker */ 159*8d67ca89SAndroid Build Coastguard Worker #define LOG_PERROR 0x20 160*8d67ca89SAndroid Build Coastguard Worker 161*8d67ca89SAndroid Build Coastguard Worker #if defined(SYSLOG_NAMES) 162*8d67ca89SAndroid Build Coastguard Worker /** A mapping from name to value, used by `facilitynames` and `prioritynames`. */ 163*8d67ca89SAndroid Build Coastguard Worker typedef struct _code { 164*8d67ca89SAndroid Build Coastguard Worker char* c_name; 165*8d67ca89SAndroid Build Coastguard Worker int c_val; 166*8d67ca89SAndroid Build Coastguard Worker } CODE; 167*8d67ca89SAndroid Build Coastguard Worker /* A bogus facility value for "mark". */ 168*8d67ca89SAndroid Build Coastguard Worker #define INTERNAL_MARK LOG_MAKEPRI((LOG_NFACILITIES<<3), 0) 169*8d67ca89SAndroid Build Coastguard Worker /** A table mapping facility names to values. */ 170*8d67ca89SAndroid Build Coastguard Worker static const CODE facilitynames[] = { 171*8d67ca89SAndroid Build Coastguard Worker { "auth", LOG_AUTH, }, 172*8d67ca89SAndroid Build Coastguard Worker { "authpriv", LOG_AUTHPRIV, }, 173*8d67ca89SAndroid Build Coastguard Worker { "cron", LOG_CRON, }, 174*8d67ca89SAndroid Build Coastguard Worker { "daemon", LOG_DAEMON, }, 175*8d67ca89SAndroid Build Coastguard Worker { "ftp", LOG_FTP, }, 176*8d67ca89SAndroid Build Coastguard Worker { "kern", LOG_KERN, }, 177*8d67ca89SAndroid Build Coastguard Worker { "lpr", LOG_LPR, }, 178*8d67ca89SAndroid Build Coastguard Worker { "mail", LOG_MAIL, }, 179*8d67ca89SAndroid Build Coastguard Worker { "mark", INTERNAL_MARK, }, 180*8d67ca89SAndroid Build Coastguard Worker { "news", LOG_NEWS, }, 181*8d67ca89SAndroid Build Coastguard Worker { "security", LOG_AUTH, }, 182*8d67ca89SAndroid Build Coastguard Worker { "syslog", LOG_SYSLOG, }, 183*8d67ca89SAndroid Build Coastguard Worker { "user", LOG_USER, }, 184*8d67ca89SAndroid Build Coastguard Worker { "uucp", LOG_UUCP, }, 185*8d67ca89SAndroid Build Coastguard Worker { "local0", LOG_LOCAL0, }, 186*8d67ca89SAndroid Build Coastguard Worker { "local1", LOG_LOCAL1, }, 187*8d67ca89SAndroid Build Coastguard Worker { "local2", LOG_LOCAL2, }, 188*8d67ca89SAndroid Build Coastguard Worker { "local3", LOG_LOCAL3, }, 189*8d67ca89SAndroid Build Coastguard Worker { "local4", LOG_LOCAL4, }, 190*8d67ca89SAndroid Build Coastguard Worker { "local5", LOG_LOCAL5, }, 191*8d67ca89SAndroid Build Coastguard Worker { "local6", LOG_LOCAL6, }, 192*8d67ca89SAndroid Build Coastguard Worker { "local7", LOG_LOCAL7, }, 193*8d67ca89SAndroid Build Coastguard Worker { NULL, -1, }, 194*8d67ca89SAndroid Build Coastguard Worker }; 195*8d67ca89SAndroid Build Coastguard Worker /* A bogus priority value for "none". */ 196*8d67ca89SAndroid Build Coastguard Worker #define INTERNAL_NOPRI 8 197*8d67ca89SAndroid Build Coastguard Worker /** A table mapping priority names to values. */ 198*8d67ca89SAndroid Build Coastguard Worker static const CODE prioritynames[] = { 199*8d67ca89SAndroid Build Coastguard Worker { "alert", LOG_ALERT, }, 200*8d67ca89SAndroid Build Coastguard Worker { "crit", LOG_CRIT, }, 201*8d67ca89SAndroid Build Coastguard Worker { "debug", LOG_DEBUG, }, 202*8d67ca89SAndroid Build Coastguard Worker { "emerg", LOG_EMERG, }, 203*8d67ca89SAndroid Build Coastguard Worker { "err", LOG_ERR, }, 204*8d67ca89SAndroid Build Coastguard Worker { "error", LOG_ERR, }, 205*8d67ca89SAndroid Build Coastguard Worker { "info", LOG_INFO, }, 206*8d67ca89SAndroid Build Coastguard Worker { "none", INTERNAL_NOPRI, }, 207*8d67ca89SAndroid Build Coastguard Worker { "notice", LOG_NOTICE, }, 208*8d67ca89SAndroid Build Coastguard Worker { "panic", LOG_EMERG, }, 209*8d67ca89SAndroid Build Coastguard Worker { "warn", LOG_WARNING, }, 210*8d67ca89SAndroid Build Coastguard Worker { "warning", LOG_WARNING, }, 211*8d67ca89SAndroid Build Coastguard Worker { NULL, -1, }, 212*8d67ca89SAndroid Build Coastguard Worker }; 213*8d67ca89SAndroid Build Coastguard Worker #endif 214*8d67ca89SAndroid Build Coastguard Worker 215*8d67ca89SAndroid Build Coastguard Worker /** 216*8d67ca89SAndroid Build Coastguard Worker * [closelog(3)](https://man7.org/linux/man-pages/man3/closelog.3.html) does 217*8d67ca89SAndroid Build Coastguard Worker * nothing on Android. 218*8d67ca89SAndroid Build Coastguard Worker */ 219*8d67ca89SAndroid Build Coastguard Worker void closelog(void); 220*8d67ca89SAndroid Build Coastguard Worker 221*8d67ca89SAndroid Build Coastguard Worker /** 222*8d67ca89SAndroid Build Coastguard Worker * [openlog(3)](https://man7.org/linux/man-pages/man3/openlog.3.html) sets 223*8d67ca89SAndroid Build Coastguard Worker * the log tag to `__prefix`, which can be NULL to return to the default of 224*8d67ca89SAndroid Build Coastguard Worker * getprogname(). On Android, the other two arguments are ignored. 225*8d67ca89SAndroid Build Coastguard Worker */ 226*8d67ca89SAndroid Build Coastguard Worker void openlog(const char* _Nullable __prefix, int __option, int __facility); 227*8d67ca89SAndroid Build Coastguard Worker 228*8d67ca89SAndroid Build Coastguard Worker /** 229*8d67ca89SAndroid Build Coastguard Worker * [setlogmask(3)](https://man7.org/linux/man-pages/man3/setlogmask.3.html) 230*8d67ca89SAndroid Build Coastguard Worker * sets which log priorities will actually be logged. See `LOG_MASK` and 231*8d67ca89SAndroid Build Coastguard Worker * `LOG_UPTO`. 232*8d67ca89SAndroid Build Coastguard Worker */ 233*8d67ca89SAndroid Build Coastguard Worker int setlogmask(int __mask); 234*8d67ca89SAndroid Build Coastguard Worker 235*8d67ca89SAndroid Build Coastguard Worker /** 236*8d67ca89SAndroid Build Coastguard Worker * [syslog(3)](https://man7.org/linux/man-pages/man3/syslog.3.html) formats 237*8d67ca89SAndroid Build Coastguard Worker * the printf()-like message and logs it with the given priority, unless 238*8d67ca89SAndroid Build Coastguard Worker * suppressed by setlogmask(). On Android, the output goes to logcat. 239*8d67ca89SAndroid Build Coastguard Worker */ 240*8d67ca89SAndroid Build Coastguard Worker void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3); 241*8d67ca89SAndroid Build Coastguard Worker 242*8d67ca89SAndroid Build Coastguard Worker /** 243*8d67ca89SAndroid Build Coastguard Worker * [vsyslog(3)](https://man7.org/linux/man-pages/man3/vsyslog.3.html) formats 244*8d67ca89SAndroid Build Coastguard Worker * the vprintf()-like message and logs it with the given priority, unless 245*8d67ca89SAndroid Build Coastguard Worker * suppressed by setlogmask(). On Android, the output goes to logcat. 246*8d67ca89SAndroid Build Coastguard Worker */ 247*8d67ca89SAndroid Build Coastguard Worker void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0); 248*8d67ca89SAndroid Build Coastguard Worker 249*8d67ca89SAndroid Build Coastguard Worker __END_DECLS 250