Skip to contentSkip to conversation

IPC usage inside of kernel module

DISCUSSION Yaroslav Rastrigin 1 participant 1 message Apr 17, 2001

lore
Share & tools
lore
#0 lore raw

Hello everybody !

I needed to implement an IPC connectiovity between module and userspace daemon, and came to this horrible code (after looking to sys_msgsnd() ):
...
copy_to_user(msg_buf, &hlb1, sizeof(struct linfs_buffer));
hi1 = sys_ipc(MSGSND, msgq_id, message_size, 0, \
(struct msgbuf *)msg_buf, 0);
...
msg_buf is in userspace, hlb1 - module's prepared message (struct msgbuf ). Well, it works :) . Messages are delivered,
but the whole construction looks rather ugly. The worst part of it is sys_msgsnd() does then copy_from_user to kmalloc()'ed buffer, just to enqueue message. Can somebody tell me, is there any other way to implement IPC functionality , without rewriting sys_msgsnd() and accompanying functions (load_msg etc.) inside of my module ?

With all the best, yarick at relex dot ru