mo...@rodents-montreal.org (Mouse) writes: >> My question is: >> Can I use such retrieved file_fd or struct socket* so in separate >> kernel thread ?
>I see no reason why not - but that is not at all the same as "yes". I >do not work with multiple threads often enough to feel confident of my >answer here. The kernel iSCSI initiator takes a file descriptor from userland and then uses the socket in two separate threads, one sending, one receiving. While the two threads use a rwlock to protect the socket, they acquire it in shared ("READER") mode for I/O and in exclusive ("WRITER") mode for closing and replacing during error recovery. The socket operations themselves are protected by the socket lock. In case of PF_INET that's a global lock (even with NET_MPSAFE). In case of PF_LOCAL, each socket has a private lock.