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

FreeBSD Manual Pages

  
 
  

home | help
CHMAKE_MEM(3)		   libdill Library Functions		 CHMAKE_MEM(3)

NAME
       chmake_mem - creates a channel

SYNOPSIS
	      #include <libdill.h>

	      int chmake_mem(
		  struct chstorage* mem,
		  int chv[2]);

DESCRIPTION
       Creates	a  bidirectional  channel.   In	case of	success	handles	to the
       both sides of the channel will be returned in chv parameter.

       A channel is a synchronization primitive, not a container.  It  doesn't
       store any items.

       This  function allows to	avoid one dynamic memory allocation by storing
       the object in user-supplied memory.  Unless  you	 are  hyper-optimizing
       use chmake instead.

       mem:  The  structure to store the newly created object in.  It must not
       be deallocated before the object	is closed.

       chv: Out	parameter.  Two	handles	to the opposite	ends of	the channel.

RETURN VALUE
       In case of success the function returns 0.  In case of error it returns
       -1 and sets errno to one	of the values below.

ERRORS
        EMFILE: The maximum number of file descriptors	in the process are al-
	 ready open.

        ENFILE: The maximum number of file descriptors	in the system are  al-
	 ready open.

        ENOMEM: Not enough memory.

EXAMPLE
	      int ch[2];
	      int rc = chmake(ch);
	      if(rc == -1) {
		  perror("Cannot create	channel");
		  exit(1);
	      }

SEE ALSO
       chdone(3) chmake(3) choose(3) chrecv(3) chsend(3) hclose(3)

libdill								 CHMAKE_MEM(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=chmake_mem&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help