/* * (c) Copyright 1990-1996 OPEN SOFTWARE FOUNDATION, INC. * (c) Copyright 1990-1996 HEWLETT-PACKARD COMPANY * (c) Copyright 1990-1996 DIGITAL EQUIPMENT CORPORATION * (c) Copyright 1991, 1992 Siemens-Nixdorf Information Systems * To anyone who acknowledges that this file is provided "AS IS" without * any express or implied warranty: permission to use, copy, modify, and * distribute this file for any purpose is hereby granted without fee, * provided that the above copyright notices and this notice appears in * all source code copies, and that none of the names listed above be used * in advertising or publicity pertaining to distribution of the software * without specific, written prior permission. None of these organizations * makes any representations about the suitability of this software for * any purpose. */ /* * Header file for stack management */ #ifndef CMA_STACK #define CMA_STACK /* * INCLUDE FILES */ #include #include #include #include #include /* * CONSTANTS AND MACROS */ #if _CMA_UNIPROCESSOR_ # define cma__get_self_tcb() (cma__g_current_thread) #endif /* * Round the given value (a) upto cma__g_chunk_size */ #define cma__roundup_chunksize(a) (cma__roundup(a,cma__g_chunk_size)) /* * TYPEDEFS */ /* * GLOBAL DATA */ extern cma__t_list cma__g_stack_clusters; extern cma__t_int_tcb *cma__g_current_thread; extern cma_t_integer cma__g_chunk_size; /* * INTERNAL INTERFACES */ extern void cma__assign_stack (cma__t_int_stack *,cma__t_int_tcb *); extern void cma__free_stack (cma__t_int_stack *); extern void cma__free_stack_list (cma__t_queue *); #if !_CMA_UNIPROCESSOR_ extern cma__t_int_tcb * cma__get_self_tcb (void); #endif extern cma__t_int_tcb * cma__get_sp_tcb (cma_t_address); extern cma__t_int_stack * cma__get_stack (cma__t_int_attr *); extern void cma__init_stack (void); extern void cma__reinit_stack (cma_t_integer); #if _CMA_PROTECT_MEMORY_ extern void cma__remap_stack_holes (void); #endif #endif