* 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> | 2007-09-06  Brian Dessent  <brian@dessent.net> | ||||||
|  |  | ||||||
| 	* include/sys/stdio.h (_flockfile): Don't try to lock a FILE | 	* include/sys/stdio.h (_flockfile): Don't try to lock a FILE | ||||||
|   | |||||||
| @@ -20,6 +20,27 @@ extern "C" { | |||||||
| #define _CYGWIN_CONFIG_H | #define _CYGWIN_CONFIG_H | ||||||
|  |  | ||||||
| #define __DYNAMIC_REENT__ | #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 __FILENAME_MAX__ (260 - 1 /* NUL */) | ||||||
| #define _READ_WRITE_RETURN_TYPE _ssize_t | #define _READ_WRITE_RETURN_TYPE _ssize_t | ||||||
| #define __LARGE64_FILES 1 | #define __LARGE64_FILES 1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user