66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
|
/*
|
||
|
* UNIX An implementation of the AF_UNIX network domain for the
|
||
|
* LINUX operating system. UNIX is implemented using the
|
||
|
* BSD Socket interface as the means of communication with
|
||
|
* the user level.
|
||
|
*
|
||
|
* This file descibes some things of the UNIX protocol family
|
||
|
* module. It is mainly used for the "proc" sub-module now,
|
||
|
* but it may be useful for cleaning up the UNIX module as a
|
||
|
* whole later.
|
||
|
*
|
||
|
* Version: @(#)unix.h 1.0.3 05/25/93
|
||
|
*
|
||
|
* Authors: Orest Zborowski, <obz@Kodak.COM>
|
||
|
* Ross Biro, <bir7@leland.Stanford.Edu>
|
||
|
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; either version
|
||
|
* 2 of the License, or (at your option) any later version.
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifdef _LINUX_UN_H
|
||
|
|
||
|
|
||
|
struct unix_proto_data {
|
||
|
int refcnt; /* cnt of reference 0=free */
|
||
|
struct socket *socket; /* socket we're bound to */
|
||
|
int protocol;
|
||
|
struct sockaddr_un sockaddr_un;
|
||
|
short sockaddr_len; /* >0 if name bound */
|
||
|
char *buf;
|
||
|
int bp_head, bp_tail;
|
||
|
struct inode *inode;
|
||
|
struct unix_proto_data *peerupd;
|
||
|
struct wait_queue *wait; /* Lock across page faults (FvK) */
|
||
|
int lock_flag;
|
||
|
};
|
||
|
|
||
|
extern struct unix_proto_data unix_datas[NSOCKETS];
|
||
|
|
||
|
|
||
|
#define last_unix_data (unix_datas + NSOCKETS - 1)
|
||
|
|
||
|
|
||
|
#define UN_DATA(SOCK) ((struct unix_proto_data *)(SOCK)->data)
|
||
|
#define UN_PATH_OFFSET ((unsigned long)((struct sockaddr_un *)0) \
|
||
|
->sun_path)
|
||
|
|
||
|
/*
|
||
|
* Buffer size must be power of 2. buffer mgmt inspired by pipe code.
|
||
|
* note that buffer contents can wraparound, and we can write one byte less
|
||
|
* than full size to discern full vs empty.
|
||
|
*/
|
||
|
#define BUF_SIZE PAGE_SIZE
|
||
|
#define UN_BUF_AVAIL(UPD) (((UPD)->bp_head - (UPD)->bp_tail) & \
|
||
|
(BUF_SIZE-1))
|
||
|
#define UN_BUF_SPACE(UPD) ((BUF_SIZE-1) - UN_BUF_AVAIL(UPD))
|
||
|
|
||
|
#endif /* _LINUX_UN_H */
|
||
|
|
||
|
|
||
|
extern void unix_proto_init(struct ddi_proto *pro);
|