PROP_SEND_SYCALL(3)

PROP_SEND_SYCALL(3) | Library Functions Manual | PROP_SEND_SYCALL(3)

# NAME

prop_array_send_syscall, prop_array_recv_syscall, prop_dictionary_send_syscall, prop_dictionary_recv_syscall — send and receive property lists to and from the kernel using syscalls

# SYNOPSIS

#include <prop/proplib.h>
int
prop_array_send_syscall(prop_array_t array, struct plistref *prefp);
int
prop_array_recv_syscall(const struct plistref *prefp, prop_array_t *arrayp);
int
prop_dictionary_send_syscall(prop_dictionary_t dict, struct plistref *prefp);
int
prop_dictionary_recv_syscall(const struct plistref *prefp, prop_dictionary_t *dictp);

# DESCRIPTION

The prop_array_send_syscall(), prop_array_recv_syscall(), prop_dictionary_send_syscall(), and prop_dictionary_recv_syscall() functions implement the user space side of a protocol for sending property lists to and from the kernel using syscall(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_syscall() and prop_dictionary_recv_syscall() in an application:

    void
    foo_setprops(prop_dictionary_t dict)
    {
        struct pref pref;

        (void) prop_dictionary_send_syscall(dict, &pref);
        (void) my_syscall_set(&pref);

    }

    prop_dictionary_t
    foo_getprops(void)
    {
        prop_dictionary_t dict;
        struct pref pref;

        (void) my_syscall_get(&pref);
        if (prop_dictionary_recv_syscall(&pref, &dict) != 0)
            return (NULL);

        return (dict);
    }

# ERRORS

prop_array_send_syscall() and prop_dictionary_send_syscall() will fail if:

[`ENOMEM`]
  Cannot allocate memory
[`ENOTSUP`]
  Not supported

prop_array_recv_syscall() and prop_dictionary_recv_syscall() will fail if:

[`EIO`]
  Input/output error
[`ENOTSUP`]
  Not supported

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

January 17, 2011 | NetBSD 8.3