version 1.36, 2007/07/01 15:30:16 |
version 1.37, 2007/07/01 17:22:14 |
Line 442 puffs_pnode2vnode(struct puffs_mount *pm |
|
Line 442 puffs_pnode2vnode(struct puffs_mount *pm |
|
|
|
void |
void |
puffs_makecn(struct puffs_kcn *pkcn, struct puffs_kcred *pkcr, |
puffs_makecn(struct puffs_kcn *pkcn, struct puffs_kcred *pkcr, |
const struct componentname *cn) |
struct puffs_kcid *pkcid, const struct componentname *cn) |
{ |
{ |
|
|
pkcn->pkcn_nameiop = cn->cn_nameiop; |
pkcn->pkcn_nameiop = cn->cn_nameiop; |
pkcn->pkcn_flags = cn->cn_flags; |
pkcn->pkcn_flags = cn->cn_flags; |
pkcn->pkcn_pid = cn->cn_lwp->l_proc->p_pid; |
puffs_cidcvt(pkcid, cn->cn_lwp); |
|
|
(void)memcpy(&pkcn->pkcn_name, cn->cn_nameptr, cn->cn_namelen); |
(void)memcpy(pkcn->pkcn_name, cn->cn_nameptr, cn->cn_namelen); |
pkcn->pkcn_name[cn->cn_namelen] = '\0'; |
pkcn->pkcn_name[cn->cn_namelen] = '\0'; |
pkcn->pkcn_namelen = cn->cn_namelen; |
pkcn->pkcn_namelen = cn->cn_namelen; |
|
|
Line 477 puffs_credcvt(struct puffs_kcred *pkcr, |
|
Line 477 puffs_credcvt(struct puffs_kcred *pkcr, |
|
} |
} |
} |
} |
|
|
/* |
void |
* Return pid. In case the operation is coming from within the |
puffs_cidcvt(struct puffs_kcid *pkcid, const struct lwp *l) |
* kernel without any process context, borrow the swapper's pid. |
|
*/ |
|
pid_t |
|
puffs_lwp2pid(struct lwp *l) |
|
{ |
{ |
|
|
return l ? l->l_proc->p_pid : 0; |
if (l) { |
|
pkcid->pkcid_type = PUFFCID_TYPE_REAL; |
|
pkcid->pkcid_pid = l->l_proc->p_pid; |
|
pkcid->pkcid_lwpid = l->l_lid; |
|
} else { |
|
pkcid->pkcid_type = PUFFCID_TYPE_FAKE; |
|
pkcid->pkcid_pid = 0; |
|
pkcid->pkcid_lwpid = 0; |
|
} |
} |
} |
|
|
|
|
static void |
static void |
puffs_gop_size(struct vnode *vp, off_t size, off_t *eobp, |
puffs_gop_size(struct vnode *vp, off_t size, off_t *eobp, |
int flags) |
int flags) |