summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-23 10:14:07 -0700
committerSage Weil <sage@inktank.com>2013-09-23 10:14:07 -0700
commitb683005c219e3d6da8fb241a684d348440ff8270 (patch)
treee75ff2d14461561c2e353e8926f4d5519e87ddcb
parent6b745c9491094475aa011a5ea175abb68d7ba0e8 (diff)
parentf3718c29bb387901f2dd520ecd75dc498fa322b7 (diff)
downloadceph-b683005c219e3d6da8fb241a684d348440ff8270.tar.gz
Merge pull request #607 from ceph/prctl-getname-test
code_env: use feature test for PR_GET_NAME support Reviewed-by: Sage Weil <sage@inktank.com>
-rw-r--r--configure.ac3
-rw-r--r--src/common/code_environment.cc24
2 files changed, 18 insertions, 9 deletions
diff --git a/configure.ac b/configure.ac
index bdea8b18ceb..eeecdbeffc8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -536,6 +536,9 @@ AC_CHECK_FUNC([fallocate],
[])
+AC_CHECK_HEADERS([sys/prctl.h])
+AC_CHECK_FUNCS([prctl])
+
# Checks for typedefs, structures, and compiler characteristics.
#AC_HEADER_STDBOOL
#AC_C_CONST
diff --git a/src/common/code_environment.cc b/src/common/code_environment.cc
index 2cf19f48bc5..662fa36c9bd 100644
--- a/src/common/code_environment.cc
+++ b/src/common/code_environment.cc
@@ -11,6 +11,7 @@
* Foundation. See file COPYING.
*
*/
+#include "acconfig.h"
#include "common/code_environment.h"
@@ -19,7 +20,8 @@
#include <stdlib.h>
#include <string.h>
#include <string>
-#if defined(__linux__)
+
+#ifdef HAVE_SYS_PRCTL_H
#include <sys/prctl.h>
#endif
@@ -45,6 +47,8 @@ std::ostream &operator<<(std::ostream &oss, enum code_environment_t e)
return oss;
}
+#if defined(HAVE_SYS_PRCTL_H) && defined(PR_GET_NAME) /* Since 2.6.11 */
+
int get_process_name(char *buf, int len)
{
if (len <= 16) {
@@ -53,17 +57,19 @@ int get_process_name(char *buf, int len)
* null-terminated. */
return -ENAMETOOLONG;
}
-#if defined(__FreeBSD__)
-#warning XXX
- return -ENAMETOOLONG;
-#else
memset(buf, 0, len);
- int ret;
- ret = prctl(PR_GET_NAME, buf);
- return ret;
-#endif
+ return prctl(PR_GET_NAME, buf);
}
+#else
+
+int get_process_name(char *buf, int len)
+{
+ return -ENOSYS;
+}
+
+#endif
+
std::string get_process_name_cpp()
{
char buf[32];