root/drivers/usb/core/notify.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. usb_register_notify
  2. usb_unregister_notify
  3. usb_notify_add_device
  4. usb_notify_remove_device
  5. usb_notify_add_bus
  6. usb_notify_remove_bus

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * All the USB notify logic
   4  *
   5  * (C) Copyright 2005 Greg Kroah-Hartman <gregkh@suse.de>
   6  *
   7  * notifier functions originally based on those in kernel/sys.c
   8  * but fixed up to not be so broken.
   9  *
  10  * Released under the GPLv2 only.
  11  */
  12 
  13 
  14 #include <linux/kernel.h>
  15 #include <linux/export.h>
  16 #include <linux/notifier.h>
  17 #include <linux/usb.h>
  18 #include <linux/mutex.h>
  19 #include "usb.h"
  20 
  21 static BLOCKING_NOTIFIER_HEAD(usb_notifier_list);
  22 
  23 /**
  24  * usb_register_notify - register a notifier callback whenever a usb change happens
  25  * @nb: pointer to the notifier block for the callback events.
  26  *
  27  * These changes are either USB devices or busses being added or removed.
  28  */
  29 void usb_register_notify(struct notifier_block *nb)
  30 {
  31         blocking_notifier_chain_register(&usb_notifier_list, nb);
  32 }
  33 EXPORT_SYMBOL_GPL(usb_register_notify);
  34 
  35 /**
  36  * usb_unregister_notify - unregister a notifier callback
  37  * @nb: pointer to the notifier block for the callback events.
  38  *
  39  * usb_register_notify() must have been previously called for this function
  40  * to work properly.
  41  */
  42 void usb_unregister_notify(struct notifier_block *nb)
  43 {
  44         blocking_notifier_chain_unregister(&usb_notifier_list, nb);
  45 }
  46 EXPORT_SYMBOL_GPL(usb_unregister_notify);
  47 
  48 
  49 void usb_notify_add_device(struct usb_device *udev)
  50 {
  51         blocking_notifier_call_chain(&usb_notifier_list, USB_DEVICE_ADD, udev);
  52 }
  53 
  54 void usb_notify_remove_device(struct usb_device *udev)
  55 {
  56         blocking_notifier_call_chain(&usb_notifier_list,
  57                         USB_DEVICE_REMOVE, udev);
  58 }
  59 
  60 void usb_notify_add_bus(struct usb_bus *ubus)
  61 {
  62         blocking_notifier_call_chain(&usb_notifier_list, USB_BUS_ADD, ubus);
  63 }
  64 
  65 void usb_notify_remove_bus(struct usb_bus *ubus)
  66 {
  67         blocking_notifier_call_chain(&usb_notifier_list, USB_BUS_REMOVE, ubus);
  68 }

/* [<][>][^][v][top][bottom][index][help] */