wake up user space thread from kernel space ISR

Hello, I'm searching for a proper way to let the kernel space ISR(implemented in a kernel module) wake up a user space thread on a hardware interrupt.

Except for sending a real-time signal, is it possible to use a semaphore?

I've searched it on google, but it seems impossible to share a semaphore between user space and kernel space in common linux. Only some real-timer linux versions like RTAI provides a set of private API to inter-operate a semaphore between kernel and user space.

And there is no header file of Posix or SystemV semaphore APIs in linux kernel source, either.

So I wonder whether it is possible to do it via a semaphore ? Or is it a better way to use netlink?

Thank you in advance !