Slightly change the API for the SNPSTTY ioctl so that the userland now
provides a file descriptor instead of a dev_t. Discussed with: phk MFC after: 3 days
This commit is contained in:
parent
323d07b497
commit
30ce1aad9c
@ -30,6 +30,8 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/queue.h>
|
||||
#include <sys/snoop.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/vnode.h>
|
||||
|
||||
static l_close_t snplclose;
|
||||
static l_write_t snplwrite;
|
||||
@ -518,16 +520,22 @@ snpioctl(dev, cmd, data, flags, td)
|
||||
struct snoop *snp;
|
||||
struct tty *tp, *tpo;
|
||||
struct cdev *tdev;
|
||||
struct file *fp;
|
||||
int s;
|
||||
|
||||
snp = dev->si_drv1;
|
||||
switch (cmd) {
|
||||
case SNPSTTY:
|
||||
#if 0
|
||||
tdev = findcdev(*((dev_t *)data));
|
||||
#else
|
||||
tdev = NULL;
|
||||
#endif
|
||||
s = *(int *)data;
|
||||
if (s < 0 || fget(td, s, &fp) != 0)
|
||||
return (EINVAL);
|
||||
if (fp->f_type != DTYPE_VNODE ||
|
||||
fp->f_vnode->v_type != VCHR) {
|
||||
fdrop(fp, td);
|
||||
return (EINVAL);
|
||||
}
|
||||
tdev = fp->f_vnode->v_rdev;
|
||||
fdrop(fp, td);
|
||||
if (tdev == NULL)
|
||||
return (snp_down(snp));
|
||||
|
||||
@ -585,6 +593,7 @@ snpioctl(dev, cmd, data, flags, td)
|
||||
*(int *)data = snp->snp_len;
|
||||
else
|
||||
if (snp->snp_flags & SNOOP_DOWN) {
|
||||
printf("IT IS DOWN\n");
|
||||
if (snp->snp_flags & SNOOP_OFLOW)
|
||||
*(int *)data = SNP_OFLOW;
|
||||
else
|
||||
|
@ -25,12 +25,10 @@
|
||||
|
||||
/*
|
||||
* These are snoop io controls
|
||||
* SNPSTTY accepts 'struct snptty' as input.
|
||||
* If ever type or unit set to -1,snoop device
|
||||
* detached from its current tty.
|
||||
* SNPSTTY accepts a file descriptor as input.
|
||||
*/
|
||||
|
||||
#define SNPSTTY _IOW('T', 90, dev_t)
|
||||
#define SNPSTTY _IOW('T', 90, int)
|
||||
#define SNPGTTY _IOR('T', 89, dev_t)
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user