| PROP_SEND_IOCTL(3) | Library Functions Manual | PROP_SEND_IOCTL(3) |
prop_object_send_ioctl,
prop_object_recv_ioctl,
prop_object_sendrecv_ioctl —
Send and receive property lists to and from the kernel
using ioctl
#include
<prop/proplib.h>
int
prop_object_send_ioctl(prop_object_t
obj, int fd,
unsigned long cmd);
int
prop_object_recv_ioctl(int
fd, unsigned long
cmd, prop_object_t
*objp);
int
prop_object_sendrecv_ioctl(prop_object_t
dict, int fd,
unsigned long cmd,
prop_object_t *objp);
The
prop_object_send_ioctl(),
prop_object_recv_ioctl(),
and
prop_object_sendrecv_ioctl()
functions implement the user space side of a protocol for sending property
lists to and from the kernel using
ioctl(2).
The functions
prop_array_send_ioctl(),
prop_array_recv_ioctl(),
prop_dictionary_send_ioctl(),
prop_dictionary_recv_ioctl(),
and
prop_dictionary_sendrecv_ioctl()
are provided as wrappers around the corresponding generic object functions
for backwards compatibility.
If successful, functions return zero. Otherwise, an error number is returned to indicate the error.
The following (simplified) example demonstrates using
prop_object_send_ioctl() and
prop_object_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_object_send_ioctl(dict, fd, FOOSETPROPS);
(void) close(fd);
}
prop_dictionary_t
foo_getprops(void)
{
prop_object_t obj;
int fd;
fd = open("/dev/foo", O_RDONLY, 0640);
if (fd == -1)
return (NULL);
if (prop_object_recv_ioctl(fd, FOOGETPROPS, &obj) != 0)
return (NULL);
(void) close(fd);
return (obj);
}
The prop_object_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).
prop_object_send_ioctl() will fail if:
ENOMEM]prop_object_recv_ioctl() will fail if:
EIO]In addition to these, ioctl(2) errors may be returned.
prop_array(3), prop_dictionary(3), proplib(3), prop_copyin_ioctl(9)
The proplib(3) property container object library first appeared in NetBSD 4.0.
| April 20, 2025 | NetBSD 11.0 |