From 660f84b15babdada62703f47e43f6dba8b4aebe9 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Mon, 28 Mar 2016 12:48:20 -0500 Subject: [PATCH] cygwin: export __getpagesize The inclusion of by , besides causing namespace pollution, also makes it very difficult to get the WINVER-dependent parts of the former. This affects code (such as x11vnc -unixpw_nis) which use both SysV shared memory (e.g. the X11 MIT-SHM extension) and user password authentication. getpagesize is the simplest function to retreive this information, but it is a legacy function and would also pollute the global namespace. The LSB lists another form which is in the implementation-reserved namespace: http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/baselib---getpagesize.html Signed-off-by: Yaakov Selkowitz --- winsup/cygwin/common.din | 1 + winsup/cygwin/include/cygwin/shm.h | 5 +++-- winsup/cygwin/include/cygwin/version.h | 3 ++- winsup/cygwin/shm.cc | 4 ++++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/common.din b/winsup/cygwin/common.din index fe714d874..7e72abe50 100644 --- a/winsup/cygwin/common.din +++ b/winsup/cygwin/common.din @@ -60,6 +60,7 @@ __freading NOSIGFE __fsetlocking SIGFE __fwritable NOSIGFE __fwriting NOSIGFE +__getpagesize = getpagesize SIGFE __getreent NOSIGFE __gnu_basename NOSIGFE __infinity NOSIGFE diff --git a/winsup/cygwin/include/cygwin/shm.h b/winsup/cygwin/include/cygwin/shm.h index c58599379..5fbfb1152 100644 --- a/winsup/cygwin/include/cygwin/shm.h +++ b/winsup/cygwin/include/cygwin/shm.h @@ -13,7 +13,6 @@ details. */ #define _CYGWIN_SHM_H #include -#include #ifdef __cplusplus extern "C" @@ -24,7 +23,9 @@ extern "C" * * 64 Kb was hardcoded for x86. MS states this may change so the constant * expression is replaced by a function call returning the correct value. */ -#define SHMLBA (cygwin_internal (CW_GET_SHMLBA)) +#define SHMLBA (__getpagesize ()) +/* internal alias of legacy getpagesize to avoid polluting global namespace */ +int __getpagesize (void); /* Shared memory operation flags: */ diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 4edb8dbc8..ee7c4ff6f 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -477,13 +477,14 @@ details. */ 293: Convert utmpname/utmpxname to int. 294: Export clog10, clog10f. 295: Export POSIX ACL functions. + 296: Export __getpagesize. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 295 +#define CYGWIN_VERSION_API_MINOR 296 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc index e209346f7..1d3200c36 100644 --- a/winsup/cygwin/shm.cc +++ b/winsup/cygwin/shm.cc @@ -21,6 +21,10 @@ details. */ #include "sync.h" #include "ntdll.h" +/* __getpagesize is only available from libcygwin.a */ +#undef SHMLBA +#define SHMLBA (wincap.allocation_granularity ()) + /* * client_request_shm Constructors */