* include/cygwin/config.h (__getreent): Define inline version.
This commit is contained in:
		| @@ -1,3 +1,7 @@ | ||||
| 2007-09-06  Brian Dessent  <brian@dessent.net> | ||||
|  | ||||
| 	* include/cygwin/config.h (__getreent): Define inline version. | ||||
|  | ||||
| 2007-09-06  Brian Dessent  <brian@dessent.net> | ||||
|  | ||||
| 	* include/sys/stdio.h (_flockfile): Don't try to lock a FILE | ||||
|   | ||||
| @@ -20,6 +20,27 @@ extern "C" { | ||||
| #define _CYGWIN_CONFIG_H | ||||
|  | ||||
| #define __DYNAMIC_REENT__ | ||||
|  | ||||
| /* The following provides an inline version of __getreent() for newlib, | ||||
|    which will be used throughout the library whereever there is a _r | ||||
|    version of a function that takes _REENT.  This saves the overhead | ||||
|    of a function call for what amounts to a simple computation. | ||||
|     | ||||
|    The definition below is essentially equivalent to the one in cygtls.h | ||||
|    (&_my_tls.local_clib) however it uses a fixed precomputed | ||||
|    offset rather than dereferencing a field of a structure. | ||||
|     | ||||
|    Including tlsoffets.h here in order to get this constant offset | ||||
|    tls_local_clib is a bit of a hack, but the alternative would require | ||||
|    dragging the entire definition of struct _cygtls (a large and complex | ||||
|    Cygwin internal data structure) into newlib.  The machinery to | ||||
|    compute these offsets already exists for the sake of gendef so | ||||
|    we might as well just use it here.  */ | ||||
|  | ||||
| #include "../tlsoffsets.h" | ||||
| extern char *_tlsbase __asm__ ("%fs:4"); | ||||
| #define __getreent() (struct _reent *)(_tlsbase + tls_local_clib) | ||||
|  | ||||
| #define __FILENAME_MAX__ (260 - 1 /* NUL */) | ||||
| #define _READ_WRITE_RETURN_TYPE _ssize_t | ||||
| #define __LARGE64_FILES 1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user