NAME
prop_array_send_ioctl,
prop_array_recv_ioctl,
prop_dictionary_send_ioctl,
prop_dictionary_recv_ioctl,
prop_dictionary_sendrecv_ioctl —
Send
and receive property lists to and from the kernel using ioctl
SYNOPSIS
#include <prop/proplib.h>
int
prop_array_send_ioctl(
prop_array_t
array,
int fd,
unsigned long cmd);
int
prop_array_recv_ioctl(
int
fd,
unsigned long
cmd,
prop_array_t
*arrayp);
int
prop_dictionary_send_ioctl(
prop_dictionary_t
dict,
int fd,
unsigned long cmd);
int
prop_dictionary_recv_ioctl(
int
fd,
unsigned long
cmd,
prop_dictionary_t
*dictp);
int
prop_dictionary_sendrecv_ioctl(
prop_dictionary_t
dict,
int fd,
unsigned long cmd,
prop_dictionary_t *dictp);
DESCRIPTION
The
prop_array_send_ioctl(),
prop_array_recv_ioctl(),
prop_dictionary_send_ioctl(),
prop_dictionary_recv_ioctl(), and
prop_dictionary_sendrecv_ioctl() functions implement the
user space side of a protocol for sending property lists to and from the
kernel using
ioctl(2).
RETURN VALUES
If successful, functions return zero. Otherwise, an error number is returned to
indicate the error.
EXAMPLES
The following (simplified) example demonstrates using
prop_dictionary_send_ioctl() and
prop_dictionary_recv_ioctl() in an application:
void
foo_setprops(prop_dictionary_t dict)
{
int fd;
fd = open("/dev/foo", O_RDWR, 0640);
if (fd == -1)
return;
(void) prop_dictionary_send_ioctl(dict, fd, FOOSETPROPS);
(void) close(fd);
}
prop_dictionary_t
foo_getprops(void)
{
prop_dictionary_t dict;
int fd;
fd = open("/dev/foo", O_RDONLY, 0640);
if (fd == -1)
return (NULL);
if (prop_dictionary_recv_ioctl(fd, FOOGETPROPS, &dict) != 0)
return (NULL);
(void) close(fd);
return (dict);
}
The
prop_dictionary_sendrecv_ioctl() function combines the
send and receive functionality, allowing for ioctls that require two-way
communication (for example to specify arguments for the ioctl operation).
ERRORS
prop_array_send_ioctl() and
prop_dictionary_send_ioctl() will fail if:
-
-
- [
ENOMEM
]
- Cannot allocate memory
-
-
- [
ENOTSUP
]
- Not supported
prop_array_recv_ioctl() and
prop_dictionary_recv_ioctl() will fail if:
-
-
- [
EIO
]
- Input/output error
-
-
- [
ENOTSUP
]
- Not supported
In addition to these,
ioctl(2)
errors may be returned.
SEE ALSO
prop_array(3),
prop_dictionary(3),
proplib(3),
prop_copyin_ioctl(9)
HISTORY
The
proplib(3) property container
object library first appeared in
NetBSD 4.0.