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