forked from KolibriOS/kolibrios
212 lines
7.7 KiB
C
212 lines
7.7 KiB
C
|
/****************************************************************************
|
||
|
*
|
||
|
* Open Watcom Project
|
||
|
*
|
||
|
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||
|
*
|
||
|
* ========================================================================
|
||
|
*
|
||
|
* This file contains Original Code and/or Modifications of Original
|
||
|
* Code as defined in and that are subject to the Sybase Open Watcom
|
||
|
* Public License version 1.0 (the 'License'). You may not use this file
|
||
|
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||
|
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||
|
* provided with the Original Code and Modifications, and is also
|
||
|
* available at www.sybase.com/developer/opensource.
|
||
|
*
|
||
|
* The Original Code and all software distributed under the License are
|
||
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||
|
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||
|
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||
|
* NON-INFRINGEMENT. Please see the License for the specific language
|
||
|
* governing rights and limitations under the License.
|
||
|
*
|
||
|
* ========================================================================
|
||
|
*
|
||
|
* Description: Internal CLIB structures and variables.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
|
||
|
#ifndef _RTDATA_H_INCLUDED
|
||
|
#define _RTDATA_H_INCLUDED
|
||
|
|
||
|
#include "variety.h"
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include "errorno.h"
|
||
|
|
||
|
/* DOS based platforms have stdaux/stdprn in addition to stdin/out/err */
|
||
|
#if defined(__DOS__) || defined(__WINDOWS__) || defined(__OSI__)
|
||
|
#define NUM_STD_STREAMS 5
|
||
|
#else
|
||
|
#define NUM_STD_STREAMS 3
|
||
|
#endif
|
||
|
|
||
|
#if defined(__NT__) || defined(__OS2__)
|
||
|
struct __pipe_info {
|
||
|
int isPipe; /* non-zero if it's a pipe */
|
||
|
int pid; /* PID of spawned process */
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
typedef struct __stream_link {
|
||
|
struct __stream_link * next;
|
||
|
struct __iobuf * stream;
|
||
|
unsigned char * _base; /* location of buffer */
|
||
|
int _orientation; /* wide/byte/not oriented */
|
||
|
int _extflags; /* extended flags */
|
||
|
unsigned char _tmpfchar; /* tmpfile number */
|
||
|
unsigned char _filler[sizeof(int)-1];/* explicit padding */
|
||
|
#if defined(__NT__) || defined(__OS2__)
|
||
|
struct __pipe_info pipeInfo; /* pipe-related fields */
|
||
|
#endif
|
||
|
} __stream_link;
|
||
|
|
||
|
typedef void _WCI86FAR FPEhandler( int );
|
||
|
|
||
|
#define _FP_BASE(__fp) ((__fp)->_link->_base)
|
||
|
#ifndef __NETWARE__
|
||
|
#define _FP_ORIENTATION(__fp) ((__fp)->_link->_orientation)
|
||
|
#define _FP_EXTFLAGS(__fp) ((__fp)->_link->_extflags)
|
||
|
#endif
|
||
|
#define _FP_TMPFCHAR(__fp) ((__fp)->_link->_tmpfchar)
|
||
|
#ifndef __NETWARE__
|
||
|
#define _FP_PIPEDATA(__fp) ((__fp)->_link->pipeInfo)
|
||
|
#endif
|
||
|
|
||
|
extern __stream_link *__OpenStreams;
|
||
|
extern __stream_link *__ClosedStreams;
|
||
|
extern char * _WCNEAR __env_mask; /* ptr to char array of flags */
|
||
|
extern FPEhandler *__FPE_handler;
|
||
|
extern void (*__FPE_handler_exit)( void );
|
||
|
#if !defined(__NETWARE__)
|
||
|
extern int _cbyte;
|
||
|
extern int _cbyte2;
|
||
|
extern int _child;
|
||
|
extern int __umaskval;
|
||
|
extern unsigned _curbrk;
|
||
|
extern int _commode;
|
||
|
#endif
|
||
|
#if !defined (_NETWARE_LIBC)
|
||
|
extern unsigned _STACKTOP;
|
||
|
#endif
|
||
|
#if !defined(__QNX__) && !defined(__LINUX__)
|
||
|
extern void (*__Save8087)();/* Ptr to FP state save rtn (spawn) */
|
||
|
extern void (*__Rest8087)();/* Ptr to FP state restore rtn (spawn) */
|
||
|
#endif
|
||
|
extern unsigned short _8087cw; /* control word initializer */
|
||
|
extern unsigned char _no87; /* NO87 environment var defined */
|
||
|
extern unsigned char _8087; /* type of 8087/emulator present */
|
||
|
extern unsigned char _real87; /* 8087 coprocessor hardware present */
|
||
|
#if defined(_M_IX86)
|
||
|
#pragma aux _8087cw "_*";
|
||
|
#pragma aux _no87 "_*";
|
||
|
#pragma aux _8087 "_*";
|
||
|
#pragma aux _real87 "_*";
|
||
|
#endif
|
||
|
#if !defined(__SW_BM)
|
||
|
extern unsigned _STACKLOW;
|
||
|
#endif
|
||
|
|
||
|
#define _RWD_ostream __OpenStreams
|
||
|
#define _RWD_cstream __ClosedStreams
|
||
|
#define _RWD_iob __iob
|
||
|
#if !defined(__NETWARE__)
|
||
|
#define _RWD_threadid _threadid
|
||
|
#endif
|
||
|
#define _RWD_environ environ
|
||
|
#define _RWD_wenviron _wenviron
|
||
|
#define _RWD_env_mask __env_mask
|
||
|
#define _RWD_abort __abort
|
||
|
#define _RWD_sigtab __SIGNALTABLE
|
||
|
#define _RWD_FPE_handler_exit __FPE_handler_exit
|
||
|
#define _RWD_FPE_handler __FPE_handler
|
||
|
#define _RWD_fmode _fmode
|
||
|
#if !defined(__NETWARE__)
|
||
|
#define _RWD_umaskval __umaskval
|
||
|
#define _RWD_cbyte _cbyte
|
||
|
#define _RWD_cbyte2 _cbyte2
|
||
|
#define _RWD_child _child
|
||
|
#define _RWD_amblksiz _amblksiz
|
||
|
#define _RWD_curbrk _curbrk
|
||
|
#define _RWD_dynend _dynend
|
||
|
#define _RWD_psp _psp
|
||
|
#endif
|
||
|
#if !defined (_NETWARE_LIBC)
|
||
|
#define _RWD_stacktop _STACKTOP
|
||
|
#endif
|
||
|
#if !defined(__QNX__) && !defined(__LINUX__)
|
||
|
#define _RWD_Save8087 __Save8087
|
||
|
#define _RWD_Rest8087 __Rest8087
|
||
|
#endif
|
||
|
#define _RWD_8087cw _8087cw
|
||
|
#define _RWD_no87 _no87
|
||
|
#define _RWD_8087 _8087
|
||
|
#define _RWD_real87 _real87
|
||
|
#if !defined(__NETWARE__)
|
||
|
#define _RWD_HShift _HShift
|
||
|
#define _RWD_osmajor _osmajor
|
||
|
#define _RWD_osminor _osminor
|
||
|
#define _RWD_osmode _osmode
|
||
|
#if defined(__NT__)
|
||
|
#define _RWD_osbuild _osbuild
|
||
|
#define _RWD_osver _osver
|
||
|
#define _RWD_winmajor _winmajor
|
||
|
#define _RWD_winminor _winminor
|
||
|
#define _RWD_winver _winver
|
||
|
#endif
|
||
|
#define _RWD_doserrno _DOSERRNO
|
||
|
#endif
|
||
|
#define _RWD_tmpfnext __tmpfnext
|
||
|
#if !defined(_RWD_errno)
|
||
|
#define _RWD_errno _ERRNO
|
||
|
#endif
|
||
|
#define _RWD_nexttok _NEXTTOK
|
||
|
#define _RWD_nextftok _NEXTFTOK
|
||
|
#define _RWD_nextmbtok _NEXTMBTOK
|
||
|
#define _RWD_nextmbftok _NEXTMBFTOK
|
||
|
#define _RWD_nextwtok _NEXTWTOK
|
||
|
#define _RWD_tzname tzname
|
||
|
#define _RWD_timezone timezone
|
||
|
#define _RWD_daylight daylight
|
||
|
#define _RWD_dst_adjust __dst_adjust
|
||
|
#define _RWD_start_dst __start_dst
|
||
|
#define _RWD_end_dst __end_dst
|
||
|
#define _RWD_asctime _RESULT
|
||
|
#ifdef __SW_BM
|
||
|
#define _RWD_cvtbuf __THREADDATAPTR->__cvt_buffer
|
||
|
#else
|
||
|
#define _RWD_cvtbuf cvt_buffer
|
||
|
#endif
|
||
|
#if defined(__NETWARE__)
|
||
|
#define _RWD_ioexit __ioexit
|
||
|
#define _RWD_tmpnambuf (__THREADDATAPTR->__tmpnambuf)
|
||
|
#define _RWD_randnextinit (__THREADDATAPTR->__randnextinit)
|
||
|
#else
|
||
|
#define _RWD_tmpnambuf _tmpname
|
||
|
#define _RWD_randnextinit THREAD_PTR.__randnextinit
|
||
|
#endif
|
||
|
#define _RWD_stacklow _STACKLOW
|
||
|
#define _RWD_randnext _RANDNEXT
|
||
|
#define _RWD_ThreadData _ThreadData
|
||
|
#define _RWD_StaticInitSema _StaticInitSema
|
||
|
#define _RWD_PureErrorFlag _PureErrorFlag
|
||
|
#define _RWD_UndefVfunFlag _UndefVfunFlag
|
||
|
#define _RWD_ModuleInit _ModuleInit
|
||
|
|
||
|
/*
|
||
|
For the sake of efficiency, tell the compiler
|
||
|
that the __exit... routines never return.
|
||
|
*/
|
||
|
_WCRTLINK extern void __exit( unsigned );
|
||
|
#if defined(_M_IX86)
|
||
|
#pragma aux __exit aborts;
|
||
|
#endif
|
||
|
|
||
|
extern void (*__abort)( void ); // Defined in abort.c
|
||
|
extern void __terminate( void ); // Defined in abort.c
|
||
|
|
||
|
#endif // _RTDATA_H_INCLUDED
|