cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

usb_mon.h (2035B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * The USB Monitor, inspired by Dave Harding's USBMon.
      4 *
      5 * Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
      6 */
      7
      8#ifndef __USB_MON_H
      9#define __USB_MON_H
     10
     11#include <linux/list.h>
     12#include <linux/slab.h>
     13#include <linux/kref.h>
     14/* #include <linux/usb.h> */	/* We use struct pointers only in this header */
     15
     16#define TAG "usbmon"
     17
     18struct mon_bus {
     19	struct list_head bus_link;
     20	spinlock_t lock;
     21	struct usb_bus *u_bus;
     22
     23	int text_inited;
     24	int bin_inited;
     25	struct dentry *dent_s;		/* Debugging file */
     26	struct dentry *dent_t;		/* Text interface file */
     27	struct dentry *dent_u;		/* Second text interface file */
     28	struct device *classdev;	/* Device in usbmon class */
     29
     30	/* Ref */
     31	int nreaders;			/* Under mon_lock AND mbus->lock */
     32	struct list_head r_list;	/* Chain of readers (usually one) */
     33	struct kref ref;		/* Under mon_lock */
     34
     35	/* Stats */
     36	unsigned int cnt_events;
     37	unsigned int cnt_text_lost;
     38};
     39
     40/*
     41 * An instance of a process which opened a file (but can fork later)
     42 */
     43struct mon_reader {
     44	struct list_head r_link;
     45	struct mon_bus *m_bus;
     46	void *r_data;		/* Use container_of instead? */
     47
     48	void (*rnf_submit)(void *data, struct urb *urb);
     49	void (*rnf_error)(void *data, struct urb *urb, int error);
     50	void (*rnf_complete)(void *data, struct urb *urb, int status);
     51};
     52
     53void mon_reader_add(struct mon_bus *mbus, struct mon_reader *r);
     54void mon_reader_del(struct mon_bus *mbus, struct mon_reader *r);
     55
     56struct mon_bus *mon_bus_lookup(unsigned int num);
     57
     58int /*bool*/ mon_text_add(struct mon_bus *mbus, const struct usb_bus *ubus);
     59void mon_text_del(struct mon_bus *mbus);
     60int /*bool*/ mon_bin_add(struct mon_bus *mbus, const struct usb_bus *ubus);
     61void mon_bin_del(struct mon_bus *mbus);
     62
     63int __init mon_text_init(void);
     64void mon_text_exit(void);
     65int __init mon_bin_init(void);
     66void mon_bin_exit(void);
     67
     68/*
     69 */
     70extern struct mutex mon_lock;
     71
     72extern const struct file_operations mon_fops_stat;
     73
     74extern struct mon_bus mon_bus0;		/* Only for redundant checks */
     75
     76#endif /* __USB_MON_H */