1*21d6f4c7Spalle /* $NetBSD: mdesc.h,v 1.5 2016/06/22 20:13:00 palle Exp $ */ 21f23b7fbSpalle /* $OpenBSD: mdesc.h,v 1.3 2014/11/30 22:26:14 kettenis Exp $ */ 31f23b7fbSpalle /* 41f23b7fbSpalle * Copyright (c) 2009 Mark Kettenis 51f23b7fbSpalle * 61f23b7fbSpalle * Permission to use, copy, modify, and distribute this software for any 71f23b7fbSpalle * purpose with or without fee is hereby granted, provided that the above 81f23b7fbSpalle * copyright notice and this permission notice appear in all copies. 91f23b7fbSpalle * 101f23b7fbSpalle * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 111f23b7fbSpalle * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 121f23b7fbSpalle * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 131f23b7fbSpalle * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 141f23b7fbSpalle * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 151f23b7fbSpalle * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 161f23b7fbSpalle * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 171f23b7fbSpalle */ 181f23b7fbSpalle 19*21d6f4c7Spalle #ifndef _MDESC_H_ 20*21d6f4c7Spalle #define _MDESC_H_ 21*21d6f4c7Spalle 221f23b7fbSpalle struct md_header { 231f23b7fbSpalle uint32_t transport_version; 241f23b7fbSpalle uint32_t node_blk_sz; 251f23b7fbSpalle uint32_t name_blk_sz; 261f23b7fbSpalle uint32_t data_blk_sz; 271f23b7fbSpalle }; 281f23b7fbSpalle 291f23b7fbSpalle struct md_element { 301f23b7fbSpalle uint8_t tag; 311f23b7fbSpalle uint8_t name_len; 321f23b7fbSpalle uint16_t _reserved_field; 331f23b7fbSpalle uint32_t name_offset; 341f23b7fbSpalle union { 351f23b7fbSpalle struct { 361f23b7fbSpalle uint32_t data_len; 371f23b7fbSpalle uint32_t data_offset; 381f23b7fbSpalle } y; 391f23b7fbSpalle uint64_t val; 401f23b7fbSpalle } d; 411f23b7fbSpalle }; 421f23b7fbSpalle 43*21d6f4c7Spalle extern vaddr_t mdesc; 44*21d6f4c7Spalle 451f23b7fbSpalle #ifdef _KERNEL 46a14c9942Smartin psize_t mdesc_get_len(void); 47a14c9942Smartin void mdesc_init(vaddr_t, paddr_t, psize_t); 481f23b7fbSpalle uint64_t mdesc_get_prop_val(int, const char *); 491f23b7fbSpalle const char *mdesc_get_prop_str(int, const char *); 501f23b7fbSpalle const char *mdesc_get_prop_data(int, const char *, size_t *); 511f23b7fbSpalle int mdesc_find(const char *, uint64_t); 521f23b7fbSpalle int mdesc_find_child(int, const char *, uint64_t); 531f23b7fbSpalle int mdesc_find_node(const char *); 549b99954aSpalle int mdesc_find_node_by_idx(int, const char *); 559b99954aSpalle int mdesc_next_node(int); 5632713ed7Spalle const char *mdesc_name_by_idx(int); 571f23b7fbSpalle #endif 58*21d6f4c7Spalle 59*21d6f4c7Spalle #endif /* _MDESC_H_ */ 60