1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _NSC_MEM_H 27 #define _NSC_MEM_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #ifndef __NSC_GEN__ 34 Error: Illegal #include - private file. 35 #endif 36 37 38 /* 39 * Macro definitions. 40 */ 41 42 43 /* 44 * Definition of control structure. 45 */ 46 typedef struct nsc_mem_s { 47 struct nsc_mem_s *next; /* Link to next type */ 48 char *name; /* Description */ 49 int type; /* Memory type */ 50 int flag; /* Allocation flags */ 51 size_t used; /* Current usage */ 52 size_t hwm; /* High Water Mark */ 53 int pages; /* Usage in pages */ 54 int pagehwm; /* Page High Water Mark */ 55 caddr_t base; /* Base address of RM area */ 56 int nalloc; /* Number of allocates */ 57 int nfree; /* Number of frees */ 58 int pend; /* Operation pending */ 59 } nsc_mem_t; 60 61 62 /* 63 * Definition of global memory header 64 */ 65 66 #define _NSCTL_HDRMAGIC 0x5344474c /* Magic number for header */ 67 #define _NSCTL_HDRVER 2 /* Version number for header */ 68 #define _NSCTL_HDRVER3 3 /* Version number for header */ 69 #define _NSC_GLSLOT 125 /* Number of global slots */ 70 #define _NSC_GLALIGN 4095 /* Alignment between areas */ 71 72 73 typedef struct nsc_rmhdr_s { 74 uint32_t magic; /* Magic number */ 75 uint32_t ver; /* Version number of header */ 76 uint32_t size; /* Size of header section */ 77 int32_t rh_dirty; /* dirty bit for nvmem */ 78 int32_t maxdev; /* Configured nsc_max_devices */ 79 int32_t pad[14]; /* Future expansion */ 80 nsc_rmmap_t map[1]; /* Start of map array */ 81 } nsc_rmhdr_t; 82 83 extern nsc_rmmap_t *_nsc_global_nvmemmap_lookup(nsc_rmmap_t *); 84 85 extern int _nsc_get_global_sizes(void *, int *); 86 extern int _nsc_get_global_data(void *, int *); 87 extern int _nsc_clear_dirty(int); 88 extern int _nsc_check_mapinuse(void); 89 extern int _nsc_is_nsctl_map(char *); 90 91 extern caddr_t _nsc_rm_base; 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 #endif /* _NSC_MEM_H */