1 /* 2 * (c) Copyright 1990-1996 OPEN SOFTWARE FOUNDATION, INC. 3 * (c) Copyright 1990-1996 HEWLETT-PACKARD COMPANY 4 * (c) Copyright 1990-1996 DIGITAL EQUIPMENT CORPORATION 5 * (c) Copyright 1991, 1992 Siemens-Nixdorf Information Systems 6 * To anyone who acknowledges that this file is provided "AS IS" without 7 * any express or implied warranty: permission to use, copy, modify, and 8 * distribute this file for any purpose is hereby granted without fee, 9 * provided that the above copyright notices and this notice appears in 10 * all source code copies, and that none of the names listed above be used 11 * in advertising or publicity pertaining to distribution of the software 12 * without specific, written prior permission. None of these organizations 13 * makes any representations about the suitability of this software for 14 * any purpose. 15 */ 16 /* 17 * Header file for stack management 18 */ 19 #ifndef CMA_STACK 20 #define CMA_STACK 21 22 /* 23 * INCLUDE FILES 24 */ 25 26 #include <cma_tcb_defs.h> 27 #include <cma.h> 28 #include <cma_attr.h> 29 #include <cma_queue.h> 30 #include <cma_stack_int.h> 31 32 /* 33 * CONSTANTS AND MACROS 34 */ 35 36 #if _CMA_UNIPROCESSOR_ 37 # define cma__get_self_tcb() (cma__g_current_thread) 38 #endif 39 40 /* 41 * Round the given value (a) upto cma__g_chunk_size 42 */ 43 #define cma__roundup_chunksize(a) (cma__roundup(a,cma__g_chunk_size)) 44 45 /* 46 * TYPEDEFS 47 */ 48 49 /* 50 * GLOBAL DATA 51 */ 52 53 extern cma__t_list cma__g_stack_clusters; 54 extern cma__t_int_tcb *cma__g_current_thread; 55 extern cma_t_integer cma__g_chunk_size; 56 57 /* 58 * INTERNAL INTERFACES 59 */ 60 61 extern void cma__assign_stack (cma__t_int_stack *,cma__t_int_tcb *); 62 63 extern void cma__free_stack (cma__t_int_stack *); 64 65 extern void cma__free_stack_list (cma__t_queue *); 66 67 #if !_CMA_UNIPROCESSOR_ 68 extern cma__t_int_tcb * cma__get_self_tcb (void); 69 #endif 70 71 extern cma__t_int_tcb * cma__get_sp_tcb (cma_t_address); 72 73 extern cma__t_int_stack * cma__get_stack (cma__t_int_attr *); 74 75 extern void cma__init_stack (void); 76 77 extern void cma__reinit_stack (cma_t_integer); 78 79 #if _CMA_PROTECT_MEMORY_ 80 extern void cma__remap_stack_holes (void); 81 #endif 82 83 #endif 84