[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to And
From: |
enh |
Subject: |
Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android |
Date: |
Tue, 17 Feb 2015 09:58:59 -0800 |
https://android-review.googlesource.com/132781 fixes the sysconf implementation.
On Tue, Feb 17, 2015 at 9:47 AM, Kevin Cernekee <address@hidden> wrote:
> On Mon, Feb 16, 2015 at 9:46 PM, Paul Eggert <address@hidden> wrote:
>> The other patches (after your revisions) look good and I installed them, but
>> this one didn't look right. That part of the code really is intended to be
>> used only on Cygwin and it's not portable to other platforms (e.g., it
>> mishandles RLIM_SAVED_MAX). I suppose we could get it to work on Android
>> too but let's not bother. Instead, let's not use Android's getdtablesize
>> since it's obsolescent.
>>
>> I installed the attached patch instead, which I hope solves the problem in a
>> different way. Please let me know whether it works on Android.
>
> On Android, sysconf (_SC_OPEN_MAX) always returns the constant
> OPEN_MAX (256). So if `ulimit -n` is not exactly 256,
> test-{dup2,fcntl,getdtablesize} all fail because they think the OS
> should have stopped them from using file descriptor 256.
>
> Android behavior: (android-21, arm 32-bit)
>
> # /shared/tmp/fdtest
> rlimit: 1024
> sysconf: 256
> getdtablesize: 1024
>
> Ubuntu/glibc behavior:
>
> $ /tmp/fdtest
> rlimit: 32768
> sysconf: 32768
> getdtablesize: 32768
>
>
> Test program:
>
> #include <unistd.h>
> #include <stdio.h>
> #include <sys/time.h>
> #include <sys/resource.h>
>
> int main(int argc, char **argv)
> {
> struct rlimit lim;
>
> if (getrlimit (RLIMIT_NOFILE, &lim) == 0)
> printf("rlimit: %d\n", (int)lim.rlim_cur);
> printf("sysconf: %ld\n", sysconf (_SC_OPEN_MAX));
> printf("getdtablesize: %d\n", getdtablesize());
> return 0;
> }
>
>
> FWIW, the deprecated Bionic getdtablesize() function is implemented as:
>
> // This was removed from POSIX 2004.
> extern "C" int getdtablesize() {
> struct rlimit r;
>
> if (getrlimit(RLIMIT_NOFILE, &r) < 0) {
> return sysconf(_SC_OPEN_MAX);
> }
>
> return r.rlim_cur;
> }
--
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Java i18n/JNI/NIO, or bionic questions? Mail me/drop by/add me as a reviewer.
- [PATCH 0/3] More Android updates for gnulib, Kevin Cernekee, 2015/02/15
- [PATCH 1/3] More changelog fixes, Kevin Cernekee, 2015/02/15
- [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/15
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/17
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/17
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android,
enh <=
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/17
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/18
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/19
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/19
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/20
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/22
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/22
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Kevin Cernekee, 2015/02/23
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, Paul Eggert, 2015/02/23
- Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android, enh, 2015/02/24