u-isdn/include/streams.h

107 lines
3.5 KiB
C

#ifndef __STREAMS_H
#define __STREAMS_H
#include "kernel.h"
#if !(defined(__sys_stream_h) || defined(_SYS_STREAM_H) || defined(_LINUX_STREAM_H))
#ifdef KERNEL
#include "stream.h"
#else
#ifdef linux
#include "stream.h"
#else
#include <sys/aux-stream.h>
#endif /* KERNEL */
#endif
#endif /* SYS_xxx */
#ifndef KERNEL
/*
* Stream control. Use setq to change the behavior of the stream endpoints.
*/
struct xstream {
queue_t rh, wh, wl, rl; /* Order matters. Note that the lower queue
* names are inverted. */
};
#endif /* KERNEL */
/* Standard STREAMS prototypes et al. */
#if (!defined(KERNEL) || !defined(SVR4)) && !defined(linux) /* System prototypes */
mblk_t *allocb (register int size, int pri);
int testb (register int size, int pri);
void freeb (register mblk_t * bp);
void freemsg (register mblk_t * bp);
mblk_t *dupb (register mblk_t * bp);
mblk_t *dupmsg (register mblk_t * bp);
mblk_t *copyb (register mblk_t * bp);
mblk_t *copymsg (register mblk_t * bp);
mblk_t *copybufb (register mblk_t * bp);
mblk_t *copybufmsg (register mblk_t * bp);
void linkb (register mblk_t * mp, register mblk_t * bp);
mblk_t *unlinkb (register mblk_t * bp);
mblk_t *rmvb (register mblk_t * mp, register mblk_t * bp);
int pullupmsg (mblk_t * mp, register int len);
int adjmsg (mblk_t * mp, register int len);
int xmsgsize (register mblk_t * bp);
int msgdsize (register mblk_t * bp);
mblk_t *getq (register queue_t * q);
void rmvq (register queue_t * q, register mblk_t * mp);
void flushq (register queue_t * q, int flag);
int canput (queue_t * q);
/* void */ int putq (register queue_t * q, register mblk_t * bp);
void putbq (register queue_t * q, register mblk_t * bp);
void insq (register queue_t * q, register mblk_t * emp, register mblk_t * mp);
int putctl (queue_t * q, uchar_t type);
int putctl1 (queue_t * q, uchar_t type, char info);
queue_t *allocq (void);
queue_t *backq (register queue_t * q);
void qreply (register queue_t * q, mblk_t * bp);
int qenable (register queue_t * q);
/* Nobody knows why qenable() returns an int. */
void queuerun (void);
void runqueues (void);
int qsize (register queue_t * qp);
int qattach (register struct streamtab *qinfo, register queue_t * qp, int flag);
void qdetach (register queue_t * qp, int clmode, int flag);
void setq (queue_t * rq, struct qinit *rinit, struct qinit *winit);
int findmod (register char *name);
#endif
#ifndef KERNEL
/*
* New or modified routines
*/
#ifdef CONFIG_DEBUG_STREAMS
mblk_t *deb_allocsb (const char *deb_file, unsigned int deb_line, ushort_t size, streamchar *data);
#define allocsb(a,b) deb_allocsb(__FILE__,__LINE__,a,b)
#else
mblk_t *allocsb (ushort_t size, streamchar *data);
#endif
void modregister (struct streamtab *info);
struct xstream *stropen (int flag);
void strclose (struct xstream *xp, int flag);
int strread (struct xstream *xp, streamchar *data, int len, int usehq);
#ifdef CONFIG_DEBUG_STREAMS
#define strwrite(a,b,c,d) deb_strwrite(__FILE__,__LINE__,(a),(b),(c),(d))
int deb_strwrite (const char *deb_file,unsigned int deb_line, struct xstream *xp, streamchar *data, int len, int usehq);
#define strwritev(a,b,c,d) deb_strwritev(__FILE__,__LINE__,(a),(b),(c),(d))
int deb_strwritev (const char *deb_file,unsigned int deb_line, struct xstream *xp, struct iovec *iov, int iovlen, int usehq);
#else
int strwrite (struct xstream *xp, streamchar *data, int len, int usehq);
int strwritev (struct xstream *xp, struct iovec *iov, int iovlen, int usehq);
#endif
int strioctl (struct xstream *xp, long cmd, long arg);
#endif /* KERNEL */
#endif /* __STREAMS_H */