NetBSD-5.0.2/sys/arch/powerpc/powerpc/procfs_machdep.c
/* $NetBSD: procfs_machdep.c,v 1.7 2007/10/17 19:56:48 garbled Exp $ */
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.7 2007/10/17 19:56:48 garbled Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/vnode.h>
#include <sys/proc.h>
#include <miscfs/procfs/procfs.h>
#include <machine/reg.h>
/*
* Linux-style /proc/cpuinfo.
* Only used when procfs is mounted with -o linux.
*/
int
procfs_getcpuinfstr(char *buf, int *len)
{
*len = 0;
return 0;
}
#ifdef __HAVE_PROCFS_MACHDEP
void
procfs_machdep_allocvp(struct vnode *vp)
{
struct pfsnode *pfs = vp->v_data;
switch (pfs->pfs_type) {
case Pmachdep_vecregs: /* /proc/N/vecregs = -rw------- */
pfs->pfs_mode = S_IRUSR|S_IWUSR;
vp->v_type = VREG;
break;
default:
panic("procfs_machdep_allocvp");
}
}
int
procfs_machdep_rw(struct lwp *curl, struct lwp *l, struct pfsnode *pfs,
struct uio *uio)
{
switch (pfs->pfs_type) {
case Pmachdep_vecregs:
return (procfs_machdep_dovecregs(curl, l, pfs, uio));
default:
panic("procfs_machdep_rw");
}
/* NOTREACHED */
return (EINVAL);
}
int
procfs_machdep_getattr(struct vnode *vp, struct vattr *vap, struct proc *procp)
{
struct pfsnode *pfs = VTOPFS(vp);
switch (pfs->pfs_type) {
case Pmachdep_vecregs:
vap->va_bytes = vap->va_size = sizeof(struct vreg);
break;
default:
panic("procfs_machdep_getattr");
}
return (0);
}
int
procfs_machdep_dovecregs(struct lwp *curl, struct lwp *l,
struct pfsnode *pfs, struct uio *uio)
{
return (process_machdep_dovecregs(curl, l, uio));
}
int
procfs_machdep_validvecregs(struct lwp *l, struct mount *mp)
{
return (process_machdep_validvecregs(l->l_proc));
}
#endif