Lines Matching defs:pinfo

156 	struct pshminfo *pinfo;
181 static int pshm_close(struct pshminfo *pinfo, int dropref);
186 int pshm_access(struct pshminfo *pinfo, int mode, kauth_cred_t cred, proc_t p);
372 struct pshminfo *pinfo;
389 pinfo = PSHMINFO_NULL;
483 error = pshm_cache_search(&pinfo, &nd, &pcache, 1);
496 pinfo = new_pinfo;
497 pinfo->pshm_flags = PSHM_DEFINED | PSHM_INCREATE;
498 pinfo->pshm_usecount = 1; /* existence reference */
499 pinfo->pshm_mode = cmode;
500 pinfo->pshm_uid = kauth_getuid();
501 pinfo->pshm_gid = kauth_getgid();
502 bcopy(pnbuf, &pinfo->pshm_name[0], pathlen);
503 pinfo->pshm_name[pathlen]=0;
509 mac_posixshm_label_associate(kauth_cred_get(), pinfo, nameptr);
517 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid,
518 pinfo->pshm_gid,
519 pinfo->pshm_mode);
526 if( pinfo->pshm_flags & PSHM_INDELETE) {
530 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid,
531 pinfo->pshm_gid, pinfo->pshm_mode);
533 if ((error = mac_posixshm_check_open(kauth_cred_get(), pinfo, fmode))) {
537 if ( (error = pshm_access(pinfo, fmode, kauth_cred_get(), p)) ) {
548 if( pinfo->pshm_flags & PSHM_INDELETE) {
553 if ((error = mac_posixshm_check_open(kauth_cred_get(), pinfo, fmode))) {
558 if ((error = pshm_access(pinfo, fmode, kauth_cred_get(), p))) {
572 pinfo->pshm_writecount++;
574 pinfo->pshm_readcount++;
578 if ( (error = pshm_cache_add(pinfo, &nd, pcp)) ) {
585 pinfo->pshm_usecount++;
587 pinfo->pshm_flags &= ~PSHM_INCREATE;
588 new_pnode->pinfo = pinfo;
631 pshm_close(pinfo, 1);
660 struct pshminfo * pinfo;
680 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL) {
684 if ((pinfo->pshm_flags & (PSHM_DEFINED|PSHM_ALLOCATING|PSHM_ALLOCATED))
690 error = mac_posixshm_check_truncate(kauth_cred_get(), pinfo, length);
697 pinfo->pshm_flags |= PSHM_ALLOCATING;
699 pshmobj_next_p = &pinfo->pshm_memobjects;
738 pinfo->pshm_flags = PSHM_ALLOCATED;
739 pinfo->pshm_length = total_size;
745 for (pshmobj = pinfo->pshm_memobjects;
752 pinfo->pshm_memobjects = NULL;
753 pinfo->pshm_flags &= ~PSHM_ALLOCATING;
773 struct pshminfo *pinfo;
779 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL){
785 error = mac_posixshm_check_stat(kauth_cred_get(), pinfo);
795 sb64->st_mode = pinfo->pshm_mode;
796 sb64->st_uid = pinfo->pshm_uid;
797 sb64->st_gid = pinfo->pshm_gid;
798 sb64->st_size = pinfo->pshm_length;
802 sb->st_mode = pinfo->pshm_mode;
803 sb->st_uid = pinfo->pshm_uid;
804 sb->st_gid = pinfo->pshm_gid;
805 sb->st_size = pinfo->pshm_length;
817 pshm_access(struct pshminfo *pinfo, int mode, kauth_cred_t cred, __unused proc_t p)
826 return(posix_cred_access(cred, pinfo->pshm_uid, pinfo->pshm_gid, pinfo->pshm_mode, mode_req));
844 struct pshminfo * pinfo;
866 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL) {
871 if ((pinfo->pshm_flags & PSHM_ALLOCATED) != PSHM_ALLOCATED) {
875 if ((off_t)user_size > pinfo->pshm_length) {
879 if ((off_t)(user_size + file_pos) > pinfo->pshm_length) {
883 if ((pshmobj = pinfo->pshm_memobjects) == NULL) {
889 error = mac_posixshm_check_mmap(kauth_cred_get(), pinfo, prot, flags);
935 for (map_pos = 0, pshmobj = pinfo->pshm_memobjects;
973 pinfo->pshm_flags |= (PSHM_MAPPED | PSHM_INUSE);
1006 struct pshminfo *pinfo;
1015 pinfo = PSHMINFO_NULL;
1058 error = pshm_cache_search(&pinfo, &nd, &pcache, 0);
1073 if ((pinfo->pshm_flags & (PSHM_DEFINED | PSHM_ALLOCATED))==0) {
1079 if (pinfo->pshm_flags & PSHM_ALLOCATING) {
1086 if (pinfo->pshm_flags & PSHM_INDELETE) {
1092 error = mac_posixshm_check_unlink(kauth_cred_get(), pinfo, nameptr);
1099 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid, pinfo->pshm_gid,
1100 pinfo->pshm_mode);
1106 if ( (error = pshm_access(pinfo, FWRITE, kauth_cred_get(), p)) ) {
1111 pinfo->pshm_flags |= PSHM_INDELETE;
1113 pinfo->pshm_flags |= PSHM_REMOVED;
1115 if (!--pinfo->pshm_usecount) {
1117 mac_posixshm_label_destroy(pinfo);
1127 for (pshmobj = pinfo->pshm_memobjects;
1134 FREE(pinfo,M_SHM);
1147 pshm_close(struct pshminfo *pinfo, int dropref)
1156 if ( !dropref && ((pinfo->pshm_flags & PSHM_ALLOCATED) != PSHM_ALLOCATED)) {
1160 if(!pinfo->pshm_usecount) {
1164 pinfo->pshm_usecount--; /* release this fd's reference */
1166 if ((pinfo->pshm_flags & PSHM_REMOVED) && !pinfo->pshm_usecount) {
1168 mac_posixshm_label_destroy(pinfo);
1175 for (pshmobj = pinfo->pshm_memobjects;
1183 FREE(pinfo,M_SHM);
1198 if (pnode->pinfo != PSHMINFO_NULL) {
1199 error = pshm_close(pnode->pinfo, 0);
1247 struct pshminfo *pinfo;
1251 if ((pinfo = pshm->pinfo) == PSHMINFO_NULL){
1259 sb->vst_mode = pinfo->pshm_mode;
1260 sb->vst_uid = pinfo->pshm_uid;
1261 sb->vst_gid = pinfo->pshm_gid;
1262 sb->vst_size = pinfo->pshm_length;
1265 bcopy(&pinfo->pshm_name[0], &info->pshm_name[0], PSHMNAMLEN+1);
1281 pshm = pnode->pinfo;