Uladzislau Rezki wrote:
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?
well, not really, at least not the name by which it was looked up.
you MIGHT (sometimes) be able to use the directory name cache to work
it out.. At one stage it was possible to do this for some percentage
of the files but I dont remember if it was possible in 4.x.
the idea is that you can find the name and do '..' lookups in the name
cache.. i.e. fid if there is a name with your inode number,
then get the directory inode number from that and then look up ..
with that inode number etc.etc. but:
I dont remember if we store ".." in the name cache these days
(I remember some movement on this over the years)
and
Not all of the path to root might be there..
let me know if you work it out :-)
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
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"