home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.0 / LINUX-1.0 / LINUX-1 / linux / net / unix / unix.h < prev   
Encoding:
C/C++ Source or Header  |  1994-03-04  |  2.0 KB  |  70 lines

  1. /*
  2.  * UNIX        An implementation of the AF_UNIX network domain for the
  3.  *        LINUX operating system.  UNIX is implemented using the
  4.  *        BSD Socket interface as the means of communication with
  5.  *        the user level.
  6.  *
  7.  *        This file descibes some things of the UNIX protocol family
  8.  *        module.  It is mainly used for the "proc" sub-module now,
  9.  *        but it may be useful for cleaning up the UNIX module as a
  10.  *        whole later.
  11.  *
  12.  * Version:    @(#)unix.h    1.0.3    05/25/93
  13.  *
  14.  * Authors:    Orest Zborowski, <obz@Kodak.COM>
  15.  *        Ross Biro, <bir7@leland.Stanford.Edu>
  16.  *        Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  17.  *
  18.  * Fixes:
  19.  *        Dmitry Gorodchanin    -    proc locking
  20.  *
  21.  *        This program is free software; you can redistribute it and/or
  22.  *        modify it under the terms of the GNU General Public License
  23.  *        as published by the Free Software Foundation; either version
  24.  *        2 of the License, or (at your option) any later version.
  25.  */
  26.  
  27.  
  28. #ifdef _LINUX_UN_H
  29.  
  30.  
  31. struct unix_proto_data {
  32.     int        refcnt;        /* cnt of reference 0=free    */
  33.                     /* -1=not initialised    -bgm    */
  34.     struct socket    *socket;    /* socket we're bound to    */
  35.     int        protocol;
  36.     struct sockaddr_un    sockaddr_un;
  37.     short        sockaddr_len;    /* >0 if name bound        */
  38.     char        *buf;
  39.     int        bp_head, bp_tail;
  40.     struct inode    *inode;
  41.     struct unix_proto_data    *peerupd;
  42.     struct wait_queue *wait;    /* Lock across page faults (FvK) */
  43.     int        lock_flag;
  44. };
  45.  
  46. extern struct unix_proto_data unix_datas[NSOCKETS];
  47.  
  48.  
  49. #define last_unix_data        (unix_datas + NSOCKETS - 1)
  50.  
  51.  
  52. #define UN_DATA(SOCK)         ((struct unix_proto_data *)(SOCK)->data)
  53. #define UN_PATH_OFFSET        ((unsigned long)((struct sockaddr_un *)0) \
  54.                             ->sun_path)
  55.  
  56. /*
  57.  * Buffer size must be power of 2. buffer mgmt inspired by pipe code.
  58.  * note that buffer contents can wraparound, and we can write one byte less
  59.  * than full size to discern full vs empty.
  60.  */
  61. #define BUF_SIZE        PAGE_SIZE
  62. #define UN_BUF_AVAIL(UPD)    (((UPD)->bp_head - (UPD)->bp_tail) & \
  63.                                 (BUF_SIZE-1))
  64. #define UN_BUF_SPACE(UPD)    ((BUF_SIZE-1) - UN_BUF_AVAIL(UPD))
  65.  
  66. #endif    /* _LINUX_UN_H */
  67.  
  68.  
  69. extern void    unix_proto_init(struct ddi_proto *pro);
  70.