Привет,
пожалуй самый удобный способ обмена, который я встречал в ядре - netlink. И программа, и модуль ядра просто создают по сокету и могут начинать общаться, в сообщение можно упаковывать фактически все что угодно, начиная от обычных стандартных типов и заканчивая массивами и структурами. Есть апи для удобной обработки, контроль ошибок и тд
Если модуль создает устройство в /dev/ тогда можно и в сторону ioctl посмотреть)
http://people.ee.ethz.ch/~arkeller/linux/kernel_user_space_howto.html
http://www.linuxfoundation.org/collaborate/workgroups/networking/generic_netlink_howto