📄 cma_init.h
字号:
/* * (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 CMA initialization */#ifndef CMA_INIT#define CMA_INIT/* * INCLUDE FILES */#include <dce/cma_host.h>#include <cma_errors.h>/* * CONSTANTS AND MACROS */#define cma__c_env_maxattr 0#define cma__c_env_minattr 1#define cma__c_env_maxcond 2#define cma__c_env_mincond 3#define cma__c_env_maxmutex 4#define cma__c_env_minmutex 5#define cma__c_env_maxthread 6#define cma__c_env_minthread 7#define cma__c_env_maxcluster 8#define cma__c_env_mincluster 9#define cma__c_env_maxvp 10#define cma__c_env_multiplex 11#define cma__c_env_trace 12#define cma__c_env_trace_file 13#define cma__c_env_count 13/* * cma__int_init * * Initialize the main body of CMA exactly once. * * We raise an exception if, for some odd reason, there are already threads * in the environment (e.g. kernel threads), and one of them is trying to * initialize CMA before the first thread got all the way through the actual * initialization. This code maintains the invariants: "after successfully * calling CMA_INIT, you can call any CMA function", and "CMA is actually * initialized at most once". *//*#ifndef _HP_LIBC_R */#if defined _HP_LIBC_R ||(defined(SNI_SVR4) && !defined(CMA_INIT_NEEDED))# define cma__int_init()#else# define cma__int_init() { \ if (!cma__tac_isset(&cma__g_init_started)) { \ if (!cma__test_and_set (&cma__g_init_started)) { \ cma__init_static (); \ cma__test_and_set (&cma__g_init_done); \ } \ else if (!cma__tac_isset (&cma__g_init_done)) { \ cma__error (cma_s_inialrpro); \ }}}#endif/* * TYPEDEFS */typedef enum CMA__T_ENV_TYPE { cma__c_env_type_int, cma__c_env_type_file } cma__t_env_type;typedef struct CMA__T_ENV { char *name; /* Name of environment variable */ cma__t_env_type type; /* Type of variable */ cma_t_integer value; /* Numeric value of the variable */ } cma__t_env;/* * GLOBAL DATA */extern cma__t_env cma__g_env[cma__c_env_count];extern cma__t_atomic_bit cma__g_init_started;extern cma__t_atomic_bit cma__g_init_done;extern char *cma__g_version;/* * INTERNAL INTERFACES */extern voidcma__init_static (void); /* Initialize static data */#if _CMA_OS_ != _CMA__VMSextern void cma__init_atfork (void);#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -