| PROP_SEND_IOCTL(3) | Library Functions Manual | PROP_SEND_IOCTL(3) | 
prop_array_send_ioctl,
  prop_array_recv_ioctl,
  prop_dictionary_send_ioctl,
  prop_dictionary_recv_ioctl,
  prop_dictionary_sendrecv_ioctl —
#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);
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).
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).
prop_array_send_ioctl() and
  prop_dictionary_send_ioctl() will fail if:
prop_array_recv_ioctl() and
    prop_dictionary_recv_ioctl() will fail if:
In addition to these, ioctl(2) errors may be returned.
| January 21, 2008 | NetBSD 10.0 |