![]() |
|
|||
0001 /** 0002 * @brief Integration mode, mask signals first 0003 * 0004 * @file rawmain.c 0005 */ 0006 /* ----------------------------------------------------------------------------- 0007 * Enduro/X Middleware Platform for Distributed Transaction Processing 0008 * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved. 0009 * Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved. 0010 * This software is released under one of the following licenses: 0011 * AGPL (with Java and Go exceptions) or Mavimax's license for commercial use. 0012 * See LICENSE file for full text. 0013 * ----------------------------------------------------------------------------- 0014 * AGPL license: 0015 * 0016 * This program is free software; you can redistribute it and/or modify it under 0017 * the terms of the GNU Affero General Public License, version 3 as published 0018 * by the Free Software Foundation; 0019 * 0020 * This program is distributed in the hope that it will be useful, but WITHOUT ANY 0021 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 0022 * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3 0023 * for more details. 0024 * 0025 * You should have received a copy of the GNU Affero General Public License along 0026 * with this program; if not, write to the Free Software Foundation, Inc., 0027 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 0028 * 0029 * ----------------------------------------------------------------------------- 0030 * A commercial use license is available from Mavimax, Ltd 0031 * contact@mavimax.com 0032 * ----------------------------------------------------------------------------- 0033 */ 0034 #include <string.h> 0035 #include <stdio.h> 0036 #include <stdlib.h> 0037 #include <signal.h> 0038 #include <ndebug.h> 0039 #include <memory.h> 0040 #include <atmi.h> 0041 /*---------------------------Externs------------------------------------*/ 0042 extern void NDRX_INTEGRA(tpsvrdone)(void); 0043 extern int NDRX_INTEGRA(tpsvrinit) (int argc, char **argv); 0044 /*---------------------------Macros-------------------------------------*/ 0045 /*---------------------------Enums--------------------------------------*/ 0046 /*---------------------------Typedefs-----------------------------------*/ 0047 /*---------------------------Globals------------------------------------*/ 0048 /*---------------------------Statics------------------------------------*/ 0049 /*---------------------------Prototypes---------------------------------*/ 0050 0051 /* dummy, otherwise sigwait() does not return anything... */ 0052 exprivate void sig_hand(int sig) {} 0053 0054 /* 0055 * Forward the call to NDRX 0056 */ 0057 int main(int argc, char** argv) 0058 { 0059 sigset_t blockMask; 0060 struct sigaction sa; /* Seem on AIX signal might slip.. */ 0061 0062 /* block sigchld first as some IPC mechanisms like systemv start 0063 * threads very early... 0064 */ 0065 sigemptyset(&blockMask); 0066 sigaddset(&blockMask, SIGCHLD); 0067 0068 /* 0069 if (pthread_sigmask(SIG_BLOCK, &blockMask, NULL) == -1) 0070 */ 0071 if (sigprocmask(SIG_BLOCK, &blockMask, NULL) == -1) 0072 { 0073 NDRX_LOG(log_always, "%s: sigprocmask failed: %s", __func__, 0074 strerror(errno)); 0075 return EXFAIL; 0076 } 0077 0078 /* if handler is not set, the sigwait() does not return any results.. */ 0079 sa.sa_handler = sig_hand; 0080 sigemptyset (&sa.sa_mask); 0081 sa.sa_flags = SA_RESTART; /* restart system calls please... */ 0082 sigaction (SIGCHLD, &sa, 0); 0083 0084 return ndrx_main_integra(argc, argv, 0085 NDRX_INTEGRA(tpsvrinit), NDRX_INTEGRA(tpsvrdone), 0); 0086 } 0087 /* vim: set ts=4 sw=4 et smartindent: */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |