1 /* 2 * Copyright (c) 2010-2012 United States Government, as represented by 3 * the Secretary of Defense. All rights reserved. 4 * 5 * based off of the original tools/vtpm_manager code base which is: 6 * Copyright (c) 2005, Intel Corp. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * * Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * * Redistributions in binary form must reproduce the above 16 * copyright notice, this list of conditions and the following 17 * disclaimer in the documentation and/or other materials provided 18 * with the distribution. 19 * * Neither the name of Intel Corporation nor the names of its 20 * contributors may be used to endorse or promote products derived 21 * from this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 32 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 * OF THE POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37 #ifndef __VTPM_LOG_H__ 38 #define __VTPM_LOG_H__ 39 40 #include <stdint.h> // for uint32_t 41 #include <stddef.h> // for pointer NULL 42 #include <stdio.h> 43 #include "tcg.h" 44 45 // =========================== LOGGING ============================== 46 47 // the logging module numbers 48 #define VTPM_LOG_TPM 1 49 #define VTPM_LOG_TPM_DEEP 2 50 #define VTPM_LOG_VTPM 3 51 #define VTPM_LOG_VTPM_DEEP 4 52 #define VTPM_LOG_TXDATA 5 53 54 extern char *module_names[]; 55 56 // Default to standard logging 57 #ifndef LOGGING_MODULES 58 #define LOGGING_MODULES (BITMASK(VTPM_LOG_VTPM)|BITMASK(VTPM_LOG_TPM)) 59 #endif 60 61 // bit-access macros 62 #define BITMASK(idx) ( 1U << (idx) ) 63 #define GETBIT(num,idx) ( ((num) & BITMASK(idx)) >> idx ) 64 #define SETBIT(num,idx) (num) |= BITMASK(idx) 65 #define CLEARBIT(num,idx) (num) &= ( ~ BITMASK(idx) ) 66 67 void printk(const char *fmt, ...); 68 69 #define vtpmloginfo(module, fmt, args...) \ 70 if (GETBIT (LOGGING_MODULES, module) == 1) { \ 71 printk("INFO[%s]: " fmt, module_names[module], ##args); \ 72 } 73 74 #define vtpmloginfomore(module, fmt, args...) \ 75 if (GETBIT (LOGGING_MODULES, module) == 1) { \ 76 printk(fmt,##args); \ 77 } 78 79 #define vtpmlogerror(module, fmt, args...) \ 80 printk("ERROR[%s]: " fmt, module_names[module], ##args); 81 82 //typedef UINT32 tpm_size_t; 83 84 // helper function for the error codes: 85 const char* tpm_get_error_name (TPM_RESULT code); 86 87 #endif // _VTPM_LOG_H_ 88