Re: Measuring memory footprint in C/C++ code on FreeBSD

2011-10-23 Thread Razmig K
Hello

Thanks to everyone for tips and insight you gave me on this discussion.

~Razmig

___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


_SC_GETPW_R_SIZE_MAX undefined in sysconf.c, what is correct value?

2011-10-23 Thread Christopher J. Ruwe
I need to get the maximum size of an pwd-entry to determine the correct
buffersize for calling getpwnam_r(uname,pwd, buf, bufsize, pwdp). I
would like to use sysconf(_SC_GETPW_R_SIZE_MAX) to determine bufsize,
which unfornutately fails (returns -1). Currently, I used 16384, which
seems to be too much, bit works for the time being.

From recent mails I get that _SC_GETPW_R_SIZE_MAX is not available on FreeBSD, 
e.g., 
http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2009-September/173081.html
 and http://www.redhat.com/archives/libvir-list/2011-May/msg01013.html. This 
assertion seems to be backed by /usr/srclib/libc/gen/sysconf.c, line 374.

From Stevens  Rago, Adavanced Programming in the UNIX Environment, I can get 
that FreeBSD supports all possible members in the passwd structure, but where 
can I determine the maximum size of these so that I can calculate the ax size 
of the pwd struct therefrom? Does anybody know or know where to look what 
maximum size a pwd-entry can have? 

Knowing the maximum size a pwd structure can have, it seems like to be an idea 
to define the correct value in sysconf.c. As that is not done though suggested 
in the code, are there any obstacles in defining that value so nobody has done 
that so far?

Thanks for any help, cheers, 
-- 
Christopher J. Ruwe
TZ GMT + 2


signature.asc
Description: PGP signature


Re: _SC_GETPW_R_SIZE_MAX undefined in sysconf.c, what is correct value?

2011-10-23 Thread Dan Nelson
In the last episode (Oct 23), Christopher J. Ruwe said:
 I need to get the maximum size of an pwd-entry to determine the correct
 buffersize for calling getpwnam_r(uname,pwd, buf, bufsize, pwdp).  I
 would like to use sysconf(_SC_GETPW_R_SIZE_MAX) to determine bufsize,
 which unfornutately fails (returns -1).  Currently, I used 16384, which
 seems to be too much, bit works for the time being.
 
 From recent mails I get that _SC_GETPW_R_SIZE_MAX is not available on
 FreeBSD, e.g.,
 http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2009-September/173081.html
 and http://www.redhat.com/archives/libvir-list/2011-May/msg01013.html. 
 This assertion seems to be backed by /usr/srclib/libc/gen/sysconf.c, line
 374.
 
 From Stevens  Rago, Adavanced Programming in the UNIX Environment, I can
 get that FreeBSD supports all possible members in the passwd structure,
 but where can I determine the maximum size of these so that I can
 calculate the ax size of the pwd struct therefrom?  Does anybody know or
 know where to look what maximum size a pwd-entry can have?
 
 Knowing the maximum size a pwd structure can have, it seems like to be an
 idea to define the correct value in sysconf.c.  As that is not done though
 suggested in the code, are there any obstacles in defining that value so
 nobody has done that so far?

From looking at the libc/gen/getpwent.c file, it looks like a maximum size
might be 1MB.  The wrapper functions that convert getpw*_r functions into
ones that simply return a pointer to malloced data all use the getpw()
helper function, which starts with a 1k buffer and keeps doubling its size
until the data fits or it hits PWD_STORAGE_MAX (1MB).  PWD_STORAGE_MAX is
only checked within that getpw() function, though, so it's possible that an
nss library might return an even longer string to a get*_r call.  It's up to
you to decide what your own limit is :)

-- 
Dan Nelson
dnel...@allantgroup.com
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org