creating asynchronous events in user space on kernel thread

I have read online that we can’t handle interrupts from user space. Instead -

  1. we can write one kernel thread and have that thread wait on an event.
  2. Once the interrupt occurs from driver we will send one asynchronous event to the user space where we will write one signal handler with FASYNC.

I have written a kernel module that registers interrupts on rising edge of GPIO pins. I now want to convey this to user space using the above method, how do I do this?