#ifndef __PROCESSES_LOADED #define __PROCESSES_LOADED 1 /**************************************************************************** ** ** - Sub process functions ** ***************************************************************************** */ /* ************************************************************************* */ /* * * */ /* * HPE CONFIDENTIAL. This software is confidential proprietary software * */ /* * licensed by Hewlett Packard Enterprise Development, LP, and is not * */ /* * authorized to be used, duplicated or disclosed to anyone without the * */ /* * prior written permission of HPE. * */ /* * Copyright 2017 Hewlett Packard Enterprise Development, LP * */ /* * * */ /* * VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential * */ /* * proprietary software licensed by VMS Software, Inc., and is not * */ /* * authorized to be used, duplicated or disclosed to anyone without * */ /* * the prior written permission of VMS Software, Inc. * */ /* * Copyright 2017-2023 VMS Software, Inc. * */ /* * * */ /* ************************************************************************* */ #pragma __nostandard #include #ifdef __cplusplus extern "C" { #define __decc$unknown_params ... #else #define __decc$unknown_params #endif #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size __save # pragma __required_pointer_size 32 #endif /* ** Public typedefs -- 32-bit mode */ #if !defined __PID_T && !defined _DECC_V4_SOURCE # define __PID_T 1 typedef __pid_t pid_t; #endif #if ((defined(__clang__) && (__INITIAL_POINTER_SIZE != 32)) || (__INITIAL_POINTER_SIZE == 64)) && __CRTL_VER >= 80500000 # pragma __required_pointer_size 64 #endif int execv(__const_char_ptr64 __path, char *const __argv[]); int execve(__const_char_ptr64 __path, char *const __argv[], char *const __envp[]); int execvp(__const_char_ptr64 __file, char *const __argv[]); #if (__INITIAL_POINTER_SIZE || defined(__clang__)) &&__CRTL_VER >= 80500000 # pragma __required_pointer_size 32 int _execv32(__const_char_ptr64 __path, char *const __argv[]); int _execve32(__const_char_ptr64 __path, char *const __argv[], char *const __envp[]); int _execvp32(__const_char_ptr64 __file, char *const __argv[]); # pragma __required_pointer_size 64 int _execv64(const char *__path, char *const __argv[]); int _execve64(const char *__path, char *const __argv[], char *const __envp[]); int _execvp64(const char *__file, char *const __argv[]); #endif #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size 64 #endif /* ** DEC C V4 defined execl, execle and execlp without the required arg0. The ** old prototypes are retained for compatibility. */ #ifdef _DECC_V4_SOURCE int execl (char *__name, ...); int execle (char *__name, ...); # if (__INITIAL_POINTER_SIZE || defined(__clang__)) && __CRTL_VER >= 80500000 # pragma __required_pointer_size 32 int _execle32 (char *__name, ...); # pragma __required_pointer_size 64 int _execle64 (char *__name, ...); # endif int execlp (char *__name, ...); #else int execl (const char *__path, const char *arg0, ...); int execle (const char *__path, const char *arg0, ...); # if (__INITIAL_POINTER_SIZE || defined(__clang__)) && __CRTL_VER >= 80500000 # pragma __required_pointer_size 32 int _execle32 (const char *__path, const char *arg0, ...); # pragma __required_pointer_size 64 int _execle64 (const char *__path, const char *arg0, ...); # endif int execlp (const char *__file, const char *arg0, ...); #endif /* ** The pipe function optionally takes additional arguments when not in ** standard compilation. */ #ifdef _POSIX_C_SOURCE int pipe (int __array_fdscptr[2]); #else int pipe (int __array_fdscptr[2], ...); #endif /* ** Function prototypes */ #if defined _POSIX_EXIT && __CRTL_VER >= 70000000 # if __CAN_USE_EXTERN_PREFIX # pragma __extern_prefix __save # pragma __extern_prefix "__posix_" # else # if defined(__clang__) # define wait __posix_wait # define system __posix_system # else # define wait(__p1) __posix_wait(__p1) # define system(__p1) __posix_system(__p1) # endif # endif #endif __pid_t wait(int *__stat_loc); int system (const char *__string); #if defined _POSIX_EXIT && __CRTL_VER >= 70000000 # if __CAN_USE_EXTERN_PREFIX # pragma __extern_prefix __restore # endif #endif /* ** The definition of vfork() is architecture specific */ #if defined(__ALPHA) __int64_ptr32 decc$$get_vfork_jmpbuf(void); # pragma __required_pointer_size __save # pragma __required_pointer_size __long int LIB$GET_CURRENT_INVO_CONTEXT(__int64 *__invo_context); # pragma __required_pointer_size __restore int decc$$alloc_vfork_blocks(void); # define vfork() (decc$$alloc_vfork_blocks() >= 0 ? \ LIB$GET_CURRENT_INVO_CONTEXT(decc$$get_vfork_jmpbuf()) : -1) #elif defined(__ia64) || defined(__x86_64) /* Verified for x86, John Reagan */ /* This might need to be different for __x86_64, but */ /* assume we'll be the same as ia64 for now. */ __int64_ptr32 decc$$get_vfork_jmpbuf(void); int decc$$alloc_vfork_blocks(void); int decc$setjmp1(__int64 *__env); # define vfork() (decc$$alloc_vfork_blocks() >= 0 ? \ decc$setjmp1(decc$$get_vfork_jmpbuf()) : -1) #else # ifndef _DECC_V4_SOURCE __pid_t vfork(void); # else int vfork(void); # endif #endif /* ** Restore the users pointer context */ #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size __restore #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __PROCESSES_LOADED */