umem_base.h

Go to the documentation of this file.
00001 /*
00002  * CDDL HEADER START
00003  *
00004  * The contents of this file are subject to the terms of the
00005  * Common Development and Distribution License, Version 1.0 only
00006  * (the "License").  You may not use this file except in compliance
00007  * with the License.
00008  *
00009  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
00010  * or http://www.opensolaris.org/os/licensing.
00011  * See the License for the specific language governing permissions
00012  * and limitations under the License.
00013  *
00014  * When distributing Covered Code, include this CDDL HEADER in each
00015  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
00016  * If applicable, add the following below this CDDL HEADER, with the
00017  * fields enclosed by brackets "[]" replaced with your own identifying
00018  * information: Portions Copyright [yyyy] [name of copyright owner]
00019  *
00020  * CDDL HEADER END
00021  */
00022 /*
00023  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
00024  * Use is subject to license terms.
00025  */
00026 
00027 #ifndef _UMEM_BASE_H
00028 #define _UMEM_BASE_H
00029 
00030 /* #pragma ident        "@(#)umem_base.h        1.4     05/06/08 SMI" */
00031 
00032 #include <umem_impl.h>
00033 
00034 #ifdef  __cplusplus
00035 extern "C" {
00036 #endif
00037 
00038 #include "misc.h"
00039 
00040 extern size_t pagesize;
00041 #undef PAGESIZE
00042 #define PAGESIZE        pagesize
00043 
00044 /*
00045  * umem.c: non-tunables
00046  */
00047 extern vmem_t           *umem_memalign_arena;
00048 
00049 extern int umem_ready;
00050 extern thread_t umem_init_thr;          /* the thread doing the init */
00051 
00052 extern int umem_init(void);             /* do umem's initialization */
00053 /* #pragma rarely_called(umem_init) */
00054 
00055 extern umem_log_header_t *umem_transaction_log;
00056 extern umem_log_header_t *umem_content_log;
00057 extern umem_log_header_t *umem_failure_log;
00058 extern umem_log_header_t *umem_slab_log;
00059 
00060 extern mutex_t umem_init_lock;
00061 
00062 extern mutex_t umem_cache_lock;
00063 extern umem_cache_t umem_null_cache;
00064 
00065 extern mutex_t umem_flags_lock;
00066 
00067 extern mutex_t umem_update_lock;
00068 extern cond_t umem_update_cv;
00069 extern volatile thread_t umem_st_update_thr;
00070 extern thread_t umem_update_thr;
00071 extern struct timeval   umem_update_next;
00072 
00073 extern volatile hrtime_t umem_reap_next;
00074 extern volatile uint32_t umem_reaping;
00075 #define UMEM_REAP_DONE          0x00000000      /* inactive */
00076 #define UMEM_REAP_ADDING        0x00000001      /* umem_reap() is active */
00077 #define UMEM_REAP_ACTIVE        0x00000002      /* update thread is reaping */
00078 
00079 /*
00080  * umem.c: tunables
00081  */
00082 extern uint32_t umem_max_ncpus;
00083 
00084 extern uint32_t umem_stack_depth;
00085 extern uint32_t umem_reap_interval;
00086 extern uint32_t umem_update_interval;
00087 extern uint32_t umem_depot_contention;
00088 extern uint32_t umem_abort;
00089 extern uint32_t umem_output;
00090 extern uint32_t umem_logging;
00091 extern uint32_t umem_mtbf;
00092 extern size_t umem_transaction_log_size;
00093 extern size_t umem_content_log_size;
00094 extern size_t umem_failure_log_size;
00095 extern size_t umem_slab_log_size;
00096 extern size_t umem_content_maxsave;
00097 extern size_t umem_lite_minsize;
00098 extern size_t umem_lite_maxalign;
00099 extern size_t umem_maxverify;
00100 extern size_t umem_minfirewall;
00101 
00102 extern uint32_t umem_flags;
00103 
00104 /*
00105  * umem.c: Internal aliases (to avoid PLTs)
00106  */
00107 extern void *_umem_alloc(size_t size, int umflags);
00108 extern void *_umem_zalloc(size_t size, int umflags);
00109 extern void _umem_free(void *buf, size_t size);
00110 
00111 extern void *_umem_cache_alloc(umem_cache_t *cache, int flags);
00112 extern void _umem_cache_free(umem_cache_t *cache, void *buffer);
00113 
00114 /*
00115  * umem.c: private interfaces
00116  */
00117 extern void umem_type_init(caddr_t, size_t, size_t);
00118 extern int umem_get_max_ncpus(void);
00119 extern void umem_process_updates(void);
00120 extern void umem_cache_applyall(void (*)(umem_cache_t *));
00121 extern void umem_cache_update(umem_cache_t *);
00122 
00123 /*
00124  * umem_fork.c: private interfaces
00125  */
00126 extern void umem_forkhandler_init(void);
00127 
00128 /*
00129  * umem_update_thread.c
00130  */
00131 extern int umem_create_update_thread(void);
00132 
00133 /*
00134  * envvar.c:
00135  */
00136 void umem_setup_envvars(int);
00137 void umem_process_envvars(void);
00138 
00139 #ifdef  __cplusplus
00140 }
00141 #endif
00142 
00143 #endif  /* _UMEM_BASE_H */

Generated on Thu Feb 7 05:40:23 2008 for umem by  doxygen 1.5.4