forked from 0ad/0ad
janwas
12ac1deebd
ia32: add note on when ia32_ApicId fails; support detecting/guessing processor topology from number of "processors" (hopefully fixes warning on Philip's PIII system) This was SVN commit r5209.
50 lines
1.8 KiB
C
50 lines
1.8 KiB
C
/**
|
|
* =========================================================================
|
|
* File : wposix.h
|
|
* Project : 0 A.D.
|
|
* Description : emulate a subset of POSIX on Win32.
|
|
* =========================================================================
|
|
*/
|
|
|
|
// license: GPL; see lib/license.txt
|
|
|
|
#ifndef INCLUDED_WPOSIX
|
|
#define INCLUDED_WPOSIX
|
|
|
|
/**
|
|
* rationale: the Windows headers declare many POSIX functions (e.g. read).
|
|
* unfortunately, these are often slightly incorrect (size_t vs. uint).
|
|
* to avert trouble in user code caused by these differences, we declare
|
|
* all functions ourselves according to SUSv3 and do not use the headers.
|
|
*
|
|
* however, it does not end there. some other libraries (e.g. wxWidgets)
|
|
* will want to pull in these headers, which would conflict with our
|
|
* declarations. also, our implementation uses the actual CRT code,
|
|
* so we want those functions (e.g. _read) to be declared correctly even
|
|
* if switching compiler/CRT version.
|
|
*
|
|
* how can these conflicting requirements be reconciled? our headers #include
|
|
* "no_crt_posix.h" to #define the CRT headers' include guards and thus
|
|
* prevent them from declaring anything. the implementation files #include
|
|
* "crt_posix.h", which pulls in the CRT headers (even if "no_crt_posix.h"
|
|
* was previously included, e.g. in the PCH). note that the CRT headers
|
|
* would still cause conflicts with the POSIX function declarations,
|
|
* but we are able to prevent this via __STDC__.
|
|
**/
|
|
|
|
|
|
// misc routines
|
|
|
|
extern char* getcwd(char*, size_t);
|
|
|
|
// user tests if available via #ifdef; can't use enum.
|
|
#define _SC_PAGESIZE 1
|
|
#define _SC_PAGE_SIZE 1
|
|
#define _SC_PHYS_PAGES 2
|
|
#define _SC_AVPHYS_PAGES 3
|
|
#define _SC_NPROCESSORS_CONF 4
|
|
|
|
extern long sysconf(int name);
|
|
|
|
#endif // #ifndef INCLUDED_WPOSIX
|