PDA

View Full Version : is getmntinfo64 reentrant




bdoyle
Nov 6, 2008, 09:08 PM
Anybody know if getmntinfo64() is reentrant?

Thanks,
Blade.



Cromulent
Nov 6, 2008, 09:58 PM
GETMNTINFO(3) BSD Library Functions Manual GETMNTINFO(3)

NAME
getmntinfo -- get information about mounted file systems

LIBRARY
Standard C Library (libc, -lc)

SYNOPSIS
#include <sys/param.h>
#include <sys/ucred.h>
#include <sys/mount.h>

int
getmntinfo(struct statfs **mntbufp, int flags);

int
getmntinfo64(struct statfs64 **mntbufp, int flags);

DESCRIPTION
The getmntinfo() function returns an array of statfs structures describing each currently mounted file
system (see statfs(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/statfs.2.html#//apple_ref/doc/man/2/statfs)). Likewise, the getmntinfo64() function returns an array of statfs64 structures
describing each currently mounted file system.

The getmntinfo() function passes its flags argument transparently to getfsstat(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/getfsstat.2.html#//apple_ref/doc/man/2/getfsstat), while the
getmntinfo64() function passes its flags argument transparently to getfsstat64().

RETURN VALUES
On successful completion, getmntinfo() and getmntinfo64() return a count of the number of elements in
the array. The pointer to the array is stored into mntbufp.

If an error occurs, zero is returned and the external variable errno is set to indicate the error.
Although the pointer mntbufp will be unmodified, any information previously returned by getmntinfo() or
getmntinfo64() will be lost.

ERRORS
The getmntinfo() and getmntinfo64() functions may fail and set errno for any of the errors specified
for the library routines getfsstat(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/getfsstat.2.html#//apple_ref/doc/man/2/getfsstat) or malloc(3) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/malloc.3.html#//apple_ref/doc/man/3/malloc).

SEE ALSO
getfsstat(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/getfsstat.2.html#//apple_ref/doc/man/2/getfsstat), mount(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/mount.2.html#//apple_ref/doc/man/2/mount), statfs(2) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/statfs.2.html#//apple_ref/doc/man/2/statfs), mount(8) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/mount.8.html#//apple_ref/doc/man/8/mount)

HISTORY
The getmntinfo() function first appeared in 4.4BSD.

BUGS
The getmntinfo() and getmntinfo64() functions write the array of structures to an internal static
object and returns a pointer to that object. Subsequent calls to getmntinfo() and getmntinfo64() will
modify the same object.

The memory allocated by getmntinfo() and getmntinfo64() cannot be free(3) (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/free.3.html#//apple_ref/doc/man/3/free)'d by the application.

BSD June 9, 1993 BSDhttp://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/getmntinfo.3.html

bdoyle
Nov 7, 2008, 01:37 PM
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/getmntinfo.3.html


The man page does not say directly but it does say:

BUGS
The getmntinfo() and getmntinfo64() functions write the array of struc-
tures to an internal static object and returns a pointer to that object.
Subsequent calls to getmntinfo() and getmntinfo64() will modify the same
object.

So, I am guessing that means it is not reentrant. But I was hoping I could get a Yes/No confirmation from an expert. For all I know theres a mutex already in place.

Thanks,
Blade.

Cromulent
Nov 7, 2008, 01:39 PM
As far as I am aware, no it is not reentrant.

bdoyle
Nov 7, 2008, 02:37 PM
Thanks.

Blade.