=head1 NAME

nbd_set_private_data - set the per-handle private data

=head1 SYNOPSIS

 #include <libnbd.h>

 uintptr_t nbd_set_private_data (
             struct nbd_handle *h, uintptr_t private_data
           );

=head1 DESCRIPTION

Handles contain a private data field for applications to use
for any purpose.  This function sets the value of this field
and returns the old value (or 0 if it was not previously set).

When calling libnbd from C, the type of this field is C<uintptr_t> so
it can be used to store an unsigned integer or a pointer.

In non-C bindings it can be used to store an unsigned integer.

Libnbd does not use or interpret the value at all (except to return
it when you call L<nbd_get_private_data(3)>).  In particular, if the
value is a pointer then it is not freed when the handle is closed.
If you want that behaviour, see L<nbd_add_close_callback(3)>.

=head1 RETURN VALUE

This call returns a C<uintptr_t>.

=head1 ERRORS

This function does not fail.

The following parameters must not be NULL: C<h>.
For more information see L<libnbd(3)/Non-NULL parameters>.

=head1 VERSION

This function first appeared in libnbd 1.8.

If you need to test if this function is available at compile time
check if the following macro is defined:

 #define LIBNBD_HAVE_NBD_SET_PRIVATE_DATA 1

=head1 SEE ALSO

L<nbd_add_close_callback(3)>,
L<nbd_create(3)>,
L<nbd_get_private_data(3)>,
L<libnbd(3)>.

=head1 AUTHORS

Eric Blake

Richard W.M. Jones

=head1 COPYRIGHT

Copyright Red Hat
