diff options
author | chromium@hybridsource.org <chromium@hybridsource.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-25 04:54:41 +0000 |
---|---|---|
committer | chromium@hybridsource.org <chromium@hybridsource.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-25 04:54:41 +0000 |
commit | 94f8c957011e0d1f9a28607a05066edc2989eaa2 (patch) | |
tree | 0eab7b490ecb89c4e87bfe2da00579c09bd6c2bf /base | |
parent | 9a039aead5c77431a21db52692970a0d3e63f1fc (diff) | |
download | chromium_src-94f8c957011e0d1f9a28607a05066edc2989eaa2.zip chromium_src-94f8c957011e0d1f9a28607a05066edc2989eaa2.tar.gz chromium_src-94f8c957011e0d1f9a28607a05066edc2989eaa2.tar.bz2 |
Patch for Solaris support, mostly ifdefs and header files, plus adds libevent configuration.
BUG=30101
TEST=compiles
Review URL: http://codereview.chromium.org/7238021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90494 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/base_paths_linux.cc | 12 | ||||
-rw-r--r-- | base/debug/debugger_posix.cc | 9 | ||||
-rw-r--r-- | base/debug/stack_trace_posix.cc | 1 | ||||
-rw-r--r-- | base/sync_socket_posix.cc | 4 | ||||
-rw-r--r-- | base/sys_info_posix.cc | 7 | ||||
-rw-r--r-- | base/third_party/nspr/prcpucfg_solaris.h | 203 | ||||
-rw-r--r-- | base/threading/platform_thread_posix.cc | 2 | ||||
-rw-r--r-- | base/time_posix.cc | 2 |
8 files changed, 227 insertions, 13 deletions
diff --git a/base/base_paths_linux.cc b/base/base_paths_linux.cc index 2ee690d..9f940cb 100644 --- a/base/base_paths_linux.cc +++ b/base/base_paths_linux.cc @@ -19,14 +19,14 @@ #if defined(OS_FREEBSD) #include <sys/param.h> #include <sys/sysctl.h> +#elif defined(OS_SOLARIS) +#include <stdlib.h> #endif namespace base { #if defined(OS_LINUX) const char kSelfExe[] = "/proc/self/exe"; -#elif defined(OS_SOLARIS) -const char kSelfExe[] = getexecname(); #endif // The name of this file relative to the source root. This is used for checking @@ -58,6 +58,14 @@ bool PathProviderPosix(int key, FilePath* result) { bin_dir[strlen(bin_dir)] = 0; *result = FilePath(bin_dir); return true; +#elif defined(OS_SOLARIS) + char bin_dir[PATH_MAX + 1]; + if (realpath(getexecname(), bin_dir) == NULL) { + NOTREACHED() << "Unable to resolve " << getexecname() << "."; + return false; + } + *result = FilePath(bin_dir); + return true; #endif } case base::DIR_SOURCE_ROOT: { diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc index bf90a0f..a1551a3 100644 --- a/base/debug/debugger_posix.cc +++ b/base/debug/debugger_posix.cc @@ -12,9 +12,6 @@ #include <stdlib.h> #include <sys/param.h> #include <sys/stat.h> -#if !defined(OS_NACL) -#include <sys/sysctl.h> -#endif #include <sys/types.h> #include <unistd.h> @@ -29,6 +26,10 @@ #include <AvailabilityMacros.h> #endif +#if defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_FREEBSD) +#include <sys/sysctl.h> +#endif + #include <iostream> #include "base/basictypes.h" @@ -136,7 +137,7 @@ bool BeingDebugged() { return false; } -#elif defined(OS_FREEBSD) +#else bool BeingDebugged() { // TODO(benl): can we determine this under FreeBSD? diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc index c405aa2..75dd10d 100644 --- a/base/debug/stack_trace_posix.cc +++ b/base/debug/stack_trace_posix.cc @@ -11,7 +11,6 @@ #include <stdlib.h> #include <sys/param.h> #include <sys/stat.h> -#include <sys/sysctl.h> #include <sys/types.h> #include <unistd.h> diff --git a/base/sync_socket_posix.cc b/base/sync_socket_posix.cc index 1082c64..82ad91c 100644 --- a/base/sync_socket_posix.cc +++ b/base/sync_socket_posix.cc @@ -11,6 +11,10 @@ #include <sys/ioctl.h> #include <sys/socket.h> +#if defined(OS_SOLARIS) +#include <sys/filio.h> +#endif + #include "base/file_util.h" #include "base/logging.h" diff --git a/base/sys_info_posix.cc b/base/sys_info_posix.cc index a6b88a8..4d7cc4e 100644 --- a/base/sys_info_posix.cc +++ b/base/sys_info_posix.cc @@ -20,7 +20,6 @@ #define statvfs statfs // Android uses a statvfs-like statfs struct and call. #else #include <sys/statvfs.h> -#include <sys/sysctl.h> #endif namespace base { @@ -51,7 +50,7 @@ int64 SysInfo::AmountOfFreeDiskSpace(const FilePath& path) { #if !defined(OS_MACOSX) // static std::string SysInfo::OperatingSystemName() { - utsname info; + struct utsname info; if (uname(&info) < 0) { NOTREACHED(); return ""; @@ -61,7 +60,7 @@ std::string SysInfo::OperatingSystemName() { // static std::string SysInfo::OperatingSystemVersion() { - utsname info; + struct utsname info; if (uname(&info) < 0) { NOTREACHED(); return ""; @@ -72,7 +71,7 @@ std::string SysInfo::OperatingSystemVersion() { // static std::string SysInfo::CPUArchitecture() { - utsname info; + struct utsname info; if (uname(&info) < 0) { NOTREACHED(); return ""; diff --git a/base/third_party/nspr/prcpucfg_solaris.h b/base/third_party/nspr/prcpucfg_solaris.h new file mode 100644 index 0000000..81313e5 --- /dev/null +++ b/base/third_party/nspr/prcpucfg_solaris.h @@ -0,0 +1,203 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Netscape Portable Runtime (NSPR). + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998-2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef nspr_cpucfg___ +#define nspr_cpucfg___ + +#ifndef XP_UNIX +#define XP_UNIX +#endif + +#ifndef SOLARIS +#define SOLARIS +#endif + +#define PR_AF_INET6 26 /* same as AF_INET6 */ + +#if defined(sparc) || defined(__sparc) +#undef IS_LITTLE_ENDIAN +#define IS_BIG_ENDIAN 1 +#define PR_ALIGN_OF_INT64 8 +#define PR_ALIGN_OF_DOUBLE 8 +#if defined(__sparcv9) +#define IS_64 +#endif +#elif defined(__x86_64) +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN +#define PR_ALIGN_OF_INT64 8 +#define PR_ALIGN_OF_DOUBLE 8 +#define IS_64 +#elif defined(i386) || defined(__i386) +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN +#define PR_ALIGN_OF_INT64 4 +#define PR_ALIGN_OF_DOUBLE 4 +#else +#error unknown processor +#endif + +#ifdef IS_64 + +#define PR_BYTES_PER_BYTE 1 +#define PR_BYTES_PER_SHORT 2 +#define PR_BYTES_PER_INT 4 +#define PR_BYTES_PER_INT64 8 +#define PR_BYTES_PER_LONG 8 +#define PR_BYTES_PER_FLOAT 4 +#define PR_BYTES_PER_DOUBLE 8 +#define PR_BYTES_PER_WORD 8 +#define PR_BYTES_PER_DWORD 8 +#define PR_BYTES_PER_WORD_LOG2 3 +#define PR_BYTES_PER_DWORD_LOG2 3 + +#define PR_BITS_PER_BYTE 8 +#define PR_BITS_PER_SHORT 16 +#define PR_BITS_PER_INT 32 +#define PR_BITS_PER_INT64 64 +#define PR_BITS_PER_LONG 64 +#define PR_BITS_PER_FLOAT 32 +#define PR_BITS_PER_DOUBLE 64 +#define PR_BITS_PER_WORD 64 + +#define PR_BITS_PER_BYTE_LOG2 3 +#define PR_BITS_PER_SHORT_LOG2 4 +#define PR_BITS_PER_INT_LOG2 5 +#define PR_BITS_PER_INT64_LOG2 6 +#define PR_BITS_PER_LONG_LOG2 6 +#define PR_BITS_PER_FLOAT_LOG2 5 +#define PR_BITS_PER_DOUBLE_LOG2 6 +#define PR_BITS_PER_WORD_LOG2 6 + +#define PR_ALIGN_OF_SHORT 2 +#define PR_ALIGN_OF_INT 4 +#define PR_ALIGN_OF_LONG 8 +#define PR_ALIGN_OF_FLOAT 4 +#define PR_ALIGN_OF_POINTER 8 + +#else /* IS_64 */ + +#define PR_BYTES_PER_BYTE 1 +#define PR_BYTES_PER_SHORT 2 +#define PR_BYTES_PER_INT 4 +#define PR_BYTES_PER_INT64 8 +#define PR_BYTES_PER_LONG 4 +#define PR_BYTES_PER_FLOAT 4 +#define PR_BYTES_PER_DOUBLE 8 +#define PR_BYTES_PER_WORD 4 +#define PR_BYTES_PER_DWORD 8 +#define PR_BYTES_PER_WORD_LOG2 2 +#define PR_BYTES_PER_DWORD_LOG2 3 + +#define PR_BITS_PER_BYTE 8 +#define PR_BITS_PER_SHORT 16 +#define PR_BITS_PER_INT 32 +#define PR_BITS_PER_INT64 64 +#define PR_BITS_PER_LONG 32 +#define PR_BITS_PER_FLOAT 32 +#define PR_BITS_PER_DOUBLE 64 +#define PR_BITS_PER_WORD 32 + +#define PR_BITS_PER_BYTE_LOG2 3 +#define PR_BITS_PER_SHORT_LOG2 4 +#define PR_BITS_PER_INT_LOG2 5 +#define PR_BITS_PER_INT64_LOG2 6 +#define PR_BITS_PER_LONG_LOG2 5 +#define PR_BITS_PER_FLOAT_LOG2 5 +#define PR_BITS_PER_DOUBLE_LOG2 6 +#define PR_BITS_PER_WORD_LOG2 5 + +#define PR_ALIGN_OF_SHORT 2 +#define PR_ALIGN_OF_INT 4 +#define PR_ALIGN_OF_LONG 4 +#define PR_ALIGN_OF_FLOAT 4 +#define PR_ALIGN_OF_POINTER 4 + +#endif /* IS_64 */ + +#ifndef HAVE_LONG_LONG +#define HAVE_LONG_LONG +#endif +#define HAVE_ALIGNED_DOUBLES +#define HAVE_ALIGNED_LONGLONGS + +#ifndef NO_NSPR_10_SUPPORT + +#define BYTES_PER_BYTE PR_BYTES_PER_BYTE +#define BYTES_PER_SHORT PR_BYTES_PER_SHORT +#define BYTES_PER_INT PR_BYTES_PER_INT +#define BYTES_PER_INT64 PR_BYTES_PER_INT64 +#define BYTES_PER_LONG PR_BYTES_PER_LONG +#define BYTES_PER_FLOAT PR_BYTES_PER_FLOAT +#define BYTES_PER_DOUBLE PR_BYTES_PER_DOUBLE +#define BYTES_PER_WORD PR_BYTES_PER_WORD +#define BYTES_PER_DWORD PR_BYTES_PER_DWORD + +#define BITS_PER_BYTE PR_BITS_PER_BYTE +#define BITS_PER_SHORT PR_BITS_PER_SHORT +#define BITS_PER_INT PR_BITS_PER_INT +#define BITS_PER_INT64 PR_BITS_PER_INT64 +#define BITS_PER_LONG PR_BITS_PER_LONG +#define BITS_PER_FLOAT PR_BITS_PER_FLOAT +#define BITS_PER_DOUBLE PR_BITS_PER_DOUBLE +#define BITS_PER_WORD PR_BITS_PER_WORD + +#define BITS_PER_BYTE_LOG2 PR_BITS_PER_BYTE_LOG2 +#define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2 +#define BITS_PER_INT_LOG2 PR_BITS_PER_INT_LOG2 +#define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2 +#define BITS_PER_LONG_LOG2 PR_BITS_PER_LONG_LOG2 +#define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2 +#define BITS_PER_DOUBLE_LOG2 PR_BITS_PER_DOUBLE_LOG2 +#define BITS_PER_WORD_LOG2 PR_BITS_PER_WORD_LOG2 + +#define ALIGN_OF_SHORT PR_ALIGN_OF_SHORT +#define ALIGN_OF_INT PR_ALIGN_OF_INT +#define ALIGN_OF_LONG PR_ALIGN_OF_LONG +#define ALIGN_OF_INT64 PR_ALIGN_OF_INT64 +#define ALIGN_OF_FLOAT PR_ALIGN_OF_FLOAT +#define ALIGN_OF_DOUBLE PR_ALIGN_OF_DOUBLE +#define ALIGN_OF_POINTER PR_ALIGN_OF_POINTER +#define ALIGN_OF_WORD PR_ALIGN_OF_WORD + +#define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2 +#define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2 +#define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2 + +#endif /* NO_NSPR_10_SUPPORT */ + +#endif /* ifndef nspr_cpucfg___ */ diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc index 526e782..497acb5 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc @@ -127,7 +127,7 @@ PlatformThreadId PlatformThread::CurrentId() { #elif defined(OS_FREEBSD) // TODO(BSD): find a better thread ID return reinterpret_cast<int64>(pthread_self()); -#elif defined(OS_NACL) +#elif defined(OS_NACL) || defined(OS_SOLARIS) return pthread_self(); #endif } diff --git a/base/time_posix.cc b/base/time_posix.cc index 39b2a75..a2ea5ae 100644 --- a/base/time_posix.cc +++ b/base/time_posix.cc @@ -110,7 +110,7 @@ Time Time::FromExploded(bool is_local, const Exploded& exploded) { timestruct.tm_wday = exploded.day_of_week; // mktime/timegm ignore this timestruct.tm_yday = 0; // mktime/timegm ignore this timestruct.tm_isdst = -1; // attempt to figure it out -#if !defined(OS_NACL) +#if !defined(OS_NACL) && !defined(OS_SOLARIS) timestruct.tm_gmtoff = 0; // not a POSIX field, so mktime/timegm ignore timestruct.tm_zone = NULL; // not a POSIX field, so mktime/timegm ignore #endif |