1 /* ----------------------------------------------------------------------- * 2 * 3 * Copyright 2003-2009 H. Peter Anvin - All Rights Reserved 4 * Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin 5 * Copyright 2010 Shao Miller 6 * Copyright 2010-2012 Michal Soltys 7 * 8 * Permission is hereby granted, free of charge, to any person 9 * obtaining a copy of this software and associated documentation 10 * files (the "Software"), to deal in the Software without 11 * restriction, including without limitation the rights to use, 12 * copy, modify, merge, publish, distribute, sublicense, and/or 13 * sell copies of the Software, and to permit persons to whom 14 * the Software is furnished to do so, subject to the following 15 * conditions: 16 * 17 * The above copyright notice and this permission notice shall 18 * be included in all copies or substantial portions of the Software. 19 * 20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 22 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 24 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 25 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 27 * OTHER DEALINGS IN THE SOFTWARE. 28 * 29 * ----------------------------------------------------------------------- */ 30 31 #ifndef COM32_CHAIN_UTILITY_H 32 #define COM32_CHAIN_UTILITY_H 33 34 #include <stdint.h> 35 #include <stdio.h> 36 #include <syslinux/disk.h> 37 #include <syslinux/movebits.h> 38 39 /* most (all ?) bpb "types" known to humankind as of 2012 */ 40 enum {bpbUNK, bpbV20, bpbV30, bpbV32, bpbV34, bpbV40, bpbVNT, bpbV70, bpbEXF}; 41 42 /* see utility.c for details */ 43 enum {L2C_CNUL, L2C_CADD, L2C_CMAX}; 44 45 /* first usable and first unusable offsets */ 46 #define dosmin ((addr_t)0x500u) 47 #define dosmax ((addr_t)(*(uint16_t *) 0x413 << 10)) 48 49 void wait_key(void); 50 void lba2chs(disk_chs *dst, const struct disk_info *di, uint64_t lba, int mode); 51 uint32_t get_file_lba(const char *filename); 52 int drvoff_detect(int type); 53 int bpb_detect(const uint8_t *bpb, const char *tag); 54 int guid_is0(const struct guid *guid); 55 56 static inline int warn(const char *x) 57 { 58 return fprintf(stderr, "WARN: %s\n", x); 59 } 60 61 static inline int error(const char *x) 62 { 63 return fprintf(stderr, "ERR: %s\n", x); 64 } 65 66 static inline int crit(const char *x) 67 { 68 return fprintf(stderr, "CRIT: %s @%s:%d\n", x, __FILE__, __LINE__); 69 } 70 71 #define critm() crit("Malloc failure.") 72 73 #endif 74 75 /* vim: set ts=8 sts=4 sw=4 noet: */ 76