Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(846)

Side by Side Diff: nspr/pr/src/md/unix/unix.c

Issue 408583002: Fix for Android >= api level 19. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/nss/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public 2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 5
6 #include "primpl.h" 6 #include "primpl.h"
7 7
8 #include <string.h> 8 #include <string.h>
9 #include <signal.h> 9 #include <signal.h>
10 #include <unistd.h> 10 #include <unistd.h>
(...skipping 12 matching lines...) Expand all
23 23
24 /* To get FIONREAD */ 24 /* To get FIONREAD */
25 #if defined(UNIXWARE) 25 #if defined(UNIXWARE)
26 #include <sys/filio.h> 26 #include <sys/filio.h>
27 #endif 27 #endif
28 28
29 #if defined(NTO) 29 #if defined(NTO)
30 #include <sys/statvfs.h> 30 #include <sys/statvfs.h>
31 #endif 31 #endif
32 32
33 #if defined(ANDROID)
34 #include <android/api-level.h>
35 #endif
36
33 /* 37 /*
34 * Make sure _PRSockLen_t is 32-bit, because we will cast a PRUint32* or 38 * Make sure _PRSockLen_t is 32-bit, because we will cast a PRUint32* or
35 * PRInt32* pointer to a _PRSockLen_t* pointer. 39 * PRInt32* pointer to a _PRSockLen_t* pointer.
36 */ 40 */
37 #if defined(HAVE_SOCKLEN_T) \ 41 #if defined(HAVE_SOCKLEN_T) \
38 || (defined(__GLIBC__) && __GLIBC__ >= 2) 42 || (defined(__GLIBC__) && __GLIBC__ >= 2)
39 #define _PRSockLen_t socklen_t 43 #define _PRSockLen_t socklen_t
40 #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \ 44 #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
41 || defined(AIX4_1) || defined(LINUX) \ 45 || defined(AIX4_1) || defined(LINUX) \
42 || defined(BSDI) || defined(SCO) \ 46 || defined(BSDI) || defined(SCO) \
(...skipping 2659 matching lines...) Expand 10 before | Expand all | Expand 10 after
2702 2706
2703 static void* _MD_Unix_mmap64( 2707 static void* _MD_Unix_mmap64(
2704 void *addr, PRSize len, PRIntn prot, PRIntn flags, 2708 void *addr, PRSize len, PRIntn prot, PRIntn flags,
2705 PRIntn fildes, PRInt64 offset) 2709 PRIntn fildes, PRInt64 offset)
2706 { 2710 {
2707 PR_SetError(PR_FILE_TOO_BIG_ERROR, 0); 2711 PR_SetError(PR_FILE_TOO_BIG_ERROR, 0);
2708 return NULL; 2712 return NULL;
2709 } /* _MD_Unix_mmap64 */ 2713 } /* _MD_Unix_mmap64 */
2710 #endif /* defined(_PR_NO_LARGE_FILES) || defined(SOLARIS2_5) */ 2714 #endif /* defined(_PR_NO_LARGE_FILES) || defined(SOLARIS2_5) */
2711 2715
2712 /* Android doesn't have mmap64. */
2713 #if defined(ANDROID) 2716 #if defined(ANDROID)
2717 /* Android <= 19 doesn't have mmap64. */
2718 #if __ANDROID_API__ <= 19
2714 extern void *__mmap2(void *, size_t, int, int, int, size_t); 2719 extern void *__mmap2(void *, size_t, int, int, int, size_t);
2715 2720
2716 #define ANDROID_PAGE_SIZE 4096 2721 #define ANDROID_PAGE_SIZE 4096
2717 2722
2718 static void * 2723 static void *
2719 mmap64(void *addr, size_t len, int prot, int flags, int fd, loff_t offset) 2724 mmap64(void *addr, size_t len, int prot, int flags, int fd, loff_t offset)
2720 { 2725 {
2721 if (offset & (ANDROID_PAGE_SIZE - 1)) { 2726 if (offset & (ANDROID_PAGE_SIZE - 1)) {
2722 errno = EINVAL; 2727 errno = EINVAL;
2723 return MAP_FAILED; 2728 return MAP_FAILED;
2724 } 2729 }
2725 return __mmap2(addr, len, prot, flags, fd, offset / ANDROID_PAGE_SIZE); 2730 return __mmap2(addr, len, prot, flags, fd, offset / ANDROID_PAGE_SIZE);
2726 } 2731 }
2727 #endif 2732 #endif // __ANDROID_API__ <= 19
2733 #endif // defined(ANDROID)
wtc 2014/07/22 23:45:12 Nit: use pre-C99 /* */ comment delimiters in this
2728 2734
2729 #if defined(OSF1) && defined(__GNUC__) 2735 #if defined(OSF1) && defined(__GNUC__)
2730 2736
2731 /* 2737 /*
2732 * On OSF1 V5.0A, <sys/stat.h> defines stat and fstat as 2738 * On OSF1 V5.0A, <sys/stat.h> defines stat and fstat as
2733 * macros when compiled under gcc, so it is rather tricky to 2739 * macros when compiled under gcc, so it is rather tricky to
2734 * take the addresses of the real functions the macros expend 2740 * take the addresses of the real functions the macros expend
2735 * to. A simple solution is to define forwarder functions 2741 * to. A simple solution is to define forwarder functions
2736 * and take the addresses of the forwarder functions instead. 2742 * and take the addresses of the forwarder functions instead.
2737 */ 2743 */
(...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after
3774 rv++; 3780 rv++;
3775 } 3781 }
3776 } 3782 }
3777 PR_ASSERT(rv > 0); 3783 PR_ASSERT(rv > 0);
3778 } 3784 }
3779 PR_ASSERT(-1 != timeout || rv != 0); 3785 PR_ASSERT(-1 != timeout || rv != 0);
3780 3786
3781 return rv; 3787 return rv;
3782 } 3788 }
3783 #endif /* _PR_NEED_FAKE_POLL */ 3789 #endif /* _PR_NEED_FAKE_POLL */
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698