⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.h

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 H
字号:
#ifndef __MISC_H
#define __MISC_H

#include <sys/swap.h>     /* intel() etc. */
#include <sys/wtime.h>    /* struct timeval */

/*
 * Implemented in misc.c
 *
 * Fixup namespace for "internal" symbols
 */
#define cpu_type    NAMESPACE(cpu_type)
#define init_misc   NAMESPACE(init_misc)
#define Random      NAMESPACE(Random)
#define RandomWait  NAMESPACE(RandomWait)
#define valid_addr  NAMESPACE(valid_addr)
#define hex_chars   NAMESPACE(hex_chars)
#define hex_CHARS   NAMESPACE(hex_CHARS)

extern int __bss_count, cpu_type;

extern char hex_chars[];
extern char hex_CHARS[];

extern void init_misc (void);
extern int  Random    (unsigned a, unsigned b);
extern void RandomWait(unsigned a, unsigned b);

extern BOOL valid_addr(DWORD addr, int len);

#if defined(USE_DEBUG)
  extern void unfinished (const char *file, unsigned line);
  #define UNFINISHED() unfinished(__FILE__, __LINE__)
#else
  #define UNFINISHED() ((void)0)
#endif

#if defined(__LARGE__)
  extern void watt_largecheck (void *s, int size, char *file, unsigned line);
#else
  #define watt_largecheck(s,ss,f,l) ((void)0)
#endif

/*
 * Implemented in timer.c
 */
#define has_8254     NAMESPACE (has_8254)
#define has_rdtsc    NAMESPACE (has_rdtsc)
#define init_timers  NAMESPACE (init_timers)
#define set_timeout  NAMESPACE (set_timeout)
#define chk_timeout  NAMESPACE (chk_timeout)
#define hires_timer  NAMESPACE (hires_timer)
#define set_timediff NAMESPACE (set_timediff)
#define get_timediff NAMESPACE (get_timediff)
#define timeval_diff NAMESPACE (timeval_diff)

#define time_str     NAMESPACE (time_str)
#define dword_str    NAMESPACE (dword_str)

extern int has_8254, has_rdtsc;

extern void   init_timers  (void);
extern DWORD  set_timeout  (DWORD msec);        /* return value for timeout */
extern int    chk_timeout  (DWORD timeout);     /* check if time expired    */
extern int    cmp_timers   (DWORD t1, DWORD t2);
extern void   hires_timer  (int on);
extern int    set_timediff (long msec);
extern DWORD  get_timediff (DWORD now, DWORD t);
extern double timeval_diff (const struct timeval *a, const struct timeval *b);

extern const char *time_str  (DWORD val);
extern const char *dword_str (DWORD val);


#if defined(HAVE_UINT64)
  union ulong_long {
          struct {
            DWORD hi;
            DWORD lo;
          } s;
          uint64 ull;
        };

  #define microsec_clock NAMESPACE (microsec_clock)
  extern uint64 microsec_clock (void);

#if defined(__GNUC__) && defined(__i386__) /* also for gcc -m486 and better */
 /*
  * This is not used yet since the benefit/drawbacks are unknown.
  * Define 32-bit multiplication asm macros.
  *
  * umul_ppmm (high_prod, low_prod, multiplier, multiplicand)
  * multiplies two unsigned long integers multiplier and multiplicand,
  * and generates a two unsigned word product in high_prod and
  * low_prod.
  */
  #define umul_ppmm(w1,w0,u,v)                            \
          __asm__ __volatile__ (                          \
                 "mull %3"                                \
                 : "=a" ((DWORD)(w0)), "=d" ((DWORD)(w1)) \
                 : "%0" ((DWORD)(u)),  "rm" ((DWORD)(v)))

  #define mul32(u,v) ({ union ulong_long w;               \
                        umul_ppmm (w.s.hi, w.s.lo, u, v); \
                        w.ull; })
  /* Use as:
   *  DWORD x,y;
   *  ..
   *  uint64 z = mul32 (x,y);
   */
#endif /* __GNUC__ && __i386__ */
#endif /* HAVE_UINT64 */

/*
 * Some prototypes not found in lc-lint's libraries
 */
#if defined(lint) || defined(_lint)
  extern char *strupr (char*);
  extern char *strlwr (char*);
  extern char *strdup (const char*);
  extern int   stricmp (const char*, const char*);
  extern int   strnicmp (const char*, const char*, size_t);
  extern char *itoa (int, char*, int);
  extern void *alloca (size_t);
  extern int   gettimeofday (struct timeval*, struct timezone*);
  extern int   fileno (FILE*);
  extern int   isascii (int);
  extern void  psignal (int, const char*);
  extern int   vsscanf (const char*, const char*, va_list);

  /*@constant int SIGALRM; @*/
  /*@constant int SIGTRAP; @*/
#endif

#endif /* __MISC_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -