Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../.././../usr/include/vm/sparse_impl.h
Real path: /usr/include/vm/sparse_impl.h
Zurück
/* * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. */ #ifndef _VM_SPARSE_IMPL_H_ #define _VM_SPARSE_IMPL_H_ #ifdef __cplusplus extern "C" { #endif #if defined(_KERNEL) || defined(_KMEMUSER) /* * This file specifies the virtual addresses for VM2's basic tables. * * The basic tables (the reverse map, the freelist buckets, the reverse * map mutexes, the system available colors, the physical address table, * and the freelist equity dispenser) are all set up at boot time by * vm2_init(). * * These structures are treated as arrays. We allocate enough VA space * to hold each complete structure, but we do not allocate backing * physical memory for the parts that will not be used. * * The lengths of the tables have been sized based on the implementation * constraints contained in <vm/sparse.h>'s "vm2_implementation_constraints". */ #if defined(sparc) #define VM2_BASE 0x0000010000000000ULL #elif defined(__amd64) #define VM2_BASE 0xFFFFE20000000000ULL #else #error "Unrecognized platform/CPU" #endif #define MIN_RMG_PFN_SHIFT 9 /* minimum RMs per RMG, as a shift */ /* 2^^36 * sizeof (rm_t) */ #define RM_LENGTH 0x10000000000ULL /* 2^^16 tiles * 2^^5 size codes * 2^^7 colors * sizeof (flb_t) */ #define FLB_LENGTH 0x00400000000ULL /* (2^^36 rm entries / 2^^9 rm entries per lock) * sizeof (rmg_t) */ #define RMG_LENGTH 0x00200000000ULL /* 2^^16 tiles * approximate sizeof (tile_t) */ #define TILE_LENGTH 0x00090000000ULL /* 2^^12 memgrps * (sizeof 2^^16-tile tileset, rounded) */ #define MEMGRPTS_LENGTH 0x00080000000ULL /* 2^^16 tiles * 2^^5 size codes * sizeof (sac_t) */ #define SAC_LENGTH 0x00040000000ULL /* (64 mnodes) * SZC_MAX * TS_NTYPES * sizeof (credits), rounded up */ #define CREDIT_LENGTH 0x00010000000ULL /* (64 mnodes) * TS_NTYPES * (sizeof 2^^16-tile tileset), rounded up */ #define TILESET_LENGTH 0x00008000000ULL /* Memory for the PA Chunk to Tile Chunk mappings */ #define PAC2TC_LENGTH 0x00001000000ULL /* Memory for the Tile Chunk to PA Chunk mappings */ #define TC2PAC_LENGTH 0x00001000000ULL /* 2^^6 mnodes * 32 szcs * KU_NTYPES * sizeof (breadline_t), rounded up */ #define BL_LENGTH 0x00000400000ULL /* (2^^36 rm entries * sizeof (rm_t) / patentry size) * sizeof (pfn_t) */ #define PAT_LENGTH 0x00000400000ULL /* TS_NTYPES * sizeof (2^^16-tile tileset), rounded up */ #define SYSTS_LENGTH 0x00000200000ULL /* (2^^16 tiles) * sizeof (memrange_t) (assumes # memranges < # tiles) */ #define SLMR_LENGTH 0x00000100000ULL /* (2^^16 tiles) * sizeof (memrange_t) (assumes # memranges < # tiles) */ #define SLMRTL_LENGTH 0x00000100000ULL /* * Space for reconcile to maintain the Lost-in-translation list, the sufficiency * of this length is checked on every boot in reconcile_lit_account_for() */ #define LIT_LENGTH 0x00000100000ULL /* 2^^6 mnodes * 2^^7 colors * sizeof (cachelist_t) */ #define CL_LENGTH 0x00000080000ULL /* (MGS_NTYPES + 64 Mnodes) * (size of 2^^12-memgrp memgrpset) */ #define MGSET_LENGTH 0x00000080000ULL /* KU_NTYPES * SZC_MAX * sizeof (fed_t) */ #define FED_LENGTH 0x00000040000ULL /* 2^^12 memgrps * sizeof (memgrp_t), rounded up */ #define MEMGRP_LENGTH 0x00000040000ULL /* 64 mnodes * sizeof (mnode_t), rounded up */ #define MNODE_LENGTH 0x00000020000ULL /* 2 bitmaps * 2^^16 tiles / 8 bits, for sys_tileid_* */ #define TILEID_LENGTH 0x00000004000ULL /* The amount of VA reserved for sparse data structures */ #define VM2_LENGTH 0x13000000000ULL /* * All of these should have entries in vm_sparse.c. For each, there will be * three things: * * rm_t *Rm = (rm_t *)RM_VA; * ... * rm_t *ERm = (rm_t *)(RM_VA + RM_LENGTH); * ... * SR(Rm, rm_id, NULL), */ #define RM_VA (VM2_BASE) #define FLB_VA (RM_VA + RM_LENGTH) #define RMG_VA (FLB_VA + FLB_LENGTH) #define TILE_VA (RMG_VA + RMG_LENGTH) #define MEMGRPTS_VA (TILE_VA + TILE_LENGTH) #define SAC_VA (MEMGRPTS_VA + MEMGRPTS_LENGTH) #define CREDIT_VA (SAC_VA + SAC_LENGTH) #define TILESET_VA (CREDIT_VA + CREDIT_LENGTH) #define PAC2TC_VA (TILESET_VA + TILESET_LENGTH) #define TC2PAC_VA (PAC2TC_VA + PAC2TC_LENGTH) #define BL_VA (TC2PAC_VA + TC2PAC_LENGTH) #define PAT_VA (BL_VA + BL_LENGTH) #define SYSTS_VA (PAT_VA + PAT_LENGTH) #define SLMR_VA (SYSTS_VA + SYSTS_LENGTH) #define SLMRTL_VA (SLMR_VA + SLMR_LENGTH) #define LIT_VA (SLMRTL_VA + SLMRTL_LENGTH) #define CL_VA (LIT_VA + LIT_LENGTH) #define MGSET_VA (CL_VA + CL_LENGTH) #define FED_VA (MGSET_VA + MGSET_LENGTH) #define MEMGRP_VA (FED_VA + FED_LENGTH) #define MNODE_VA (MEMGRP_VA + MEMGRP_LENGTH) #define TILEID_VA (MNODE_VA + MNODE_LENGTH) #define VM2_BOUND (VM2_BASE + VM2_LENGTH) #if (TILEID_VA + TILEID_LENGTH) > VM2_BOUND #error Need to increase VM2_BOUND #endif typedef struct sparse_range { uintptr_t sr_va; size_t sr_length; size_t sr_elsize; } sparse_range_t; #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _VM_SPARSE_IMPL_H_ */