getrlimit() function problems

Hi!
It’s look like QNXRTP don’t support getrlimit() function fully. Is anybody
knows ‘correct’ values for RLIMIT_STACK, RLIMIT_CORE, RLIMIT_NOFILES and
RLIMIT_DATA parameters on RTP? On what these values depends?


Waiting answer.
Good luck, Leo.

Leo wrote:

Hi!
It’s look like QNXRTP don’t support getrlimit() function fully. Is anybody
knows ‘correct’ values for RLIMIT_STACK, RLIMIT_CORE, RLIMIT_NOFILES and
RLIMIT_DATA parameters on RTP? On what these values depends?

getrlimit() is advertized but not supported.
STACK is demand-paged, so I think limit is fairly large.
DATA probably doesn’t have hard limit but I doubt it can be more than
your RAM currently.
CORE is probably limited by 2Gb since that’s limitation of write().
NOFILES can be obtained from sysconf().

  • igor

Hi,
thanks, Igor

getrlimit() is advertized but not supported.
STACK is demand-paged, so I think limit is fairly large.
DATA probably doesn’t have hard limit but I doubt it can be more than
your RAM currently.
RAM? i think it can’t be more, than free (physical) memory… if DATA not

paged.
probably, it’s safe to set this 2 values (STACK and DATA) to RLIM_INFINITY,
or there is some method to determine DATA?
return an amount of free memory does not approach, as there are other
processes…

CORE is probably limited by 2Gb since that’s limitation of write().
or free hard disk space?

as i understand, if this value is zero core file not created?

NOFILES can be obtained from sysconf().

again thanks, i have ported BIND 9.1.1 under RTP…
Leo.

Since setrlimit() is not really supported too, you can just ignore the whole
issue :wink:

“Leo” <leo@zbh.angarsk.com> wrote in message
news:9c7m38$inr$1@inn.qnx.com

Hi,
thanks, Igor

getrlimit() is advertized but not supported.
STACK is demand-paged, so I think limit is fairly large.
DATA probably doesn’t have hard limit but I doubt it can be more than
your RAM currently.
RAM? i think it can’t be more, than free (physical) memory… if DATA not
paged.
probably, it’s safe to set this 2 values (STACK and DATA) to
RLIM_INFINITY,
or there is some method to determine DATA?
return an amount of free memory does not approach, as there are other
processes…
CORE is probably limited by 2Gb since that’s limitation of write().
or free hard disk space?
as i understand, if this value is zero core file not created?
NOFILES can be obtained from sysconf().

again thanks, i have ported BIND 9.1.1 under RTP…
Leo.

Leo wrote:

Hi,
thanks, Igor


getrlimit() is advertized but not supported.
STACK is demand-paged, so I think limit is fairly large.
DATA probably doesn’t have hard limit but I doubt it can be more than
your RAM currently.

RAM? i think it can’t be more, than free (physical) memory… if DATA not
paged.
probably, it’s safe to set this 2 values (STACK and DATA) to RLIM_INFINITY,
or there is some method to determine DATA?
return an amount of free memory does not approach, as there are other
processes…

CORE is probably limited by 2Gb since that’s limitation of write().

or free hard disk space?
as i understand, if this value is zero core file not created?

NOFILES can be obtained from sysconf().


again thanks, i have ported BIND 9.1.1 under RTP…
Leo.

Ohh, You got this Bind port availible for the public somewhere?

/Johan

Ohh, You got this Bind port availible for the public somewhere?
It’s too simple, you can do it yourself…

  1. create entry in config.guess file (i do it manualy, probably it’s useful
    use autoconf)
  2. RTP have some ipv6 structure, but BIND use other definition, so you need
    to insert something like
    #define in6_addr ipv6_in6_addr
    before ‘struct in6_addr {’ in lib/lwres/include/lwres/ipv6.h and
    isc/include/isc/ipv6.h files
  3. BIND uses mutex named ‘lock’, but RTP defines function ‘lock’. So, you
    need to insert something like
    #define lock _lock
    before ‘static isc_mutex_t lock;’ definition in lib/isc/result.c
  4. in file lib/isc/unix/resource.c in function ‘isc_resource_getlimit()’ you
    need to do something after ‘getrlimit()’ and before
    ‘INSIST(unixresult == 0);’ because RTP doesn’t support getrlimit() fully (as
    menthioned above). So, you need to set ‘*value’ variable to some values (or
    ignore it, as Igor says, but i don’t check it). BIND call this function with
    ‘unixresource’ set to RLIMIT_CORE, RLIMIT_STACK, RLIMIT_NOFILES,
    RLIMIT_DATA, and you need check if ‘unixresult’ is -1 (error occured) and
    set ‘*value’ variable to appropriate values.

BIND is perfectly writen, it’s self-containing, but i do NOT check if it’s
fully working. I already have test version on P150 with 48Mb, as tests show
BIND on RTP two times slowly then HP NetServer LD Pro (native Windows NT 4.0
DNS, P200 pro, 256 MB RAM), it’s expected result.
PS: i complile BIND with gcc with 48Mb RAM, but nor 16Mb nor 32Mb - it’s too
low. hope nothing forget…

Good luck, Leo.

Leo wrote:

Ohh, You got this Bind port availible for the public somewhere?

It’s too simple, you can do it yourself…

  1. create entry in config.guess file (i do it manualy, probably it’s useful
    use autoconf)
  2. RTP have some ipv6 structure, but BIND use other definition, so you need
    to insert something like
    #define in6_addr ipv6_in6_addr
    before ‘struct in6_addr {’ in lib/lwres/include/lwres/ipv6.h and
    isc/include/isc/ipv6.h files
  3. BIND uses mutex named ‘lock’, but RTP defines function ‘lock’. So, you
    need to insert something like
    #define lock _lock
    before ‘static isc_mutex_t lock;’ definition in lib/isc/result.c
  4. in file lib/isc/unix/resource.c in function ‘isc_resource_getlimit()’ you
    need to do something after ‘getrlimit()’ and before
    ‘INSIST(unixresult == 0);’ because RTP doesn’t support getrlimit() fully (as
    menthioned above). So, you need to set ‘*value’ variable to some values (or
    ignore it, as Igor says, but i don’t check it). BIND call this function with
    ‘unixresource’ set to RLIMIT_CORE, RLIMIT_STACK, RLIMIT_NOFILES,
    RLIMIT_DATA, and you need check if ‘unixresult’ is -1 (error occured) and
    set ‘*value’ variable to appropriate values.

BIND is perfectly writen, it’s self-containing, but i do NOT check if it’s
fully working. I already have test version on P150 with 48Mb, as tests show
BIND on RTP two times slowly then HP NetServer LD Pro (native Windows NT 4.0
DNS, P200 pro, 256 MB RAM), it’s expected result.
PS: i complile BIND with gcc with 48Mb RAM, but nor 16Mb nor 32Mb - it’s too
low. hope nothing forget…

Good luck, Leo.

Thanks alot for the guide, i never tried since i don’t want it that
much, just a cool thing on my poor 486 server :wink:
Maybe i’ll just try it now, thnx!
/Johan