how can i get a file name knowing its descriptor?

Uladzislau Rezki v.rezkii at sam-solutions.net
Thu Jul 3 11:39:41 UTC 2008


Hi all,

I've been writing a small kernel module, that provides information about
modification of the filesystem to user_land/userspace through the
character device. I'm using FreeBSD 4.10

So, my question is: Is there any way to get file name knowing its descriptor?

static int
xxx_write (struct proc *p, struct write_args *uap)
{
       struct vnode *vn;
       struct file *file;
       int sys_error;

       /* do system call */
       sys_error = write(p, uap);
       if (sys_error != 0)
               goto leave_call;

       /* get the file */
       file = curproc->p_fd->fd_ofiles[uap->fd];
       /* get the vnode */
       vn = (struct vnode *) file->f_data;

       /* do we have a regular */
       if (vn->v_type == VREG) {
       ...
       ...
       ...
}

As you can see we just know uap->fd.

Thanks.

--
Uladzislau Rezki


More information about the freebsd-hackers mailing list