home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s038 / 10.ddi / 017.LIF / REENT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-02  |  3.3 KB  |  127 lines

  1. /* reent.h - iC86 header file for reentrancy hooks
  2.  * $Version: 1.1 $
  3.  * Copyright (c) 1988-91 Intel Corporation, ALL RIGHTS RESERVED.
  4.  */
  5.  
  6. #ifndef _reenth
  7. #define _reenth
  8. /*lint -library */
  9.  
  10. #pragma fixedparams("_exit_init", "_stdio_init", "_thread_init")
  11. #pragma fixedparams("_init_clib_data")
  12. #pragma fixedparams("_exit_create", "_stdio_create", "_thread_create")
  13. #pragma fixedparams("_exit_ptr", "_stdio_ptr", "_thread_ptr", "_tzset_ptr")
  14. #pragma fixedparams("_semaphore_delete", "_semaphore_init")
  15. #pragma fixedparams("_semaphore_signal", "_semaphore_wait")
  16.  
  17. #ifndef NULL
  18. #define NULL ((void *)0)
  19. #endif
  20.  
  21. #ifndef _size_t
  22. #define _size_t
  23. typedef unsigned size_t;
  24. #endif
  25.  
  26. #ifndef _localeh
  27. #include <locale.h>
  28. #endif
  29.  
  30. #ifndef _free_list_item_t
  31. #define _free_list_item_t
  32. #pragma align (free_list_item)
  33. struct free_list_item {
  34.     struct free_list_item *next;
  35.     unsigned               length;
  36. };
  37. #endif
  38.  
  39. #pragma align (_heap)
  40. struct _heap {
  41.     void                    *_malloc_sem;
  42.     struct free_list_item   *_primary_free_list;
  43.     struct free_list_item   *_secondary_free_list;
  44.     int                      _secondary_list_count;
  45.     struct free_list_item   *_allocated_list;
  46.     int                      _allocated_list_count;
  47.     unsigned int             _last_fill;         /* Last fill value used */
  48.     unsigned char            _fill_set;          /* Has _heapset been called */
  49. };
  50.  
  51. #pragma align (_locale)
  52. struct _locale {
  53.     struct lconv  _locale_conv;
  54.     char         *_locale_array[LC_MAX+1];
  55. };
  56.  
  57. #pragma align (_tzset)
  58. struct _tzset {
  59.     char  *_tzname[2];
  60.     long   _timezone;
  61.     int    _daylight;
  62. };
  63.  
  64. #define INIT_OK              0
  65. #define THREAD_INIT_ERROR    2
  66.  
  67. #pragma align (_exit)
  68. struct _exit {
  69.     void    *open_stream_sem;
  70.     struct  _iobuf    *open_stream_list;    /* list is maintained as a stack */
  71.     void    *exit_handler_sem;
  72.     int      exit_handler_count;
  73.     void   (*exit_handler_list[32])();
  74. };
  75.  
  76. #pragma align (_thread)
  77. struct _thread
  78. {
  79.     int             _errno;
  80.     char           *_strtok_buffer;
  81.     struct tm      *_gmtime_buffer;
  82.     unsigned long   _rand_seed;
  83.     struct _heap   *_heap_header;
  84.     struct _locale *_locale_data;
  85.     struct _tzset  *_tzset_data;
  86.     char            _asctime_buffer[26];
  87.     int             __doserrno;
  88. };
  89.  
  90. /*
  91.  * Function prototypes:
  92.  */
  93. int             _exit_init(void);
  94. int             _stdio_init(void);
  95. int             _thread_init(void);
  96. void            _init_clib_data(struct _thread *);
  97. struct _exit   *_exit_create(size_t);
  98. struct _stdio  *_stdio_create(size_t);
  99. struct _thread *_thread_create(size_t);
  100. struct _exit   *_exit_ptr(void);
  101. struct _stdio  *_stdio_ptr(void);
  102. struct _thread *_thread_ptr(void);
  103. struct _tzset  *_tzset_ptr(void);
  104. void            _semaphore_delete(void **);
  105. void            _semaphore_init(void **);
  106. void            _semaphore_signal(void **);
  107. void            _semaphore_wait(void **);
  108.  
  109.  
  110. #define _EXIT_PTR   _exit_ptr()
  111. #define _STDIO_PTR  _stdio_ptr()
  112. #define _THREAD_PTR _thread_ptr()
  113.  
  114. #endif /* _reenth */
  115.  
  116. #ifndef _stdio_stream
  117.  
  118. #ifdef _stdioh
  119. #define _stdio_stream
  120. struct _stdio {
  121.     FILE    _stdin;         /* stdin stream */
  122.     FILE    _stdout;        /* stdout stream */
  123.     FILE    _stderr;        /* stderr stream */
  124. };
  125. #endif /* _stdioh */
  126. #endif /* _stdio_stream */
  127.