snoop.h revision 7430
1/* 2 * Copyright (c) 1995 Ugen J.S.Antsilevich 3 * 4 * Redistribution and use in source forms, with and without modification, 5 * are permitted provided that this entire comment appears intact. 6 * 7 * Redistribution in binary form may occur without any restrictions. 8 * Obviously, it would be nice if you gave credit where credit is due 9 * but requiring it would be too onerous. 10 * 11 * This software is provided ``AS IS'' without any warranties of any kind. 12 * 13 * Snoop stuff. 14 */ 15 16#ifndef _SNOOP_H_ 17#define _SNOOP_H_ 18 19#define SNOOP_MINLEN (4*1024) /* This should be power of 2. 20 * 4K tested to be the minimum 21 * for which on normal tty 22 * usage there is no need to 23 * allocate more. 24 */ 25#define SNOOP_MAXLEN (64*1024) /* This one also,64K enough 26 * If we grow more,something 27 * really bad in this world.. 28 */ 29 30/* 31 * This is the main snoop per-device 32 * structure... 33 */ 34 35struct snoop { 36 dev_t snp_target; /* major/minor number of device*/ 37 struct tty *snp_tty; /* tty device pointer */ 38 u_long snp_len; /* buffer data length */ 39 u_long snp_base; /* buffer data base */ 40 u_long snp_blen; /* Overall buffer len */ 41 caddr_t snp_buf; /* Data buffer */ 42 int snp_flags; /* Flags place */ 43#define SNOOP_NBIO 0x0001 44#define SNOOP_ASYNC 0x0002 45#define SNOOP_OPEN 0x0004 46#define SNOOP_RWAIT 0x0008 47#define SNOOP_OFLOW 0x0010 48#define SNOOP_DOWN 0x0020 49 struct selinfo snp_sel; /* Selection info */ 50}; 51 52/* 53 * Theese are snoop io controls 54 * SNPSTTY accepts 'struct snptty' as input. 55 * If ever type or unit set to -1,snoop device 56 * detached from it's current tty. 57 */ 58 59#define SNPSTTY _IOW('T', 90, dev_t) 60#define SNPGTTY _IOR('T', 89, dev_t) 61 62/* 63 * Theese values would be returned by FIONREAD ioctl 64 * instead of number of characters in buffer in case 65 * of specific errors. 66 */ 67#define SNP_OFLOW -1 68#define SNP_TTYCLOSE -2 69#define SNP_DETACH -3 70 71#ifdef KERNEL 72/* XXX several wrong storage classes and types here. */ 73int snpclose __P((dev_t dev, int flag)); 74int snp_detach __P((struct snoop *snp)); 75int snpdown __P((struct snoop *snp)); 76int snpin __P((struct snoop *snp, char *buf, int n)); 77int snpinc __P((struct snoop *snp, char c)); 78int snpioctl __P((dev_t dev, int cmd, caddr_t data, int flag)); 79int snpopen __P((dev_t dev, int flag, int mode, struct proc *p)); 80int snpread __P((dev_t dev, struct uio *uio, int flag)); 81int snpselect __P((dev_t dev, int rw, struct proc *p)); 82int snpwrite __P((dev_t dev, struct uio *uio, int flag)); 83#endif /* KERNEL */ 84 85#endif /* _SNOOP_H_ */ 86