Linux Kernel input 上报事件

    xiaoxiao2021-03-25  58

    /**  * input_event() - report new input event  * @dev: device that generated the event  * @type: type of the event  * @code: event code  * @value: value of the event  *  * This function should be used by drivers implementing various input  * devices to report input events. See also input_inject_event().  *  * NOTE: input_event() may be safely used right after input device was  * allocated with input_allocate_device(), even before it is registered  * with input_register_device(), but the event will not reach any of the  * input handlers. Such early invocation of input_event() may be used  * to 'seed' initial state of a switch or initial position of absolute  * axis, etc.  */ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) { unsigned long flags; if (is_event_supported(type, dev->evbit, EV_MAX)) { spin_lock_irqsave(&dev->event_lock, flags); input_handle_event(dev, type, code, value); spin_unlock_irqrestore(&dev->event_lock, flags); } } EXPORT_SYMBOL(input_event); /**  * input_inject_event() - send input event from input handler  * @handle: input handle to send event through  * @type: type of the event  * @code: event code  * @value: value of the event  *  * Similar to input_event() but will ignore event if device is  * "grabbed" and handle injecting event is not the one that owns  * the device.  */ void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value) { struct input_dev *dev = handle->dev; struct input_handle *grab; unsigned long flags; if (is_event_supported(type, dev->evbit, EV_MAX)) { spin_lock_irqsave(&dev->event_lock, flags); rcu_read_lock(); grab = rcu_dereference(dev->grab); if (!grab || grab == handle) input_handle_event(dev, type, code, value); rcu_read_unlock(); spin_unlock_irqrestore(&dev->event_lock, flags); } } EXPORT_SYMBOL(input_inject_event);
    转载请注明原文地址: https://ju.6miu.com/read-37371.html

    最新回复(0)