t_alloc(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

t_alloc(3c)

t_alloc(3C)              Standard C Library Functions              t_alloc(3C)

NAME
       t_alloc - allocate a library structure

SYNOPSIS
       #include <xti.h>

       void *t_alloc(int fd, int struct_type, int fields);

DESCRIPTION
       This  routine  is part of the XTI interfaces which evolved from the TLI
       interfaces. XTI represents the future evolution  of  these  interfaces.
       However,  TLI  interfaces are supported for compatibility. When using a
       TLI routine that has the same name  as  an  XTI  routine,  a  different
       header file, tiuser.h, must be used. Refer to the section, TLI  COMPAT‐
       IBILITY, for a description of differences between the two interfaces.


       The  t_alloc()  function  dynamically  allocates memory for the various
       transport function argument structures as specified below.  This  func‐
       tion  will  allocate  memory for the specified structure, and will also
       allocate memory for buffers referenced by the structure.


       The structure to allocate is specified by struct_type and must  be  one
       of the following:



         T_BIND             struct     t_bind
         T_CALL             struct     t_call
         T_OPTMGMT       struct   t_optmgmt
         T_DIS                   struct     t_discon
         T_UNITDATA          struct    t_unitdata
         T_UDERROR       struct   t_uderr
         T_INFO             struct     t_info



       where  each of these structures may subsequently be used as an argument
       to one or more transport functions.


       Each of the above structures, except  T_INFO,  contains  at  least  one
       field of type struct  netbuf. For each field of this type, the user may
       specify that the buffer for that field should be allocated as well. The
       length of the buffer allocated will be equal to or greater than the ap‐
       propriate size as returned in the info argument of t_open(3C) or t_get‐
       info(3C). The relevant fields of the info argument are described in the
       following  list.  The  fields argument specifies which buffers to allo‐
       cate, where the argument is the bitwise-or of any of the following:

       T_ADDR     The addr field of the t_bind, t_call, t_unitdata or  t_uderr
                  structures.


       T_OPT      The  opt field of the t_optmgmt, t_call, t_unitdata or t_ud‐
                  err structures.


       T_UDATA    The udata field of the t_call, t_discon or t_unitdata struc‐
                  tures.


       T_ALL      All relevant fields of the given structure. Fields which are
                  not supported by the transport provider specified by fd will
                  not be allocated.



       For each relevant field specified in fields,  t_alloc()  will  allocate
       memory for the buffer associated with the field, and initialize the len
       field to zero and the buf pointer and maxlen field accordingly. Irrele‐
       vant  or  unknown values passed in fields are ignored. Since the length
       of the buffer allocated will be based on the same size information that
       is returned to the user on a call to t_open(3C) and  t_getinfo(3C),  fd
       must  refer to the transport endpoint through which the newly allocated
       structure will be passed. In the case where a T_INFO structure is to be
       allocated, fd may be set to any value. In this way the appropriate size
       information can be accessed. If the  size  value  associated  with  any
       specified  field  is  T_INVALID,  t_alloc() will be unable to determine
       the size of the buffer to allocate and will fail,  setting  t_errno  to
       TSYSERR  and  errno  to EINVAL. See t_open(3C) or t_getinfo(3C). If the
       size value associated with any specified field is T_INFINITE, then  the
       behavior  of  t_alloc()  is  implementation-defined.  For any field not
       specified in fields, buf will be set to the null pointer  and  len  and
       maxlen will be set to zero. See t_open(3C) or t_getinfo(3C).


       The  pointer returned if the allocation succeeds is suitably aligned so
       that it can be assigned to a pointer to any type  of  object  and  then
       used to access such an object or array of such objects in the space al‐
       located.


       Use  of  t_alloc() to allocate structures will help ensure the compati‐
       bility of user programs with future releases of the transport interface
       functions.

RETURN VALUES
       On successful completion, t_alloc() returns a pointer to the newly  al‐
       located structure. On failure, a null pointer is returned.

VALID STATES
       ALL - apart from T_UNINIT

ERRORS
       On failure, t_errno is set to one of the following:

       TBADF           struct_type is other than T_INFO and the specified file
                       descriptor does not refer to a transport endpoint.


       TNOSTRUCTYPE    Unsupported  struct_type  requested. This can include a
                       request for a structure type which is inconsistent with
                       the transport provider type specified, that is, connec‐
                       tion-mode or connectionless-mode.


       TPROTO          This error indicates that a communication  problem  has
                       been  detected  between  XTI and the transport provider
                       for which there is no other suitable XTI  error  (t_er‐
                       rno).


       TSYSERR         A  system  error  has occurred during execution of this
                       function.


TLI COMPATIBILITY
       The XTI and TLI interface definitions have common names but use differ‐
       ent header files. This, and other semantic differences between the  two
       interfaces are described in the subsections below.

   Interface Header
       The  XTI  interfaces  use the header file, xti.h. TLI interfaces should
       not use this header. They should use the header:


       #include  <tiuser.h>

   Error Description Values
       The t_errno values that can be set by the XTI interface and  cannot  be
       set by the TLI interface are:

       TPROTO


       TNOSTRUCTYPE


   Special Buffer Sizes
       Assume  that the value associated with any field of struct  t_info (ar‐
       gument returned by t_open() or t_getinfo()) that describes buffer  lim‐
       its is -1. Then the underlying service provider can support a buffer of
       unlimited  size.  If this is the case, t_alloc() will allocate a buffer
       with the default size 1024 bytes, which may be handled as described  in
       the next paragraph.


       If  the underlying service provider supports a buffer of unlimited size
       in the netbuf structure (see t_connect(3C)), t_alloc()  will  return  a
       buffer of size 1024 bytes. If a larger size buffer is required, it will
       need  to be allocated separately using a memory allocation routine such
       as malloc(3C). The buf and maxlen fields of the netbuf  data  structure
       can  then  be  updated  with the address of the new buffer and the 1024
       byte buffer originally  allocated  by  t_alloc()  can  be  freed  using
       free(3C).


       Assume  that the value associated with any field of struct  t_info (ar‐
       gument returned by t_open() or t_getinfo()  )  that  describes  nbuffer
       limits  is  -2.  Then t_alloc() will set the buffer pointer to NULL and
       the buffer maximum size  to  0,  and  then  will  return  success  (see
       t_open(3C) or t_getinfo(3C)).

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ MT LevelSafe


SEE ALSO
       free(3C),   malloc(3C),   t_connect(3C),   t_free(3C),   t_getinfo(3C),
       t_open(3C), attributes(7)

Oracle Solaris 11.4               7 May 1998                       t_alloc(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3