Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XS_MSG_INIT_DATA(3)	     Crossroads	I/O Manual	   XS_MSG_INIT_DATA(3)

NAME
       xs_msg_init_data	- initialise Crossroads	message	from a supplied	buffer

SYNOPSIS
       typedef void (xs_free_fn) (void *data, void *hint);

       int xs_msg_init_data (xs_msg_t *msg, void *data,	size_t size,
       xs_free_fn *ffn,	void *hint);

DESCRIPTION
       The xs_msg_init_data() function shall initialise	the message object
       referenced by msg to represent the content referenced by	the buffer
       located at address data,	size bytes long. No copy of data shall be
       performed and the library shall take ownership of the supplied buffer.

       If provided, the	deallocation function ffn shall	be called once the
       data buffer is no longer	required by the	library, with the data and
       hint arguments supplied to xs_msg_init_data().

	   Caution
	   Never access	xs_msg_t members directly, instead always use the
	   xs_msg family of functions.

	   Caution
	   The deallocation function ffn needs to be thread-safe, since	it
	   will	be called from an arbitrary thread.

	   Caution
	   The functions xs_msg_init(),	xs_msg_init_data() and
	   xs_msg_init_size() are mutually exclusive. Never initialize the
	   same	xs_msg_t twice.

RETURN VALUE
       The xs_msg_init_data() function shall return zero if successful.
       Otherwise it shall return -1 and	set errno to one of the	values defined
       below.

ERRORS
       ENOMEM
	   Insufficient	storage	space is available.

EXAMPLE
       Initialising a message from a supplied buffer.

	   void	my_free	(void *data, void *hint)
	   {
	       free (data);
	   }

	       /*  ...	*/

	   void	*data =	malloc (6);
	   assert (data);
	   memcpy (data, "ABCDEF", 6);
	   xs_msg_t msg;
	   rc =	xs_msg_init_data (&msg,	data, 6, my_free, NULL);
	   assert (rc == 0);

SEE ALSO
       xs_msg_init_size(3) xs_msg_init(3) xs_msg_close(3) xs_msg_data(3)
       xs_msg_size(3) xs(7)

AUTHORS
       The Crossroads documentation was	written	by Martin Sustrik
       <sustrik@250bpm.com[1]> and Martin Lucina <martin@lucina.net[2]>.

NOTES
	1. sustrik@250bpm.com
	   mailto:sustrik@250bpm.com

	2. martin@lucina.net
	   mailto:martin@lucina.net

Crossroads I/O 1.2.0		  08/26/2021		   XS_MSG_INIT_DATA(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | EXAMPLE | SEE ALSO | AUTHORS | NOTES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=xs_msg_init_data&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help