1*f7701b5eSkettenis /* $OpenBSD: mdesc.h,v 1.4 2019/10/20 16:27:19 kettenis Exp $ */ 2e4edc0c7Skettenis /* 3e4edc0c7Skettenis * Copyright (c) 2009 Mark Kettenis 4e4edc0c7Skettenis * 5e4edc0c7Skettenis * Permission to use, copy, modify, and distribute this software for any 6e4edc0c7Skettenis * purpose with or without fee is hereby granted, provided that the above 7e4edc0c7Skettenis * copyright notice and this permission notice appear in all copies. 8e4edc0c7Skettenis * 9e4edc0c7Skettenis * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10e4edc0c7Skettenis * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11e4edc0c7Skettenis * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12e4edc0c7Skettenis * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13e4edc0c7Skettenis * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14e4edc0c7Skettenis * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15e4edc0c7Skettenis * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16e4edc0c7Skettenis */ 17e4edc0c7Skettenis 18e4edc0c7Skettenis struct md_header { 19e4edc0c7Skettenis uint32_t transport_version; 20e4edc0c7Skettenis uint32_t node_blk_sz; 21e4edc0c7Skettenis uint32_t name_blk_sz; 22e4edc0c7Skettenis uint32_t data_blk_sz; 23e4edc0c7Skettenis }; 24e4edc0c7Skettenis 25e4edc0c7Skettenis struct md_element { 26e4edc0c7Skettenis uint8_t tag; 27e4edc0c7Skettenis uint8_t name_len; 28e4edc0c7Skettenis uint16_t _reserved_field; 29e4edc0c7Skettenis uint32_t name_offset; 30e4edc0c7Skettenis union { 31e4edc0c7Skettenis struct { 32e4edc0c7Skettenis uint32_t data_len; 33e4edc0c7Skettenis uint32_t data_offset; 34e4edc0c7Skettenis } y; 35e4edc0c7Skettenis uint64_t val; 36e4edc0c7Skettenis } d; 37e4edc0c7Skettenis }; 38e4edc0c7Skettenis 39e4edc0c7Skettenis #ifdef _KERNEL 40*f7701b5eSkettenis 41e4edc0c7Skettenis extern caddr_t mdesc; 42e4edc0c7Skettenis extern size_t mdesc_len; 43e4edc0c7Skettenis 44*f7701b5eSkettenis extern caddr_t pri; 45*f7701b5eSkettenis extern size_t pri_len; 46*f7701b5eSkettenis 47e4edc0c7Skettenis void mdesc_init(void); 48e4edc0c7Skettenis uint64_t mdesc_get_prop_val(int, const char *); 490b1ae31bSkettenis const char *mdesc_get_prop_str(int, const char *); 50465290deSkettenis const char *mdesc_get_prop_data(int, const char *, size_t *); 51e4edc0c7Skettenis int mdesc_find(const char *, uint64_t); 52e4edc0c7Skettenis int mdesc_find_child(int, const char *, uint64_t); 53465290deSkettenis int mdesc_find_node(const char *); 54*f7701b5eSkettenis 55e4edc0c7Skettenis #endif 56