diff options
author | Ilya Zakharevich <ilya@math.berkeley.edu> | 2001-07-23 15:29:49 -0400 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-07-23 23:04:02 +0000 |
commit | 764df951e4265f932b70873d1d56431da2d2763f (patch) | |
tree | 7c3b6d33f1a91ca057bbb02e382338fdd9a4de55 /os2/os2ish.h | |
parent | 2f217c7c33e3b14680f2e1a724b8a463a35767ea (diff) | |
download | perl-764df951e4265f932b70873d1d56431da2d2763f.tar.gz |
OS/2 multi-architecture
Message-ID: <20010723192949.A14802@math.ohio-state.edu>
p4raw-id: //depot/perl@11462
Diffstat (limited to 'os2/os2ish.h')
-rw-r--r-- | os2/os2ish.h | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/os2/os2ish.h b/os2/os2ish.h index 7f3393ba62..ede75fb77c 100644 --- a/os2/os2ish.h +++ b/os2/os2ish.h @@ -210,31 +210,56 @@ int pthread_create(pthread_t *tid, const pthread_attr_t *attr, #endif /* USE_THREADS */ void Perl_OS2_init(char **); +void Perl_OS2_init3(char **envp, void **excH, int flags); +void Perl_OS2_term(void **excH, int exitstatus, int flags); -/* XXX This code hideously puts env inside: */ +/* The code without INIT3 hideously puts env inside: */ +/* These ones should be in the same block as PERL_SYS_TERM() */ #ifdef PERL_CORE -# define PERL_SYS_INIT3(argcp, argvp, envp) STMT_START { \ + +# define PERL_SYS_INIT3(argcp, argvp, envp) \ + { void *xreg[2]; \ _response(argcp, argvp); \ _wildcard(argcp, argvp); \ - Perl_OS2_init(*envp); } STMT_END -# define PERL_SYS_INIT(argcp, argvp) STMT_START { \ + Perl_OS2_init3(*envp, xreg, 0) + +# define PERL_SYS_INIT(argcp, argvp) { \ + { void *xreg[2]; \ _response(argcp, argvp); \ _wildcard(argcp, argvp); \ - Perl_OS2_init(NULL); } STMT_END + Perl_OS2_init3(NULL, xreg, 0) + #else /* Compiling embedded Perl or Perl extension */ -# define PERL_SYS_INIT3(argcp, argvp, envp) STMT_START { \ - Perl_OS2_init(*envp); } STMT_END -# define PERL_SYS_INIT(argcp, argvp) STMT_START { \ - Perl_OS2_init(NULL); } STMT_END + +# define PERL_SYS_INIT3(argcp, argvp, envp) \ + { void *xreg[2]; \ + Perl_OS2_init3(*envp, xreg, 0) +# define PERL_SYS_INIT(argcp, argvp) { \ + { void *xreg[2]; \ + Perl_OS2_init3(NULL, xreg, 0) #endif +#define FORCE_EMX_DEINIT_EXIT 1 +#define FORCE_EMX_DEINIT_CRT_TERM 2 +#define FORCE_EMX_DEINIT_RUN_ATEXIT 4 + +#define PERL_SYS_TERM2(xreg,flags) \ + Perl_OS2_term(xreg, 0, flags); \ + MALLOC_TERM + +#define PERL_SYS_TERM1(xreg) \ + Perl_OS2_term(xreg, 0, FORCE_EMX_DEINIT_RUN_ATEXIT) + +/* This one should come in pair with PERL_SYS_INIT() and in the same block */ +#define PERL_SYS_TERM() \ + PERL_SYS_TERM1(xreg); \ + } + #ifndef __EMX__ # define PERL_CALLCONV _System #endif -#define PERL_SYS_TERM() MALLOC_TERM - /* #define PERL_SYS_TERM() STMT_START { \ if (Perl_HAB_set) WinTerminate(Perl_hab); } STMT_END */ |