Regarding FreeBSD

ravi ravi.nanjundappa at ap.sony.com
Tue Jul 20 21:36:40 PDT 2004


hi,
I'm able to create a proc file under /proc directory using
pfs_create_file() with the read and write permission in a kernel module
. But I don't know how to read and write to /proc/file .
Can u please tell me how to do it ?



Regards,
N Ravi



On Wed, 2004-07-21 at 08:19, Robert Watson wrote:
> On Mon, 19 Jul 2004, ravi wrote:
> 
> > Hi,
> > 1) Can u explain me the usage of different arguments to
> pf_create_file
> > () function ?
> 
> Again, details a bit hazy to me here, but roughly speaking: 
> 
>   'parent' is the parent directory where the object will appear
> 
>   'name' is the name it will have
> 
>   'fill' is the function pointer provided by the pseudofs-derived file
>   system to implement the node.  I.e., procfs_doproccmdline.
> 
>   'attr' appears to be a function pointer allowing the pseudo file
> system
>   to modify the set of attributes returned for a node; this is used by
>   procfs to modify the set of permissions returns for certain objects
>   (looks like the debugging entries in per-process directories).
> 
>   'vis' is a visibility test function: should the node be visible to a
>   particular caller (i.e., "you can't see that process for security
>   reasons").
> 
>   'flags' is a set of node flags, such as PFS_RD, PFS_WR, etc, as found
> in
>   pseudofs.h.
> 
> I'd suggest working from examples in src/sys/fs/procfs/procfs.c;
> pseudofs
> is largely an abstraction layer to let the bulk of the file system logic
> be shared between procfs and linprocfs, since they're similar (but
> different).
> 
> > 2) what is the use of PFS_PROCDEP in the following statement ?
> > 
> >  dir = pfs_create_dir(root, "pid",
> >             procfs_attr, NULL, PFS_PROCDEP);
> 
> As I mentioned in a previous e-mail, it's creating a template
> per-process
> directory that will be expanded into many perceived directories on
> demand,
> one per process.  If you look at procfs_init(), you'll see that it
> creates
> the template, then places a bunch of nodes in the template that will be
> valid for each process.
> 
> > 3) there is no entry under /proc with the name "pid" .  Why is it so ?
> 
> 
> See previous e-mail -- the template has its name replaced with each
> possible pid, and 'pid' is a place-holder.
> 
> > 4) And even though for some of the proc entries the permission given
> is
> > PFS_RDWR , the file is getting created with the read permission only .
> 
> > 
> > What is the reason for this ? 
> 
> pfs_getattr() appears to always return read-only entries, except where
> pn_attr() is implemented on the node.  The actual protections appear to
> be
> calculated in several places -- for example, pfs_visible() uses various
> visibility tests, including per-process tests, etc.  The permission bits
> are probably not a perfect guide to access rights.
> 
> Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
> robert at fledge.watson.org      Principal Research Scientist, McAfee
> Research
> 



More information about the freebsd-fs mailing list