1. イベント読み取り
イベントハブ.cpp
ソースコードの場所:/frameworks/native/services/inputflinger/reader/EventHub.cpp
static const char* DEVICE_PATH = "/dev/input";
EventHub::EventHub(void) : mBuiltInKeyboardId(NO_BUILT_IN_KEYBOARD),
mNextDeviceId(1),
mControllerNumbers(),
mNeedToSendFinishedDeviceScan(false),
mNeedToReopenDevices(false),
mNeedToScanDevices(true),
mPendingEventCount(0),
mPendingEventIndex(0),
mPendingINotify(false) {
ensureProcessCanBlockSuspend();
// 使用epoll_create()函数创建一个epoll对象,用来监听设备节点是否有数据可读(有无事件)
mEpollFd = epoll_create1(EPOLL_CLOEXEC);
//创建一个 inotify 对象 。这个对象将被用来 监听设备节点的增删事件
mINotifyFd = inotify_init();
// 将存储设备节点的路径 /dev/input 作为监听对象添加到inotify对象中
// 当此文件夹下的设备节点发生创建与删除事件时,都可以通过mINotifyFd读取事件的详细信息
mInputWd = inotify_add_watch(mINotifyFd, DEVICE_PATH, IN_DELETE | IN_CREATE)