X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2Fstgdefs.h;h=73eba9062575f517365e349382eefe2c94c3d7d2;hb=5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d;hp=e04ebee44803a38b1e636f2fd60d81a0d8b5f854;hpb=e7d21ee4f8ac907665a7e170c71d59e13a01da09;p=ghc-hetmet.git diff --git a/ghc/includes/stgdefs.h b/ghc/includes/stgdefs.h index e04ebee..73eba90 100644 --- a/ghc/includes/stgdefs.h +++ b/ghc/includes/stgdefs.h @@ -39,6 +39,11 @@ void _stgAssert PROTO((char *, unsigned int)); #else #define _POSIX_SOURCE 1 #define _POSIX_C_SOURCE 199301L +/* Alphas set _POSIX_VERSION (unistd.h) */ +/* ditto _POSIX2_C_VERSION + _POSIX2_VERSION + _POSIX_4SOURCE +*/ #include #include #endif @@ -57,31 +62,45 @@ void _stgAssert PROTO((char *, unsigned int)); GCC is schizophrenic about whether it adds these into its own headers for you; so we have no choice but to throw them in. */ -extern int fclose PROTO((FILE *)); -extern int fflush PROTO((FILE *)); -extern int fgetc PROTO((FILE *)); -/* extern int fgetpos PROTO((FILE *, fpos_t *)); */ -extern int fprintf PROTO((FILE *, const char *, ...)); -extern int fputc PROTO((int, FILE *)); -extern int fputs PROTO((const char *, FILE *)); -extern size_t fread PROTO((void *, size_t, size_t, FILE *)); -extern int fscanf PROTO((FILE *, const char *, ...)); -extern int fseek PROTO((FILE *, long int, int)); -/* extern int fsetpos PROTO((FILE *, const fpos_t *)); */ -extern size_t fwrite PROTO((const void *, size_t, size_t, FILE *)); -extern void perror PROTO((const char *)); -extern int printf PROTO((const char *, ...)); -extern int puts PROTO((const char *)); -extern int remove PROTO((const char *)); -extern int rename PROTO((const char *, const char *)); -extern void rewind PROTO((FILE *)); -extern int scanf PROTO((const char *, ...)); -extern void setbuf PROTO((FILE *, char *)); -extern int setvbuf PROTO((FILE *, char *, int, size_t)); -extern int sscanf PROTO((const char *, const char *, ...)); +int fclose PROTO((FILE *)); +int fflush PROTO((FILE *)); +int fgetc PROTO((FILE *)); +int fprintf PROTO((FILE *, const char *, ...)); +int fputc PROTO((int, FILE *)); +int fputs PROTO((const char *, FILE *)); +size_t fread PROTO((void *, size_t, size_t, FILE *)); +int fscanf PROTO((FILE *, const char *, ...)); +int fseek PROTO((FILE *, long int, int)); +size_t fwrite PROTO((const void *, size_t, size_t, FILE *)); +void perror PROTO((const char *)); +int printf PROTO((const char *, ...)); +int puts PROTO((const char *)); +int remove PROTO((const char *)); +int rename PROTO((const char *, const char *)); +void rewind PROTO((FILE *)); +int scanf PROTO((const char *, ...)); +void setbuf PROTO((FILE *, char *)); +int setvbuf PROTO((FILE *, char *, int, size_t)); +int sscanf PROTO((const char *, const char *, ...)); /* end of hack */ #endif /* STDC_HEADERS */ +/* + * threadWaitWrite# uses FD_SETSIZE to distinguish + * between read file descriptors and write fd's. + * Hence we need to include , but + * is this the best place to do it? + * (the following has been moved from libposix.h) + */ + +#ifdef HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ + +#ifndef FD_SETSIZE +#define FD_SETSIZE 1024 +#endif + #if ! defined(EXIT_SUCCESS) || ! defined(EXIT_FAILURE) /* "stdlib.h" should have defined these; but at least on SunOS 4.1.3, this is not so. @@ -121,6 +140,21 @@ yikes! no register map defined! /* macros to deal with stacks (no longer heap) growing in either dirn */ #include "StgDirections.h" +/* declarations for all the runtime flags for the RTS */ +#ifdef IN_GHC_RTS +#include "RtsFlags.h" +#endif +/* and those that are visible *everywhere* (RTS + Haskell code) */ +struct ALL_FLAGS { +#ifdef TICKY_TICKY + W_ doUpdEntryCounts; /* if true, we cannot short-circuit Inds, + common-up {Int,Char}Likes or Consts + */ +#endif + W_ dummy_entry; /* so there is *something* in it... */ +}; +extern struct ALL_FLAGS AllFlags; + /* declarations for garbage collection routines */ #include "SMinterface.h" @@ -129,12 +163,11 @@ yikes! no register map defined! #include "COptRegs.h" #include "COptWraps.h" -/* these will come into play if you use -DDO_RUNTIME_PROFILING (default: off) */ -#include "RednCounts.h" +/* these will come into play if you use -DTICKY_TICKY (default: off) */ +#include "Ticky.h" -extern hash_t hash_str PROTO((char *str)); -extern hash_t hash_fixed PROTO((char *data, I_ len)); -extern I_ decode PROTO((char *s)); +hash_t hash_str PROTO((char *str)); +hash_t hash_fixed PROTO((char *data, I_ len)); /* ullong (64bit) formatting */ char *ullong_format_string PROTO((ullong x, char *s, rtsBool with_commas)); @@ -149,39 +182,38 @@ char *ullong_format_string PROTO((ullong x, char *s, rtsBool with_commas)); #include "Threads.h" #include "Parallel.h" -/* Things will happen in here if the driver does -DUSE_COST_CENTRES */ +/* Things will happen in here if the driver does -DPROFILING */ #include "CostCentre.h" -/* These will come into play if you use -DLIFE_PROFILE or -DHEAP_PROF_WITH_AGE */ -#include "AgeProfile.h" - -/* These will come into play if you use -DFORCE_GC */ -#include "Force_GC.h" - /* GRAN and PAR stuff */ #include "GranSim.h" -#if defined(USE_COST_CENTRES) || defined(CONCURRENT) +#if defined(PROFILING) || defined(CONCURRENT) char * time_str(STG_NO_ARGS); #endif /* declarations for runtime-system entry points */ -extern void miniInterpret PROTO((StgFunPtr)); -extern void miniInterpret_debug PROTO(( StgFunPtr, void(*)(STG_NO_ARGS) )); -extern void miniInterpretEnd(STG_NO_ARGS); +void miniInterpret PROTO((StgFunPtr)); +void miniInterpret_debug PROTO(( StgFunPtr, void(*)(STG_NO_ARGS) )); +void miniInterpretEnd(STG_NO_ARGS); -extern StgFunPtr evaluateMain(STG_NO_ARGS); -extern StgFunPtr returnMain(STG_NO_ARGS); -extern StgFunPtr impossible_jump_after_switch(STG_NO_ARGS); +StgFunPtr evaluateMain(STG_NO_ARGS); +StgFunPtr returnMain(STG_NO_ARGS); +StgFunPtr impossible_jump_after_switch(STG_NO_ARGS); /* hooks: user might write some of their own */ -extern void ErrorHdrHook PROTO((FILE *)); -extern void OutOfHeapHook PROTO((W_, W_)); -extern void StackOverflowHook PROTO((I_)); -extern void MallocFailHook PROTO((I_)); -extern void PatErrorHdrHook PROTO((FILE *)); -extern void PreTraceHook PROTO((FILE *)); -extern void PostTraceHook PROTO((FILE *)); +void ErrorHdrHook PROTO((FILE *)); +void OutOfHeapHook PROTO((W_, W_)); +void StackOverflowHook PROTO((I_)); +#ifdef CONCURRENT +void NoRunnableThreadsHook (STG_NO_ARGS); +#endif +void MallocFailHook PROTO((I_, char *)); +void PatErrorHdrHook PROTO((FILE *)); +void PreTraceHook PROTO((FILE *)); +void PostTraceHook PROTO((FILE *)); +void defaultsHook (STG_NO_ARGS); +void initEachPEHook (STG_NO_ARGS); EXTFUN(startStgWorld); #ifdef CONCURRENT @@ -191,15 +223,17 @@ EXTFUN(resumeThread); #endif extern char **prog_argv; /* from runtime/main/main.lc */ -extern I_ prog_argc; +extern int prog_argc; extern char **environ; /* we can get this one straight */ EXTDATA(STK_STUB_closure); /* now these really *DO* need to be somewhere else... */ -extern char *time_str(STG_NO_ARGS); -extern I_ stg_exit PROTO((I_)); -extern I_ _stg_rem PROTO((I_, I_)); +char *time_str(STG_NO_ARGS); +I_ stg_exit PROTO((I_)); +I_ _stg_rem PROTO((I_, I_)); +char *stgMallocBytes PROTO((I_, char *)); +char *stgMallocWords PROTO((I_, char *)); /* definitions for closures */ #include "SMClosures.h"