January 21, 2008 PROP_SEND_IOCTL 3

### NAME

prop_array_send_ioctl, prop_array_recv_ioctl, prop_dictionary_send_ioctl, prop_dictionary_recv_ioctl, prop_dictionary_sendrecv_ioctl - Send and receive propertly lists to and from the kernel using ioctl

### SYNOPSIS

```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`) 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.

### 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.

### 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).

### SEE ALSO

prop_array(3), prop_dictionary(3), proplib(3), prop_copyin_ioctl(9)

### HISTORY

The proplib property container object library first appeared in NetBSD4.0.