Even though we could use the proc filesystem to interface with a user mode app, there is an important point to note here! You must realize that procfs is, like many similar facilities within the kernel, an Application Binary Interface (ABI). The kernel community makes no promises that it remains stable and exactly the way it is today, just as is the case with the kernel APIs and their internal data structures as well. In fact, ever since the 2.6 kernel, the kernel folks have made this very clear – device driver authors (and the like) are not supposed to use procfs for their own purposes or their interfaces, debug or otherwise. Earlier, with 2.6 Linux, it was quite common to use proc for said purposes (abused, as per the kernel community, as proc is meant for kernel internal use only!).
So, if procfs is considered off-bounds, or deprecated, to us as driver authors, then what facility do we use to communicate with user space processes...