Messages in this thread | | | From | Stephen Hemminger <> | Subject | Re: get device from file struct | Date | Wed, 13 Dec 2006 15:53:46 -0800 |
| |
On Wed, 13 Dec 2006 20:19:51 +0100 (MET) Jan Engelhardt <jengelh@linux01.gwdg.de> wrote:
> > >in fs/read_write.c, the vfs_read function does: > > > >file->f_op->read(file, buf, count, pos); > > > >after this call is it possible to determine where the > >data is coming from? > >e.g., the first hard disk, a pipe or from a socket. > > For hard disks: > file->f_dentry->d_inode->d_sb->s_bdev gives you the block device > in case it is a non-virtual filesystem. > > For pipes/sockets I do not know of a may to go from a filp to a > struct sock or struct socket. > > >If it is a socket we are interested > >from which device (eth0, eth1, lo, ...) the data was received. > > I do not think that is possible either.
The connection between file and network device is through many layers and there is no direct binding. It could be 0 to N interfaces and even be data dependent.
-- Stephen Hemminger <shemminger@osdl.org> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |